SoloCodigo
Programación Web y Scripting => Python => Mensaje iniciado por: DardoSchuster en Jueves 2 de Septiembre de 2010, 10:50
-
Buenos dias
Antes que nada una breve presentacion , soy programador delphi/sql server desde hace muchos años y estoy viendo la posibilidad de usar python/mysql/access con pythonwin para el ado.
El primer dia que empece con esto fue todo un exito ya que instale python 3.1 y todos los complementos sin ningun problema ahora al segundo ya cambio la cosa y tengo el siguiente problema cuando quiero acceder al conjunto fields de un recordset access dice que no existe el objeto a ver si alguien me puede decir que estoy haciendo mal
un saludo
y desde ya muchas gracias
Dardo
# First import two useful modules>
import win32com.client
from adoconstants import *
# Create the ADO Connection object via COM.
oConn = win32com.client.Dispatch('ADODB.Connection')
# Now set the connection properties via the ConnectionString
oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data> Source=C:personal.mdb;"
# Now open the connection
oConn.Open()
if oConn.State == adStateOpen:
# Do something here
print ("We've connected to the database.")
# Now create a RecordSet object and open a table
rs = win32com.client.Dispatch('ADODB.Recordset')
rs.Open("select * from agenda",oConn,1,3)
while not rs.EOF:
print (rs.fields("nombre"))
La respuesta que recibo de esto es siempre que no conoce el objeto fields lo cual no entiendo porque en ela propia ayuda sale fields como opbjeto dentro del recordset
-
Buen día Dardo,
La verdad, nunca usé win32com.client, pero, por lo que pude encontrar en internet.
Me parece que el problema es que estás poniendo:
en vez de
Recordá que en Python "Todo es Case-Sensitive" ;-)
Saludos,
Rive.
-
Tienes razon pero ahora me sigue otro problema con un codigo mas sencillo
import win32com.client
conn = win32com.client.Dispatch(r'ADODB.Connection')
DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:/personal.mdb;'
conn.Open(DSN)
rs = win32com.client.Dispatch(r'ADODB.Recordset')
rs_name = 'agenda'
rs.Open('[' + rs_name + ']', conn, 1, 3)
print (rs.Fields.Count)
print (rs.Fields.Item(0))
error que me da
PythonWin 3.1.2 (r312:79149, Mar 21 2010, 00:41:52) [MSC v.1500 32 bit (Intel)] on win32.
8
Traceback (most recent call last):
File "C:Python31Libsite-packagespythonwinpywinframeworkscriptutils.py", line 325, in RunScript
exec(codeObject, __main__.__dict__)
File "C:DardoLenguaje PythonadoEjemplobase-de-datos-2.py", line 13, in <module>
print (rs.Fields.Item(0))
File "C:Python31libsite-packageswin32comgen_py2A75196C-D9EB-4129-B803-931327F72D5Cx0x2x8.py", line 871, in __str__
return str(self.__unicode__(*args))
File "C:Python31libsite-packageswin32comgen_py2A75196C-D9EB-4129-B803-931327F72D5Cx0x2x8.py", line 867, in __unicode__
return unicode(self.__call__(*args))
NameError: global name 'unicode' is not defined
>>>
Que pasa con el unicode de las narices aqui ?? si es un campo string da problemas , si es uno numerico tambien da problemas , no se que funcion aplicarle para que se tranquilice.
-
Ok ya esta resuelto entre el case sensitive y la falta del value al final me estaban complicando la vida
muchas gracias
un saludo
dardo