Seguimos con ADO

Post Reply
User avatar
Pedro
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Seguimos con ADO

Post by Pedro »

Hola a todos

Me gustaría saber si alguien me puede tirar una manita para seguir, al menos para los temas de buscar en el mismo recordset y en otras tablas de la base de datos.
Para no incordiar mucho al foro, podéis mandarme un email para contactar.

Gracias
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Antonio Linares
Site Admin
Posts: 42521
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 75 times
Contact:

Re: Seguimos con ADO

Post by Antonio Linares »

Pedro,

Aqui tienes un ejemplo muy bueno que ha publicado Rick Lipkin:

viewtopic.php?p=127001#p127001

que ademas muestra como hacer una busqueda incremental. Mira mis respuestas en esa conversación para solucionar las busquedas incrementales que no le funcionaban :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Pedro
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Seguimos con ADO

Post by Pedro »

Gracias Antonio

Aún no he llegado a esa parte, pero llegaré, de momento estoy intentando buscar los métodos del objeto recordset y ver como se usan, por ejemplo Find, Locate, Filter, etc.

Por cierto que encuentro poca información que no sea para VB. ¿Dónde podría encontrar información acerca de estos métodos?
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Antonio Linares
Site Admin
Posts: 42521
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 75 times
Contact:

Re: Seguimos con ADO

Post by Antonio Linares »

Pedro,

Hace ya cierto tiempo implementé junto a F.M. un ADORDD para Harbour/xHarbour, y nos sirvió como ejercicio para conocer los equivalentes en ADO de las funciones de manejo de DBFs a las que estamos acostumbrados. El código fuente está disponible aqui:

http://xharbour.cvs.sourceforge.net/viewvc/xharbour/xharbour/source/rdd/usrrdd/rdds/adordd.prg?view=log

Aunque este código es "lioso" para iniciarse, lo que tiene de interesante es que tiene los equivalentes de DBFs a ADO, por ejemplo:

Append --> oRecordSet:AddNew()
Close --> oRecordSet:Close()
Commit --> oRecordSet:Update()
Delete --> oRecordSet:Delete()
Deleted() --> oRecordSet:Status == adRecDeleted
EOF() --> oRecordSet:EOF ó oRecordSet:AbsolutePosition == -3
Field() --> oRecordSet:Fields( nField - 1 ):Name, :Value, :Type
FCount() --> oRecordSet:Fields:Count
GoTop --> oRecordSet:MoveFirst()
GoBottom --> oRecordSet:MoveLast()
Locate --> oRecordSet:Find( cFor, If( lContinue, 1, 0 ) )
Open --> oRecordSet:Open( cQuery, hConnection )
OrdListClear() --> oRecordSet:Index := ""
RecCount(), LastRec() --> oRecordSet:RecordCount
RecNo() --> oRecordSet:AbsolutePosition
Skip --> oRecordSet:Move( nToSkip )
etc...
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Pedro
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Seguimos con ADO

Post by Pedro »

Gracias Antonio

Por lo visto este adordd es mucho más completo que el que viene en fwh.
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Antonio Linares
Site Admin
Posts: 42521
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 75 times
Contact:

Re: Seguimos con ADO

Post by Antonio Linares »

Pedro,

Si, una vez se añadió a Harbour y xHarbour, otros programadores colaboraron en su desarrollo.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Pedro
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Seguimos con ADO

Post by Pedro »

Bueno ahora me ha dejado varado este error : Error ADODB.RecordSet/6 DISP_E_UNKNOWNNAME: FIND
Lo he puesto en dos sitios, primero en la función donde quiero buscar si el código está dentro de los registros del recordset y me da el error, luego he creado un método buscar dentro de la clase TRecordset y me da el error en ese método.
Así lo he puesto :

Code: Select all | Expand


*-------------------------------------------------------------------------------
METHOD BUSCA(xBuscar) class TRecordSet
*-------------------------------------------------------------------------------
Local lHay  := .T.
   
      ::oRs:Find(xBuscar)  <-------------- Aqui da el error
      If oRs:Eof()
         lHay := .F.
      EndIf  
return lHay


También lo había puesto de esta otra forma , pero en ambas da el mismo error :

Code: Select all | Expand


* ------------------------------------------------------------------
FUNCTION BPacien(oDlg,nEvent)
* ------------------------------------------------------------------
Local cCodigo := Alltrim(oDbPacien:ID)
   

      cCodigo := PADL(cCodigo,6,"0")
      oRsPac:Find("oRsPac:ID = cCodigo")      
      If nEvent == ID_ALT
           If !oRsPac:Eof()
              MsgInfo("Ya existe el Paciente "+cCodigo,"ATENCION" )
              Return(.f.)
           EndIf
      EndIf
      oDbPacien:ID := cCodigo
      oDlg:UpDate()
Return(.t.)
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Antonio Linares
Site Admin
Posts: 42521
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 75 times
Contact:

Re: Seguimos con ADO

Post by Antonio Linares »

Pedro,

Puede ser que el motor de bases de datos que estás usando con ADO no lo soporte. Que tipos de ficheros son los que estas usando ?

Ese es el problema principal que nos encontramos cuando estabamos construyendo el AdoRdd: que segun el motor de bases de datos, unas cosas estan soportadas y otras no.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Pedro
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Seguimos con ADO

Post by Pedro »

Antonio he empezado con Acces, de forma sencilla, construyendo una base de Acces con varias tablas sencilla que tenía de un programa ya terminado.
Para abrir la base de datos :
oCone:=tOleAuto():new("ADODB.connection")
oCone:open("Provider= MicroSoft.Jet.OLEDB.4.0;Data Source="+cArea+"DIARIO.mdb"+";")

Como ya dije en el post anterior, la conexión se efectúa correctamente, el recordset con los datos me los muestra en un xBrowse, e incluso me trae a un diálogo los datos de un registro, pero cuando intento hacer una búsqueda del código de un paciente, por ejemplo, me da el error al usar el FIND
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
User avatar
Antonio Linares
Site Admin
Posts: 42521
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 75 times
Contact:

Re: Seguimos con ADO

Post by Antonio Linares »

Pedro,

Has revisado el ejemplo de Rick Lipkin en el que muestra como aplicar un filtro dinámico ? El tambien usa Access

y el ejemplo esta completo y funciona muy bien :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Pedro
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Seguimos con ADO

Post by Pedro »

Hola
He revisado el ejemplo de Rick Lipkin y aplicando el filtro me hace lo que deseo.
Bien, después de un montón de errores, producto de que la tabla fue importada de una dbf a acces, y cuando ya me hace el insertar un nuevo registro sin problemas, me encuentro que en la modificación (que es donde antes tenía los problemas por la importación de datos) ahora me da este bonito error :
Error description: Error ADODB.RecordSet/3 DISP_E_MEMBERNOTFOUND: UPDATE
Es decir ahora ya no existe el método UPDATE en el recordset.
En fin
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
jbrita
Posts: 507
Joined: Mon Jan 16, 2006 3:42 pm

Re: Seguimos con ADO

Post by jbrita »

Post Reply