Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Abrir Un MDB
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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:

  
Dim res As Result
  Dim con As Object
  Dim total As Integer
  For Each con In $hCon.tables
    Print con.Name
  Next
  res = $hCon.Exec("SELECT * from LIBROS")
  For Each con In res.Fields
    Print con.Name
  Next
  total = res.Count  


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---
 



 
luesmo2 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 



 
luesmo2 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
Private Function rowcount(rs as result) As Integer

  Dim rows As Integer

  rows = 0
  Do
    rs.MoveTo(rows)
    Inc rows
  Loop

Catch

  Return rows

End
 

Debería darte el número de registros.
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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..
 



 
luesmo2 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Abrir Un Formulario Turkoman Controles/Librerías/Componentes 2 Martes, 08 Febrero 2011, 17:14 Ver último mensaje
Turkoman
No hay nuevos mensajes Abrir Tarball netking86 Shell Scripting 3 Viernes, 08 Abril 2011, 18:54 Ver último mensaje
netking86
No hay nuevos mensajes Error Al Abrir Fichero BrunoIV General 3 Viernes, 20 May 2011, 14:46 Ver último mensaje
Invitado
No hay nuevos mensajes Abrir Directorio Y Que No Sea Con Nautilus? Agamenon General 9 Sabado, 07 Abril 2012, 16:06 Ver último mensaje
Agamenon
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron