Error con Cursor Adapter y Objecto ADODB.Command

96 views
Skip to first unread message

Murray1971

unread,
Jun 29, 2012, 7:54:26 PM6/29/12
to publice...@googlegroups.com
Según el siguiente ejemplo, copiado de directamente de un EXIMIO laburante de VFP, que lo puso en algún foro para ayudar a otros, como yo. Entiendo q el código q puso, lo puso justamente porque FUNCIONABA y muy bien, pero da la casualidad q a mi no me funciona y siempre obtengo el mismo error:

ADODB.Parameters : No se encontró el elemento en la colección que corresponde al nombre o el ordinal solicitado.\

Yo le atribuyo al OLEDB q estoy usando, ya q no he probado con otra conección, alguien puede darme una pista de si es un error del OLEDB o bien de VFP?

Saludos.

El código es el siguiente:

LOCAL o as CursorAdapter
o=NewObject("cursorAdapter")

o.DataSourceType="ADO"
o.AddProperty("oConnection",CreateObject("adodb.connection"))
o.oConnection.Open([Provider=PGNP.1;User ID=postgres;Password=ninguna;Initial Catalog=HorusFarma;Data Source=localhost;])

o.AddProperty("oCommand",CreateObject("adodb.command"))
o.oCommand.activeConnection = o.oConnection

o.DataSource=CreateObject("adodb.recordset")
o.DataSource.ActiveConnection = o.oConnection

o.alias = "arqueo"
o.addproperty("idempresa","")
TEXT TO o.SelectCmd NOSHOW
SELECT *
FROM arqueo
WHERE idempresa = ?this.idempresa
ENDTEXT

IF not o.CursorFill(,.F.,,o.oCommand)
_CLIPTEXT = MESSAGE()
WAIT WINDOW _cliptext
cancel
ENDIF

o.customerId="_EMPREJEMPLO"
Requery()
BROWSE

o.customerId="_1E4L2T0M4AV"
Requery()
BROWSE

Daniel Sánchez

unread,
Jun 29, 2012, 10:00:06 PM6/29/12
to publice...@googlegroups.com
No trabajo con ADO si no con ODBC, otra cosa message(), no te devuelve el mensaje de error ocurrido en estos casos, deberias usar así

Function errordata
Parameter CDATO As String, LSHOW As LOGICAL
If Type("cDato")="L"
CDATO = ""
Endif
Aerror(ERRORARRAY)
If ERRORARRAY(1, 5)=55 .Or. ERRORARRAY(1, 5)=0
* Do Form reconectarsql
Else
If LSHOW
= Messagebox(ERRORARRAY(2)+Chr(13)+CDATO, 16, "Acerca del Registro", 100)
Else
= Messagebox(ERRORARRAY(2)+Chr(13)+CDATO, 16, "Acerca del Registro")
Endif
Endif
Return (.T.)
Endfunc
**

Aerror() te devuelve un array con el mensaje de error ocurrido recientemente con OLE u ODBC.

--
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil +051-949398047
Trujillo - Perú
Reply all
Reply to author
Forward
0 new messages