Problemas al conectar con SQL Server

15/05/2007 - 01:27 por marcosjroig | Informe spam
Hola Gente:

Les escribo porque tengo 10 mil problemas entre la conexión a la base
de datos y mi sistema en PocketPC, así que si alguien me tira una
ayuda por mas pequeña que sea será súper interesante.

Lo que quiero hacer es:
- conectar mi sistema a una tabla que está en un SQL Server de un
servidor en una red LAN. La PocketPC es el emulador del .Net (estoy
con VS2005) que usa Windows Mobile 5.0.
- como estoy en una primera etapa solo quiero ver los datos de la
tabla después de conectar, quizás verlos en un gridview o algo así con
un control de navegación de registros, nada complicado. Y cosa que se
puede hacer arrastrando los campos desde el DataSource View hacia el
formulario de la PocketPC.

Lo que hice hasta ahora y medio error es:
-
1 - Configuro el campo DataSource Agregando una nueva conexión. Al
agregar una nueva conexión con ".Net Framework Data Provider for OLE
DB" Server OLE DB" me da un error que dice "data provider not
supported" . Después probé con "".Net Framework Data Provider for SQL
Server"" y ahí si funciono sin problemas y pude crear mi conexión.
2 - Luego abro la ventana que me muestra los Datasource (shift +alt +
D) y selección la tabla que deseo y arrastro toda la tabla hacia el
formulario de mi pocket y automáticamente me crea un GridView
enlazado.
3 - Bueno, como eso es todo lo que quiero ver por el momento, entonces
apretó F5 para ejecutar y hacer el deploy y aquí es donde me da
error. El deploy dice que se hace con éxito, pero larga un excepción
SQL que dice:
"Especified SQL Server not found: admin". Donde Admin es el nombre de
mi servidor donde tengo el SQL Server, y me da error en este parte del
codigo autogenerado:

Public Overloads Overridable Function Fill(ByVal dataTable As
caja_proveeduria14NoviembreDataSet.EMPRESADataTable) As Integer
Me.Adapter.SelectCommand = Me.CommandCollection(0)
If (Me.ClearBeforeFill = true) Then
dataTable.Clear
End If
Dim returnValue As Integer = Me.Adapter.Fill(dataTable)
Return returnValue
End Function

El error justo da en esta instrucción:
Dim returnValue As Integer = Me.Adapter.Fill(dataTable)

Que puede ser? Al parecer hice todo bien y el deploy no da error, pero
que está pasando? Sera que es porque tengo que usar el active Sync
para sincronizar a la maquina y tener conexión de red?

4 - como el proyecto se desplego bien, después use el Active Sync para
sincronizar mi PC con el emulador y no hay problemas, pero el sistema
no me funciona.

Por favor alguna ayuda

Gracias
 

Leer las respuestas

#1 marcosjroig
17/05/2007 - 22:21 | Informe spam
Bueno ya resolvi el problema, y aqui va mi auto-respuesta.

Algunas cuestiones a tener en cuenta antes de comenzar a desarrollar
con móviles, esto no pretende saltear ninguna etapa, sino ser una
breve ayuda para usuarios principiantes como yo y que desean hacer
una
pequeña aplicación para móviles y que tenga conexión con bases de
datos.


1 - Definir si se va usar un dispositivo móvil real o el emulador de
móviles del .net


2 - Definir sobre qué sistema operativo trabajar (mi sugerencia es
Windows Mobile que además viene con el emulador del móviles del .Net
y
es la versión 5.0). La versión 6 ya salió pero no la probé aun.


3 - ActiveSync. El ActiveSync para quien no está mucho en el tema de
móviles es un pequeño programita que ya viene con Windows Mobile en
las Pockets y por supuesto también en el emulador de Pocket PC
del .NET y sirve para sincronizar el dispositivo móvil (ya sea real o
el emulador) con la PC.


Pero también necesita un pequeño cliente de ActiveSync en la PC en
donde se va conectar el dispositivo vía USB por ejemplo. La idea es
tener ActiveSync en el dispositivo móvil y en la PC entonces al
conectarlo por USB (si fuera un dispositivo real) o igualmente siendo
emulado hacemos click en la opción de "conectar" y se sincroniza el
dispositivo con la PC. Una vez que sucede esto podemos compartir
archivos entre el dispositivo y la PC como también darle internet o
acceso a la red LAN al dispositivo y por ende más tarde podremos
establecer conexiones con bases de datos en nuestra red LAN.


La última versión es la 4.5 y se puede descargar de acá:
http://www.microsoft.com/downloads/...c34-6f7...


4 - Una vez que tenemos el ActiveSync tanto en la PC como en el
dispositivo móvil (ya viene con Windows Mobile) lo que tenemos que
probar es intentar sincronizar con la PC y posteriormente verificar
que podemos navegar por Internet para asegurarnos de que no hay
ningún
problema de sincronismo.


Pasos para Sincronizar la PC con el Emulador del .NET:
­
a) Bajar e instalar el ActiveSync en la PC


b) En la solapa ActiveSync del escritorio de la PC, en "Connection
Settings", seleccionar todos los check box, que sea en modo DMA y en
"this computer is connected to" THE INTERNET sino no funciona.


c) En el emulador no hay que tocar nada


d) En la IDE del Visual Studio en Tools/ Options / Device Tools /
Devices/ Seleccionar "Pocket PC 2003 SE VGA Emulator" y en DEFAULT
DEVICE seleccionar también "Pocket PC 2003 SE VGA Emulator".
No hay necesidad de tocar los puertos COM, ni de agregarle placas de
red o wireless al emulador para que funcione, tampoco hay necesidad
de
cambiar el tipo de comunicación de DMA a TCP/IP. Pero si alguien
decide hacerlo funciona de la misma forma.


e) En La IDE del VS2005 en TOOLS/ Device Emulator Manager / Click
derecho sobre Pocket PC 2003 SE VGA Emulator" y clickar en Connect,
después de que se inicia el sistema Operativo del emulador, sobre el
mismo administrador de disposivo hacer click derecho sobre la
flechita
verde que indica el dispositivo emulado y clickar en CRADLE. En ese
momento se debería sincronizar con la PC y posterior a eso ya
podríamos probar si nuestro emulador navega sin problemas.


Comentario: Por increíble que parezca anda muy bien el emulador como
si fuera un dispositivo real y la navegación en internet es como si
tuviéramos una pocket real, es muy buena alternativa para quien no
dispone de una pocket para probar sus aplicaciones. Existen otros
emuladores de Nokia y otras marcas que usan Windows Mobile u otros
sistemas operativos. Pero el emulador del .Net a mi me ha dejado muy
conforme.
­-


5 - Retomando el hilo de lo que quería hacer: "una pequeña aplicación
que use el emulador del .net y se conecte a un servidor SQL Server de
la red y que pueda ver los datos de alguna tabla en un grid". Algo
simple para el inicio.
Abrimos el visor de Conexiones con (Shift + Alt + D) y clickamos en
ADD NEW DATASOURCE.


Seleccionamos "Database" de entre las 3 opciones que aparecen (este
ejemplo se conecta a un Servidor SQL Server 2005 que está en una
LAN).
Next y click en New Connection. En Data Source clickamos en "Change"
y
en Data Provider seleccionamos ".Net Framework Data Provider for Sql
Server " y en Data Source seleccionamos "Microsoft SQL Server", click
en OK.


Server Name: el nombre de la PC o Servidor en la red LAN que tiene
corriendo el SQL Server.


Use SQL Server Autentication: colocamos el usuario y el password.
Generalmente "sa" y el psw elegido.


Connect to DataBase: seleccionamos que base de datos nos interesa


Test Connection: acaprobamos que la conexión funciona sin problemas,
sino es porque ingresamos mal algún dato.


Clickamos en Ok, para ir a la próxima pantalla.


"Yes, include sensitive data in this Connection string " y clickamos
NEXT.


Y ahora seleccionamos que tablas y que campos de la tabla queremos
incorporar a nuestro DataSet como así también procedimientos
almacenados y funciones.


6 - Después de hacer la conexión, ya nos aparecen las tablas de la
base de datos en el visor del DataSource y arrastramos la cabecera de
la tabla hacia el Winform de la pocket y automáticamente crea un grid
enlazado, es decir que acá no debería haber ningún error.


7 - Cuando esto está listo, ejecutamos con F5 para que se ejecute el
proyecto y se haga el deploy (se instala la nueva versión del sistema
en el emulador).


Tenemos que controlar que el deploy se hace con éxito y que no da
error. Tiene que salir un mensaje en la IDE del VS2005 que diga
"deploy succeeded", se lo ve abajo a la izquierda de la IDE. Si dice
"Deploy Fail" entonces quiere decir que en nuestro dispositivo móvil
o
el emulador no se instalo la última actualización que hicimos del
sistema.


8 - Igualmente , al no da error, va dar una pequeña excepción sobre
el código autogenerado de nuestro sistema diciendo que no encuentra
la
base de datos de la red, y es porque aun no esta sincronizado.


Entonces con el emulador corriendo y después de hacer el deploy
abrimos el Administrador de Dispositivos y emuladores (Device
Emulador
Manager) y sobre la conexión del emulador que estamos usando, hacemos
click derecho y seleccionamos CRADLE y esperamos que se sincronice
nuestro emulador con la PC.


Cerramos el sistema que dio error, si se quiere se puede cerrar la
IDE
del .net y el Device Emulator Manager continua funcionando (esto lo
hacemos para cerrar ese proceso que dio excepción al no encontrar la
base de datos).


En el emulador de Pocket vamos en Inicio / File Explorer y buscamos
nuestro sistemita, le hacemos un click y "¡Wuala! Deberíamos ver
nuestro grid trayendo los datos de la base de datos remota sin
problemas con todos los datos, como si fuera una POCKET REAL.


Como decía antes, esto no es un manual ni nada por el estilo, es una
simple ayuda y si tuvieran cosas para adicionar háganme saber
entonces
aprendemos todos.


Saludos,


Marcos

Preguntas similares