Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Register FAQ Members List Calendar Guía de estilo Today's Posts


Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 28/11/2013
vicens22 vicens22 is offline
Miembro
NULL
 
Join Date: Dec 2010
Posts: 61
Poder: 16
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
Reply With Quote
  #2  
Old 29/11/2013
vicens22 vicens22 is offline
Miembro
NULL
 
Join Date: Dec 2010
Posts: 61
Poder: 16
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
Reply With Quote
  #3  
Old 30/11/2013
donald shimoda's Avatar
donald shimoda donald shimoda is offline
Miembro
 
Join Date: Jul 2008
Location: Argentino en Santa Cruz de la Sierra
Posts: 1,083
Poder: 20
donald shimoda Va por buen camino
Quote:
Originally Posted by vicens22 View Post
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
Reply With Quote
  #4  
Old 30/11/2013
vicens22 vicens22 is offline
Miembro
NULL
 
Join Date: Dec 2010
Posts: 61
Poder: 16
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

Last edited by vicens22 : 30/11/2013 at 20:49.
Reply With Quote
  #5  
Old 01/12/2013
donald shimoda's Avatar
donald shimoda donald shimoda is offline
Miembro
 
Join Date: Jul 2008
Location: Argentino en Santa Cruz de la Sierra
Posts: 1,083
Poder: 20
donald shimoda Va por buen camino
Quote:
Originally Posted by vicens22 View Post
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
Reply With Quote
  #6  
Old 01/12/2013
vicens22 vicens22 is offline
Miembro
NULL
 
Join Date: Dec 2010
Posts: 61
Poder: 16
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
Reply With Quote
  #7  
Old 02/12/2013
quimeras quimeras is offline
Miembro
 
Join Date: Apr 2004
Posts: 86
Poder: 23
quimeras Va por buen camino
Quote:
Originally Posted by vicens22 View Post
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


Quote:
Originally Posted by vicens22 View Post
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

Last edited by quimeras : 02/12/2013 at 10:07.
Reply With Quote
  #8  
Old 02/12/2013
vicens22 vicens22 is offline
Miembro
NULL
 
Join Date: Dec 2010
Posts: 61
Poder: 16
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

Last edited by vicens22 : 02/12/2013 at 11:23.
Reply With Quote
  #9  
Old 04/12/2013
quimeras quimeras is offline
Miembro
 
Join Date: Apr 2004
Posts: 86
Poder: 23
quimeras Va por buen camino
Quote:
Originally Posted by vicens22 View Post
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
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Conectar varias Bases de Datos con Server DataSnap gcaffe Providers 5 22/05/2016 01:55
Como Conectar Delphi XE2 con MySQL Usando DataSnap Beaker_ Conexión con bases de datos 2 01/05/2012 20:09
Cliente de Datasnap en WinXP sin ser administrador no funciona? lsg Varios 8 21/06/2011 19:47
Cliente/servidor o Datasnap u otros jgutti Varios 2 23/12/2010 17:54
DataSnap 2009 Modificar CommandText en el cliente hibero Providers 0 06/10/2008 16:02


All times are GMT +2. The time now is 11:36.


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