Error ADOBOOKMARK
Hola tengo la siguiente pregunta, espero puedas ayudarme...
Tengo el siguiente código de conexión para ejecutar una sentencia sql. El problema es cuando llega a la línea que ejecuta la sentencia sql (la marqué en negrita y subrayado).
Me da el siguiente error "No se encuentra la variable 'ADOBOOKMARK'", posteriormente si le doy click a la opción "pasar por alto" me da el siguiente error "Error: Microsoft Cursor Engine: El proveedor de datos u otro servicio devolvió un estado E_Fail"
He revisado la sentencia y no está mala. Además revisé en todo el proyecto si por alguna parte había usado o declarado esa variable, pero no, en ningún lado la utilizo
¿Me gustaría saber un poco acerca de este error y por qué ocurre? Si sabes como solventarlo me gustaría que me ayudaras por favor, y Gracias
****Aquí está el código*****
if this.dba_mode=1
strsql=this.strsql
strsql=strtran(alltrim(upper(strsql)),"str_to_date(","")
strsql=strtran(alltrim(upper(strsql)),",'%d/%m/%y')","")
*!* creo una conexion ado
myconn=createobject('adodb.connection')
*!* need a client side cursor for this so that we get a recordcount
myconn.cursorlocation=3 && aduseclient
*!* open the data source
myconn.open("driver=microsoft visual foxpro driver;" + ;
"sourcetype=dbf;sourcedb="+this.dba_dir+ ";" + ;
"exclusive=no;backgroundfetch=no;null=no;collate=machine;ole db services = -4")
*!* create an ado recordset to be used as the datasource for the datacombo control
myrs=createobject('adodb.recordset')
*!* set the connection property of the recordset
myrs.activeconnection=myconn
*!* the recordset inherits the cursorlocation of the connection
myrs.locktype=3 && adlockoptimistic
myrs.open(strsql,,,,1)
if this.dba_act=1
** creamos el objeto cursor adapter
locursoradapter = createobject("cursoradapter")
** asignamos el nombre del cursor
locursoradapter.alias="_tempocursor"
** asignamos el tipo de datos que recibirá
locursoradapter.datasourcetype="ado"
** convertimos el recordset a un cursor de vfp
=locursoradapter.cursorfill(,,,myrs)
** desincorporamos el cursor, de el objeto cursoradapter
=locursoradapter.cursordetach()
** destruimos el cursoradapter
locursoradapter = null
st="select * from _tempocursor into cursor "+alltrim(upper(this.dba_cursor))+" readwrite"
&st
select _tempocursor
use
st="select "+alltrim(upper(this.dba_cursor))
&st
myrs.close
endif
myconn.close
endif
if this.dba_mode=2
lcserver=alltrim(this.dba_host)
lcdatabase=alltrim(this.dba_base)
lcuser =alltrim(this.dba_user)
lcpassword = alltrim(this.dba_pass)
dba_port=alltrim(this.dba_port)
p_tabres=alltrim(this.dba_cursor)
strsql=this.strsql
strsql=strtran(alltrim(upper(strsql)),'==','=')
strsql=strtran(alltrim(upper(strsql)),'.t.','1')
strsql=strtran(alltrim(upper(strsql)),'.f.','0')
strsql=strtran(alltrim(upper(strsql)),'\','\\')
strsql=strtran(strsql,"%d/%m/%y","%d/%m/%y")
strsql=strtran(strsql,"alltrim","trim")
lcstringconn="driver={mysql odbc 3.51 driver};port="+alltrim(dba_port)+;
";server="+alltrim(lcserver)+;
";database="+lcdatabase+;
";uid="+lcuser+;
";pwd="+lcpassword
sqlsetprop(0,"displogin",3)
lnhandle=sqlstringconnect(lcstringconn)
if lnhandle > 0
=sqlexec(lnhandle,strsql,"_tempocursor")
sqldisconnect(lnhandle)
else
=aerror(laerror)
messagebox("error al conectarse: "+chr(13)+;
"description:"+laerror[2])
endif
if this.dba_act=1
strsql="select * from _tempocursor "+" into cursor "+alltrim(p_tabres)+" readwrite"
&strsql
select _tempocursor
use
st="select "+alltrim(upper(this.dba_cursor))
&st
Endif
Endif
Tengo el siguiente código de conexión para ejecutar una sentencia sql. El problema es cuando llega a la línea que ejecuta la sentencia sql (la marqué en negrita y subrayado).
Me da el siguiente error "No se encuentra la variable 'ADOBOOKMARK'", posteriormente si le doy click a la opción "pasar por alto" me da el siguiente error "Error: Microsoft Cursor Engine: El proveedor de datos u otro servicio devolvió un estado E_Fail"
He revisado la sentencia y no está mala. Además revisé en todo el proyecto si por alguna parte había usado o declarado esa variable, pero no, en ningún lado la utilizo
¿Me gustaría saber un poco acerca de este error y por qué ocurre? Si sabes como solventarlo me gustaría que me ayudaras por favor, y Gracias
****Aquí está el código*****
if this.dba_mode=1
strsql=this.strsql
strsql=strtran(alltrim(upper(strsql)),"str_to_date(","")
strsql=strtran(alltrim(upper(strsql)),",'%d/%m/%y')","")
*!* creo una conexion ado
myconn=createobject('adodb.connection')
*!* need a client side cursor for this so that we get a recordcount
myconn.cursorlocation=3 && aduseclient
*!* open the data source
myconn.open("driver=microsoft visual foxpro driver;" + ;
"sourcetype=dbf;sourcedb="+this.dba_dir+ ";" + ;
"exclusive=no;backgroundfetch=no;null=no;collate=machine;ole db services = -4")
*!* create an ado recordset to be used as the datasource for the datacombo control
myrs=createobject('adodb.recordset')
*!* set the connection property of the recordset
myrs.activeconnection=myconn
*!* the recordset inherits the cursorlocation of the connection
myrs.locktype=3 && adlockoptimistic
myrs.open(strsql,,,,1)
if this.dba_act=1
** creamos el objeto cursor adapter
locursoradapter = createobject("cursoradapter")
** asignamos el nombre del cursor
locursoradapter.alias="_tempocursor"
** asignamos el tipo de datos que recibirá
locursoradapter.datasourcetype="ado"
** convertimos el recordset a un cursor de vfp
=locursoradapter.cursorfill(,,,myrs)
** desincorporamos el cursor, de el objeto cursoradapter
=locursoradapter.cursordetach()
** destruimos el cursoradapter
locursoradapter = null
st="select * from _tempocursor into cursor "+alltrim(upper(this.dba_cursor))+" readwrite"
&st
select _tempocursor
use
st="select "+alltrim(upper(this.dba_cursor))
&st
myrs.close
endif
myconn.close
endif
if this.dba_mode=2
lcserver=alltrim(this.dba_host)
lcdatabase=alltrim(this.dba_base)
lcuser =alltrim(this.dba_user)
lcpassword = alltrim(this.dba_pass)
dba_port=alltrim(this.dba_port)
p_tabres=alltrim(this.dba_cursor)
strsql=this.strsql
strsql=strtran(alltrim(upper(strsql)),'==','=')
strsql=strtran(alltrim(upper(strsql)),'.t.','1')
strsql=strtran(alltrim(upper(strsql)),'.f.','0')
strsql=strtran(alltrim(upper(strsql)),'\','\\')
strsql=strtran(strsql,"%d/%m/%y","%d/%m/%y")
strsql=strtran(strsql,"alltrim","trim")
lcstringconn="driver={mysql odbc 3.51 driver};port="+alltrim(dba_port)+;
";server="+alltrim(lcserver)+;
";database="+lcdatabase+;
";uid="+lcuser+;
";pwd="+lcpassword
sqlsetprop(0,"displogin",3)
lnhandle=sqlstringconnect(lcstringconn)
if lnhandle > 0
=sqlexec(lnhandle,strsql,"_tempocursor")
sqldisconnect(lnhandle)
else
=aerror(laerror)
messagebox("error al conectarse: "+chr(13)+;
"description:"+laerror[2])
endif
if this.dba_act=1
strsql="select * from _tempocursor "+" into cursor "+alltrim(p_tabres)+" readwrite"
&strsql
select _tempocursor
use
st="select "+alltrim(upper(this.dba_cursor))
&st
Endif
Endif
2 Respuestas
Respuesta de ingesoft
1
Respuesta de Cesar Enrique Yamunaque Baca
1