Ok,
asi lo he dejado, solo para informacion del grupo .
------------------------------------------------------------ --------------------------------------------
IF CLPARA2='QUEJASD.CSV'
clFiltro="cliente='"+CLIENTE+"' and codigo='"+CODIGO+"' and
fecha='"+FECHA+"'"
ENDIF
clSqlDestino:filter("&clFiltro")
if clSqlDestino:Eof() .or. ClSqlDestino:bof()
clsqldestino:Addnew()
...Campos a Actualizar
clsqdestino:Update()
endif
------------------------------------------------------------ --------------------------------------------
Saludos
"Fernando Hernandez" <
dbfer@dilico.com.sv> escribió en el mensaje
news:4657a138$[email=
1@ozsrv2.ozlan.local...]
1@ozsrv2.ozlan.local...[/email]
> Buenas Noches
>
> Siguiendo con la busqueda con Ado, perdon por el mensaje anterior, el
> metodo que acepta varios campos es el SEEK y no el FIND como
> incorrectamente habia escrito, pero su uso (SEEK) depende del proveedor de
> la base de datos.
>
> ------------------------------------------------------------ ------------------------------------------------------------ -----------------------------------------
> METHOD: Recordset::Seek
>
> ------------------------------------------------------------ --------------------
>
> recordsetobject.Seek KeyValues, SeekOption
>
> The Seek method uses the provider to search using indexes to find a Record
> in a Recordset that matches the values specified in the KeyValues
> parameter. If a match occurs, the current record pointer will point to the
> matching record or where specified by the SeekOption parameter. If no
> match occurs, the current record pointer will be placed at the end of the
> Recordset.
>
> Very few providers support this method. The provider must support this
> method and the use of indexes on the Recordset (see the Index property).
> This method can only be used with server-side cursors.
> ------------------------------------------------------------ ------------------------------------------------------------ -----------------------------------------
>
> He visto en los fuentes el metodo LOCATE en adorecords.prg y veo que
> invoca el metodo FIND de ado, adjunto parte de un texto que he encontrado
> sobre este metodo (solo para ilustrar mi problema con los demas usuarios
> del foro). Existiria la posibilidad de agregar el metodo SEEK de ado, o en
> el peor de los casos se que tendré que usar el metodo FILTER para
> determinar si ya existe un registro en la base de datos antes de invocar
> el Metodo ADDNEW.
>
> Saludos
>
> ------------------------------------------------------------ ------------------------------------------------------------ -----------------------------------------
> METHOD: Recordset::Find
>
>
> ------------------------------------------------------------ --------------------
>
> recordsetobject.Find Criteria, SkipRecords, SearchDirection, Start
>
> The Find method is used to search a Recordset for a Record that matches
> the search criteria (a search string). This method will work if the
> Recordset supports bookmarks. If the search is successful, the current
> record pointer will be moved to point to the first Record that matches. If
> the search fails, the Recordset will point to either EOF or BOF.
>
> There is one mandatory and three optional parameters.
>
> The mandatory Criteria parameter is a string that defines the search
> criteria. This string must contain one field (column) name, one comparison
> operator, and a search value.
>
> You can only search on one field (column).
>
> The comparison operators in Criteria can only be one of the following:
>
> = > >= < <= <> LIKE
>
> You cannot use OR or AND.
> ------------------------------------------------------------ ------------------------------------------------------------ ------------------------------------------------------------ ------------------
>
>
> "Fernando Hernandez" <
dbfer@dilico.com.sv> escribió en el mensaje
> news:[email=
46575476@ozsrv2.ozlan.local...]
46575476@ozsrv2.ozlan.local...[/email]
>> Solo para agregar algo, antes de comenzar a desarrollar en Xailer el
>> software de Backoffice para la pocket PC, habia comenzado algo en Minigui
>> y xHarbour, lo que si recuerdo es que el metodo LOCATE de ado no me
>> funciono por lo que termine usando el metodo FIND, que si me permite
>> evaluar varios campos, podria ser posible agregar este metodo a la clase
>> TSQLTABLE.
>>
>> En espera de sus comentarios.
>>
>> "Fernando Hernandez" <
dbfer@dilico.com.sv> escribió en el mensaje
>> news:[email=
465752db@ozsrv2.ozlan.local...]
465752db@ozsrv2.ozlan.local...[/email]
>>> Buenas Tardes
>>>
>>> Estos con una rutina para poder incorporar la informacion de la pocket
>>> ya directamente a la base de datos en Oracle, pues bien uso el metodo
>>> locate, pero no me esta evaluando cuando le paso mas de 2 campos a
>>> comparar. con uno me funciona correcto. La informacion la leo de una
>>> tabla DBF. Existe algun problema en este metodo al evaluar mas de 1
>>> campo ?? Adjunto pantalla con el error mostrado tambien; sin embargo
>>> luego de mostrar el error, el programa continua con la rutina.
>>>
>>> En espera de sus comentarios.
>>>
>>> Adjunto parte del codigo.
>>>
>>> ------------------------------------------------------------ -----------------------------------------------------------
>>> WITH OBJECT clsqldestino := TSQLTable():New()
>>> :oDataSource := clSqlAdo
>>> :cProcess := "GENERAL"
>>> :nCursorType := adOpenDynamic
>>> :nLockType := adLockOptimistic
>>> :cTableName := ClPara5
>>> :Create()
>>> END
>>> clsqldestino:lOpen:=.T.
>>>
>>> Do While !eof()
>>> IF CLPARA2='QUEJASD.CSV'
>>>
>>> -- EN ESTA LINEA DA EL ERROR
>>> clFOund=iif(CLSQLDESTINO:locate("CLIENTE='"+mCliente+"' AND
>>> CODIGO='"+mCodigo+"'"),.t.,.f.)
>>> --
>>> ENDIF
>>> .....------------------------------------------------------- ------------------------------------------------------------ -
>>>
>>>
>>>
>>
>>
>
>