Seguimos con ADO

Seguimos con ADO

Postby Pedro » Tue Mar 06, 2012 3:57 pm

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
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Seguimos con ADO

Postby Antonio Linares » Tue Mar 06, 2012 10:34 pm

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
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Seguimos con ADO

Postby Pedro » Wed Mar 07, 2012 8:39 am

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
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Seguimos con ADO

Postby Antonio Linares » Wed Mar 07, 2012 10:40 am

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
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Seguimos con ADO

Postby Pedro » Wed Mar 07, 2012 12:05 pm

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
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Seguimos con ADO

Postby Antonio Linares » Wed Mar 07, 2012 12:46 pm

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
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Seguimos con ADO

Postby Pedro » Thu Mar 08, 2012 11:35 am

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

*-------------------------------------------------------------------------------
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 view  RUN

* ------------------------------------------------------------------
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
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Seguimos con ADO

Postby Antonio Linares » Thu Mar 08, 2012 12:10 pm

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
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Seguimos con ADO

Postby Pedro » Thu Mar 08, 2012 12:18 pm

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
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Seguimos con ADO

Postby Antonio Linares » Thu Mar 08, 2012 12:46 pm

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
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Seguimos con ADO

Postby Pedro » Mon Mar 12, 2012 10:01 am

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
User avatar
Pedro
 
Posts: 464
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Seguimos con ADO

Postby jbrita » Mon Mar 12, 2012 12:16 pm

jbrita
 
Posts: 502
Joined: Mon Jan 16, 2006 3:42 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 49 guests