|
Página 1 de 1
|
Autor |
Mensaje |
luesmo2
Usuario
Registrado: Octobre 2009
Mensajes: 16
|
Abrir Un MDB
A ver si me podeis ayuda, que no entiendo muy bien (beginner me llaman) este asunto
Quiero abrir una base de datos de Access 97 y establezco la conexión sin error.
Luego uso el siguiente código:
Me imprime bien todas las tablas que hay en la base, una de ellas es "LIBROS"
Y también me imprime bien todos los campos que hay en LIBROS.
Sé que hay varios registros en LIBROS, pero res.Count=0.
Por qué no puedo acceder a los registros de LIBROS?
Muchas gracias a todos.
Luis---
|
#1 Lunes, 03 Marzo 2014, 14:08 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Abrir Un MDB
Bienvenido ante todo. Espero que este foro te sirva de ayuda, que para eso está.
Un error tienes de concepto (y ejecución) si ese es el código que usas.
Para conectar con una base de datos necesitas una instancia de la clase connection, a la que has de pasarle, entre otras cosas, el tipo de base de datos que usas, para que la clase implemente el SQL necesario en sus objetos internos.
Es decir:
dim hcon as new Connection 'creamos una conexión
dim hresult as result
hcon.type="sqlite" 'le indicamos el tipo
hcon.host="mihome/micarpeta" 'le damos la ubicación
hcon.name="minombredebasededatos" 0el nombre de la base
hresult=hcon.exec("Select * from libros") 'obtengo los registros
'etc.
Lo que tú has hecho ha sido declarar con como objeto, en genérico, lo que hace que el compilador se "trague todo". En tiempo de ejecución tu ejecutas un .exec contra el objeto y él supone que es una conexión... pero no tiene en realidad nada que mostrar.
El problema principal es: Hasta donde conozco gambas no tiene driver para Access, por no ser éste, entre otras cosas, open source.
Si quieres usar bases de escritorio, te recomiendo sqlite, que es una pequeña maravilla. Busca información por ahí, que hay mucha... o pregunta, que para eso estamos.
Saludos.
|
#2 Lunes, 03 Marzo 2014, 18:01 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Abrir Un MDB
A ver, shordi, por lo que interpreto de la lectura del mensaje de nuestro amigo luesmo2, parece que sí, efectivamente ha conseguido hacer funcionar la conexión a la base de datos mdb, seguramente declarando como tipo ODBC (y además supongo que con la ayuda de algún driver). Esto está documentado y es posible hacerlo, lo que pasa es que en el código que nos muestra, no aparece la declaración o la creación de la conexión a la BD.
Según entiendo, él ha conseguido listar los campos y las tablas de la base de datos mdb, pero no consigue extraer el contenido, esto es, hacer una consulta simple y mostrar los resultados. El objeto result devuelve count=0, es decir, está vacío.
Yo probaría lo siguiente:
res = $hCon.Exec("SELECT * from LIBROS")
Print res.Count
While res.Available ' mientras que haya resultados disponibles...
print res!campo ' donde campo es el nombre del primer campo
print res["campo"] ' lo mismo, pero otra forma de hacerlo
Wend
Para representar los resultados en un control tabulado, como gridview o tableview, busca por el foro, porque hay muchos temas donde se ha explicado cómo hacerlo. Hay dos formas, una es iterando por las filas del contenido y otra forma (la recomendada) es usando el evento Data del control gridview.
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#3 Lunes, 03 Marzo 2014, 18:47 |
|
|
luesmo2
Usuario
Registrado: Octobre 2009
Mensajes: 16
|
Re: Abrir Un MDB
Previamente he modificado los ficheros odbc.ini y odbcinst.ini poniendo driver, base de datos, clave, usuario, etc.
También está declarada la conexión y funciona todo menos eso.
Pasé la base de datos a sqlite y la aplicación está trabajando bién, pero me gustaría haberlo hecho directamente con mdb.
Probaré como dices Jguardon y ya os contaré.
Por cierto, si abro la conexión desde el ide de gambas3, la abre y me muestra las tablas pero en cuanto cliqueo en cualquier tabla se cierra el ide.
Muchas gracias por vuestra pronta respuesta, saludos
Luis
|
#4 Lunes, 03 Marzo 2014, 19:24 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Abrir Un MDB
Ok. Sorry for the noise.
De todas formas si has hecho eso no desesperes, que es correcto. El ODBC no devuelve el número de registros. En lugar de usar .Count símplemente recorre el result, tal como te ha dicho Jesús.
Prueba algo como esto
Debería darte el número de registros.
|
#5 Lunes, 03 Marzo 2014, 21:49 |
|
|
luesmo2
Usuario
Registrado: Octobre 2009
Mensajes: 16
|
Re: Abrir Un MDB
Bueno, pués la siguiente comprobación:
Try $hCon.Exec("SELECT COUNT(*) from LIBROS")
If Error Then
Message.Error(Error.Text)
Endif
Da el error: Error while executing the statement
Y en cuanto a res.moveto(0) error: result not available
Bueno como dicen por aquí, con el tiempo y una caña...
Gracias de nuevo.
Luis..
|
#6 Martes, 04 Marzo 2014, 15:52 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|