Acceso a una base de datos Ms Access

L Solis oficina lsolis en mu.intecsa-inarsa.es
Vie Jun 30 08:16:14 CEST 2006


Marcos escribió:
> ¿Puedes mostrar una de las consultas que te falla? ¿Cómo lo pruebas en
> access si se trata de otras bbdd? ¿es con tablas de access adjuntas? Lo
> más común es hacer un programa mínimo que muestre el problema para que
> le echemos un vistazo.
>
> Chao
>
> El jue, 29-06-2006 a las 14:25 +0200, L Solis oficina escribió:
>   
>> He podido acceder a varias bases de datos Ms Access a través de dao sin 
>> ningún problema a partir de las instrucciones que pueden consultarse, 
>> por ej, en:
>>
>> http://starship.python.net/crew/bwilk/access.html
>>
>> Sin embargo, en otras bases de datos, el mismo programa no consigue 
>> devolver el resultado de la consulta (por supuesto está probada desde 
>> Access). El programa no da error de conexión, ni ningún otro error, 
>> simplemente me devuelve un recordset vacío.
>>
>> Alguna orientación sería bien recibida, muchas gracias,
>>
>> luis
>>
>>
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en aditel.org
>> http://listas.aditel.org/listinfo/python-es
>>     
>
>   
> ------------------------------------------------------------------------
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>   
A ver si me explico mejor

1.- Hago consultas a bases de dato tipo Ms Access siempre bajo s.o. 
Windows xp home sp2.
2.- Algunos ficheros *.mdb se conectan y devuelven bien el recordset
3.- Otros ficheros *.mdb se conectan pero devuelven un recordset vacío, 
cuando trabajando directamente en access no es vacío.
Ahí va el código que utilizo:

   def append_from_Access(self):

      try:
         import ...
         conn = win32com.client.Dispatch(r'ADODB.Connection')
         DSN = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="
         DSN = DSN + self.__od.source() + ";"
         conn.Open(DSN)

      except Exception, inst:
         ...

      try:  
         sql_statement='SELECT * FROM ' + nombre_tabla_consulta 
#simplemente abre una tabla o consulta ya creada
         rs = win32com.client.Dispatch(r'ADODB.Recordset')
         rs.Open(sql_statement, conn, 1, 3)
         while not rs.EOF:
            cod=rs.Fields(campo_nombre.Value) #campo_nombre: un nombre 
de campo existente
            ...
            rs.MoveNext()

         rs.Close()
         conn.Close()

      except Exception, inst:
          ...

------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


Más información sobre la lista de distribución Python-es