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