Problemas con las bases de datos

Tus preguntas. Algoritmos o Grupos de Comandos formando Programas Escripts.
Responder
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Problemas con las bases de datos

Mensaje por arkcrew »

Hola, soy Alberto, en este tema os pregunto por la solucion de algunos errores

Como ya publique con anterioridad unaas preguntas acerca d ela conexion con bases de datos MySQL ahora preguno por la solucion de algunos problemas que me surgieron:

1-Cuando ejecuto el programa en cuestion en otro PC sin el ODBC me da un error

¿Alguien sabe que debo hacer para que funcione en programas sin el ODBC instalado?

Es de vital importancia que lo haga, sino no me sirve para nada la conexion

Hay que adjuntar alguna Dll o algo¿¿?

Os dejo el codigo qeu utilizo actualmente

Código: Seleccionar todo

#include <sql.au3>





$sql = _MySQLConnect("user","pass","dbname","server")

$SQLCode = "SELECT * FROM tabla  WHERE 1"

$TableContents = _Query($sql,$SQLCode)









if $TableContents.Eof    then



    msgbox(0,"No hay datos","vacio")



else

$var = $TableContents.Fields ("campo1").value

    msgbox(0,"Si hay datos Nombre de usuario",$var)

$var = $TableContents.Fields ("Campo2").value

    msgbox(0,"Si hay datos password",$var)



endif

 
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2085
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Problemas con las bases de datos

Mensaje por BasicOs »

Hola
Seguro que hay muchas opciones, yo te diría así rapido que incluyeras una funcion en tu escript, al principio antes de ejecutar (o sino otro escript aparte al arrancar, que te chequera si está instalado el ODBC, y en caso de que no lo este te haga automaticamente un download de la pagina del odbc, y una autoinstalación.
Esto es un pseudocódigo de como sería, puedes completar tu el código..

Código: Seleccionar todo

Function IsOdbc()

if not fileexist("elficheroodbc") then ; se puede hacer tambien buscando la clave en el registro o haciendo una llamada al odbc y esperando un error... y de más formas

    download el odbc ; if error entonces msgbox que no se pudo bajar el odbc

   if  fileexist("elficheroodbc")     then 

         instala el odbc

    else

         msgbox("0", "Error", "No se pudo instalar el Odbc")

    endif

endif

EndFunc
:smt037
Salu2:)
Jonny
Profesional del Autoit
Mensajes: 1042
Registrado: 30 Jun 2008, 20:08

Re: Problemas con las bases de datos

Mensaje por Jonny »

Hola

Ese error lo tendrás siempre, a menos que no instales los drivers... Es el único inconveniente que le veo a la librería.
Yo intenté hacer una librería igual qe esta, pero que conectara directamente a la base de datos por sockets, pero no hubo forma.
Tengo pendiente hacer portables los drivers e intentar averiguar como se instalan, para hacerlo a mano con autoit, pero no parece ser tan fácil ¿Alguien sabe algo sobre esto?
yo de momento, me he apañado comprobando si están instalados los drivers. Puedes saberlo con la función Mysql_Connect, si al llamarla @Error vale 2 (creo que era, hablo de memoria) qiere decir que los controladores no están instalados. Entonces, ejecuto el instalador que ya descargué hace tiempo y pauso el script hasta que estén instalados (deje de existir la ventana del instalador)
pero me gustaría más que comprobara mediante el registro si los controladores están instalados y de no ser así mediante una función de usuario en AutoIt se instalaran.
A ver si alguien nos da una pista...

Salu2!
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Problemas con las bases de datos

Mensaje por Ximorro »

Pues la solución de Jonny me parece muy buena, como mucho se podría ampliar con lo de descargar de internet, para no tener que distribuir los drives con la aplicación, pero mira, si los distribuyes (si la licencia lo permite) estás cubierto ante errores de internet, por ejemplo.

Si Mysql_Connect ya te dice si el driver está instalado no hace falta mirarlo de otra manera, y lo de pausar el script hasta que se instale me parece una buena solución ¿qué más queréis que haga si es todo automático?.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Jonny
Profesional del Autoit
Mensajes: 1042
Registrado: 30 Jun 2008, 20:08

Re: Problemas con las bases de datos

Mensaje por Jonny »

Hola

Aquí dejo la función a modo de ejemplo que utilizo para el server que estoy haciendo.
Lo he subido a Sendspace, porque he adjuntado también el instalador de los controladores ODBC por si no los teneis y ocupan 3 megas y pico. El link es este:
http://www.sendspace.com/file/u6a1kd
El código está comentado para que lo entendais mejor. He adjuntado también la librería Mysql.au3 que utilizo yo (aunque las funciones parecen ser las mismas no es la que incluye AutoIt) almenos, yo la descargué a parte.

La función ajusta en $MysqlStatus el estado de la conexión con Mysql (eso lo hice para controlar la conexión en el servidor) no es relevante. Además, devuelve 0 si ocurrió un error al conectar con Mysql (usuario/password/servdidor/base de datos incorrectos), 2 si no se instalaron los controladores (bien porque se canceló la instalación en el msgbox que advierte de que los drivers no existen o porque el instalador no se encuentra en la ruta especificada (poner la que deseeis)) y por último devuelve 1 si la conexión se realizó correctamente.
Como vereis, la función espera que se cierre el programa de instalación de los controladores (podría haberse hecho de otras maneras pero así funciona bien) para continuar.

Sigo pensando, que poder portabilizar los controladores lo haría quizá más elegante en mi opinión. ya que en vez de lanzar el instalador, llamaríamos a una función que realizara directamente la instalación como corresponda, simulando para el usuario que se está realizando un proceso propio del programa (entiendo que la licencia de los controladores permitirán la difusión libremente) por lo que no debería haber ningún problema en ese sentido. Pero eso va a gusto de cada uno, evidentemente.

Espero que os guste.

salu2!
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: Problemas con las bases de datos

Mensaje por arkcrew »

Gracias por toda la información, intentaré hacer todo lo que me dicen
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2085
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Problemas con las bases de datos

Mensaje por BasicOs »

Como comentais, puedes evitar bajarte el instalador odbc si ya lo incluyes junto con el programa, o incluso haces un Fileinstall() incluyendo el instalador dentro del ejecutable de tu programa (aunq claro engordaría un poco, pero quizas sea la mejor opción).

Creo que va a depender del tipo de distribución que vayas a hacer, el número de usuarios, pcs, incluso hacer un escript instalador del programa, etc..

También no olvidar que solo se necesita ejecutar el instalador una sola vez en la primera vez que se usa el programa, con lo que puedes incluirlo en algún proceso de instalación inicial del programa.
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2085
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Problemas con las bases de datos

Mensaje por BasicOs »

Como comentais, puedes evitar bajarte el instalador odbc si ya lo incluyes junto con el programa, o incluso haces un Fileinstall() incluyendo el instalador dentro del ejecutable de tu programa (aunq claro engordaría un poco, pero quizas sea la mejor opción).

Creo que va a depender del tipo de distribución que vayas a hacer, el número de usuarios, pcs, incluso hacer un escript instalador del programa, etc..

También no olvidar que solo se necesita ejecutar el instalador una sola vez en la primera vez que se usa el programa, con lo que puedes incluirlo en algún proceso de instalación inicial del programa.
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: Problemas con las bases de datos

Mensaje por arkcrew »

Creo que añadire un instalador con el inno setup y ya lo incluire todo ahi.
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Problemas con las bases de datos

Mensaje por Ximorro »

Jonny, o no sé buscarlo o la librería de MySQL no viene con AutoIT, con AutoIT viene una base de datos sencillita que se llama SQLite.
Lo del Mysql es necesario bajárselo aparte ¿no?

El hecho de que se vea el instalador original yo no lo veo un problema, siempre que sea lo más automático posible y sencillo para el usuario.

Por cierto ¿por que los códigos que pones, incluso la librería, no están indentados (tabulados)? así es mucho más difícil de leer...
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: Problemas con las bases de datos

Mensaje por arkcrew »

perdon por eso,... es que ando con prisa y solo copio y pego
Jonny
Profesional del Autoit
Mensajes: 1042
Registrado: 30 Jun 2008, 20:08

Re: Problemas con las bases de datos

Mensaje por Jonny »

Hola

sí, como dige esa udf no es la que incluye AutoIt, sinó que la descargué del foro inglés, aunque no entiendo muy bien porque la pusieron como una udf distinta a la de AutoIt, cuando parece que es la misma. Del post que la bajé (que ya no recuerdo la url) también bajé el .exe que incluyo en el ejemplo qué subí a sendspace y un script .au3, que automatizaba la instalación de los controladores. No lo he subido porque lo borré (no tenía pensado utilizarlo) aunque, no será muy difícil crear una función que automatice los 4 pasos que hay que seguir para completar la instalación.

jeje. No está tabulado, porque está hecho con el block de notas y muy a la ligera. ¿La UDF? Ni idea...

Salu2!
Responder