Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-11-2013
vicens22 vicens22 is offline
Miembro
NULL
 
Registrado: dic 2010
Posts: 61
Poder: 14
vicens22 Va por buen camino
Datasnap y cliente android - Problema al conectar

Buenas,

Desde hace unos días estoy haciendo pruebas con Delphi XE5 y android. Concretamente siguiendo un video que encontré, creé un ejemplo de como desarrollar de un Servidor DataSnap y su conexión remota con un cliente, en mi caso con Android.

Seguí los pasos del video y todo funcionó correctamente. La única diferencia es que en mi caso la conexión con el servidor es con MS SQL en lugar de con Firebird.

Las pruebas las realicé como en el video, teniendo el servidor datasnap ejecutandose en una red local y conectándo con él desde el móvil fisico (Android) sin problema.
El problema me ocurre cuando en lugar de ejecutar el servidor datasnap en mi equipo lo copié en un servidor web, donde realmente se ejecuta la base MSSQL para comprobar el rendimiento de la aplicación fuera de la wifi.

Realmente, en cuando cambié la IP en el componente SQLConection de la aplicación cliente, cambiándola de la IP local a la IP del servidor web, aunque al activar el cliente dataset no me da error, cuando intento ejecutar la aplicación indicando como destino una aplicación Win32, me aparece al intentar activar la conexión del cliente dataset el siguiente error :

"Remote error: Unable to load dbxmss.dll (ErrorCode 126). It may be missing from the system path."

Si en cambio elijo como destino Android y la ejecuto en el móvil, el error es el siguiente :

"Exception in safecall method."

Gracias por cualquier ayuda.
Saludos,

Vicens
Responder Con Cita
  #2  
Antiguo 29-11-2013
vicens22 vicens22 is offline
Miembro
NULL
 
Registrado: dic 2010
Posts: 61
Poder: 14
vicens22 Va por buen camino
Buenos días,

Siguiendo un poco el mensaje de error, he copiado el fichero que indica el mensaje de error (dbxmss.dll) en la carpeta \windows\system32 del equipo en el que se ejecuta el servidor Datasnap.

Ahora el mensaje cuando ejecuto la aplicación cliente en windows ha cambiado por el siguiente :

Remote error: DBX Error: Driver could not be properly initialized. Client library may be missing, not installed properly, of the wrong version, or the driver may be missing from the system path.

Si ejecuto la aplicación cliente en el equipo servidor el mensaje sigue siendo el mismo "Exception in safecall method.".

Entiendo que hace falta un driver para DBX para la conexión MSSQL, pero no tengo claro como lo debo instalar.
Revisando mensajes de otros foros he instalado sqlncli.msi que viene en el CD de SQL Server 2005, pero el problema persiste.

Gracias por cualquier ayuda.
Saludos,

Vicens
Responder Con Cita
  #3  
Antiguo 30-11-2013
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 18
donald shimoda Va por buen camino
Cita:
Empezado por vicens22 Ver Mensaje
Buenos días,

Siguiendo un poco el mensaje de error, he copiado el fichero que indica el mensaje de error (dbxmss.dll) en la carpeta \windows\system32 del equipo en el que se ejecuta el servidor Datasnap.

Ahora el mensaje cuando ejecuto la aplicación cliente en windows ha cambiado por el siguiente :

Remote error: DBX Error: Driver could not be properly initialized. Client library may be missing, not installed properly, of the wrong version, or the driver may be missing from the system path.

Si ejecuto la aplicación cliente en el equipo servidor el mensaje sigue siendo el mismo "Exception in safecall method.".

Entiendo que hace falta un driver para DBX para la conexión MSSQL, pero no tengo claro como lo debo instalar.
Revisando mensajes de otros foros he instalado sqlncli.msi que viene en el CD de SQL Server 2005, pero el problema persiste.

Gracias por cualquier ayuda.
Saludos,

Vicens
No entiendo muy bien donde es que tienes el problema.

Probaste correr la aplicación cliente en el propio windows? Obviamente indicando como ip la del propio equipo o bien usando 127.0.0.1? Yo estoy ejecutando un servidor datasnap sobre win7, una app android como cliente datasnap, el driver que utilices del lado de datasnap nada tiene que ver con android, porque justamente datasnap se encarga de encapsular la capa de datos.

Si quieres pasame las 2 app cli and server y lo chequeo.

Saludos.
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #4  
Antiguo 30-11-2013
vicens22 vicens22 is offline
Miembro
NULL
 
Registrado: dic 2010
Posts: 61
Poder: 14
vicens22 Va por buen camino
Buenas tardes,

Muchas gracias Donald por tu ayuda y comentarios.

Ya encontré el motivo del problema y la correspondiente solución.
Efectivamente, el problema no tenía nada que ver con Android, era todo problema del driver cliente instalado en el equipo donde corría el servidor DataSnap.

Mi confusión venía porque en el equipo donde hice las pruebas iniciales, en las que funcionaba sin problema, tenía instalado MSSQL 2008 y por lo tanto el servidor datasnap disponía del cliente 2008 correspondiente.
Al ser el servidor SQL donde reside la base de datos un 2005, pensé que era indistinto que el cliente donde estaba el servidor datasnap fuese 2005 o 2008.

Encontré un foro que comentaba lo siguiente sobre el error mismo error que me daba.

This is most likely caused by the wrong version of the SQL Native Client installed on your system. DBX will only work with V10, while you probably have V11 installed. Try to install the V10 version of the client.

Si no me equivoco, creo que la V10 del cliente SQL corresponde a 2008 y por lo tanto el cliente SQL 2005 parece ser que no sirve para utilizar datasnap server.
Instalé el sqlncli.msi que viene en el cd de 2008 en el equipo donde ejecuto el servidor Datasnap y ya me conecta sin problema.

Mi duda ahora es si una versión superior a la V10 del cliente sql también serviría ya que el mensaje que he comentado parece indicar lo contrario.

Ya que comentas que estás haciendo pruebas con DataSnap y Android te quería consultar sobre la velocidad utilizando datasnap y si opinas que es la mejor opción para la conexión desde móviles.
Estoy haciendo una prueba sencilla conectando con una tabla que tiene unos 7000 registros de clientes. Muestro un listbox con un searchbox para poder buscar facilmente entre ellos.

El tema es que en cuanto activo el el cliente dataset tarda entre 30 y 45 segundos en mostrarme los registros en el listbox, según tenga activada o no la wifi en el móvil e independientemente de que tenga un filtro activo en el cliente dataset, siempre me carga solo una pequeña parte de los registros (aproximadamente unos 200), no sé si hay alguna opción que por defecto limita el número de registros que carga el listbox, pero no la he encontrado.

Me gustaría poder acelerar la carga, de forma que el listbox apareciese vacío inicialmente y que fuese al introducir parte del nombre del cliente cuando realmente apareciesen los registros coincidentes.

Gracias por cualquier ayuda o comentario.

Saludos,

Vicens

Última edición por vicens22 fecha: 30-11-2013 a las 21:49:17.
Responder Con Cita
  #5  
Antiguo 01-12-2013
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 18
donald shimoda Va por buen camino
Cita:
Empezado por vicens22 Ver Mensaje
El tema es que en cuanto activo el el cliente dataset tarda entre 30 y 45 segundos en mostrarme los registros en el listbox, según tenga activada o no la wifi en el móvil e independientemente de que tenga un filtro activo en el cliente dataset, siempre me carga solo una pequeña parte de los registros (aproximadamente unos 200), no sé si hay alguna opción que por defecto limita el número de registros que carga el listbox, pero no la he encontrado.

Me gustaría poder acelerar la carga, de forma que el listbox apareciese vacío inicialmente y que fuese al introducir parte del nombre del cliente cuando realmente apareciesen los registros coincidentes.

Vicens
De momento solo estoy leyendo tablas muy pequeñas de modo que no se como ayudarte. Datasnap también es relativamente nuevo para mi, soy ma usuario de RemObjects pero ante la falta de soporte de RemObjects a Delphi mobile...acá estoy con DataSnap.

Saludos.
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #6  
Antiguo 01-12-2013
vicens22 vicens22 is offline
Miembro
NULL
 
Registrado: dic 2010
Posts: 61
Poder: 14
vicens22 Va por buen camino
OK.
Yo también estoy empezando con datasnap e intentando encontrar la mejor opción para realizar desarrollos para Android e Ios a la vez.
De momento parece que el nuevo Delphi puede resultar.

Seguiré haciendo pruebas.

Espero poder compartir avances pronto.

Gracias y saludos.

Vicens
Responder Con Cita
  #7  
Antiguo 02-12-2013
quimeras quimeras is offline
Miembro
 
Registrado: abr 2004
Posts: 86
Poder: 21
quimeras Va por buen camino
Cita:
Empezado por vicens22 Ver Mensaje
El problema me ocurre cuando en lugar de ejecutar el servidor datasnap en mi equipo lo copié en un servidor web, donde realmente se ejecuta la base MSSQL para comprobar el rendimiento de la aplicación fuera de la wifi.
Yo tengo casi el mismo problema que tenía vicens22, me funciona correctamente la conexión entre el servidor y el cliente android cuando me conecto por wifi vía red local, pero a traves de internet soy incapaz de hacerlo funcionar.
Todos los ejemplos que he encontrado de Datasnap son conectando con el servidor en localhost pero no he encontrado ninguno que te diga los pasos para conectar a través de internet.
Mi duda es ¿necesito algo mas en el servidor aparte de tener corriendo el ejecutable que genera Delphi y tener el correspondiente puerto abierto?. ¿Es necesario tambien instalar IIS o Apache en el servidor o con el propio servidor Datasnap es suficiente?.
Estoy utilizando Interbase 7.5


Cita:
Empezado por vicens22 Ver Mensaje
siempre me carga solo una pequeña parte de los registros (aproximadamente unos 200), no sé si hay alguna opción que por defecto limita el número de registros que carga el listbox, pero no la he encontrado.
Este problema lo tienes resuelto en este otro hilo

Última edición por quimeras fecha: 02-12-2013 a las 11:07:36.
Responder Con Cita
  #8  
Antiguo 02-12-2013
vicens22 vicens22 is offline
Miembro
NULL
 
Registrado: dic 2010
Posts: 61
Poder: 14
vicens22 Va por buen camino
Buenos días,

Finalmente ya conseguí conectar remotamente, el problema que tenía era unicamente del cliente SQL que por lo visto no utilizaba una versión compatible con el servidor datasnap / DBExpress.

Con Interbase no he intentado realizar una conexión, pero entiendo que no deberías tener problema igualmente si de forma local te conecta bien.

En mi aplicación, no tengo nada más que el servidor datasnap en el servidor, así que entiendo que en tu caso tampoco haría falta.

No se me ocurre en principio el motivo de tu problema. Te devuelve algún mensaje de error ??

Has intentado conectar ejecutando la aplicación cliente como aplicación Win 32 ?? De esta forma, obtuve un mensaje que me dió pistas para averiguar la causa del problema.

Has redirigido en el router el puerto del servidor datasnap hacia la IP del equipo servidor de Interbase ??

Gracias por tu ayuda, revisaré el hilo que comentas.

Saludos

Vicens

Última edición por vicens22 fecha: 02-12-2013 a las 12:23:14.
Responder Con Cita
  #9  
Antiguo 04-12-2013
quimeras quimeras is offline
Miembro
 
Registrado: abr 2004
Posts: 86
Poder: 21
quimeras Va por buen camino
Cita:
Empezado por vicens22 Ver Mensaje
Has redirigido en el router el puerto del servidor datasnap hacia la IP del equipo servidor de Interbase ??
Creo que este es el problema, lo voy a revisar, gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Conectar varias Bases de Datos con Server DataSnap gcaffe Providers 5 22-05-2016 02:55:09
Como Conectar Delphi XE2 con MySQL Usando DataSnap Beaker_ Conexión con bases de datos 2 01-05-2012 21:09:40
Cliente de Datasnap en WinXP sin ser administrador no funciona? lsg Varios 8 21-06-2011 20:47:00
Cliente/servidor o Datasnap u otros jgutti Varios 2 23-12-2010 18:54:21
DataSnap 2009 Modificar CommandText en el cliente hibero Providers 0 06-10-2008 17:02:29


La franja horaria es GMT +2. Ahora son las 01:02:12.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi