FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour oRs:Find() ado en dos campos, sobre xbrowse, como?
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
oRs:Find() ado en dos campos, sobre xbrowse, como?
Posted: Fri Jan 19, 2024 02:03 AM
Hola buenas noches para todos

Cuando hacemos una búsqueda sobre un recorset con el metodo find(), en un campo funciona correctamente.
Code (fw): Select all Collapse
oBrwFt:goTop()
oRsFtr:Find("ll_consec="+alltrim(cFcEn))
oBrwFt:refresh()
Ahora nos surge la necesidad de buscar en dos campos a la vez, lo intentamos de la siguiente manera, pero sale error
Code (fw): Select all Collapse
oBrwFt:goTop()
oRsFtr:Find("ll_consec="+alltrim(cFcEn)+" AND ll_docume="+alltrim(cFcDc))
oBrwFt:refresh()
Devuelve el siguiente error:
Code (fw): Select all Collapse
Application
===========
   Path and name: C:\DLYMA\hymlyma.exe (32 bits)
   Size: 9,043,456 bytes
   Compiler version: xHarbour 1.3.0 Intl. (SimpLex) (Build 20231104)
   FiveWin  version: FWH 23.10
   C compiler version: Borland/Embarcadero C++ 7.7 (32-bit)
   Windows 8 64 Bits, version: 6.2, Build 9200 

   Time from start: 0 hours 0 mins 16 secs 
   Error occurred at: 18/01/2024, 20:59:27
   Error description: Error ADODB.RecordSet/6  DISP_E_UNKNOWNNAME: FIND
   Args:
     [   1] = C   ll_consec=60914 AND ll_docume=009

Stack Calls
===========
   Called from:  => TOLEAUTO:FIND( 0 )
   Called from: z:\prg\R32_fact.prg => SERVICIONOTARIAS( 15675 )
   Called from: z:\prg\R32_fact.prg => (b)FFACTURAS( 607 )
   Called from: .\source\classes\URLLINK.PRG => TURLLINK:LBUTTONDOWN( 180 )
   Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1848 )
   Called from: .\source\classes\URLLINK.PRG => TURLLINK:HANDLEEVENT( 168 )
   Called from: .\source\classes\WINDOW.PRG => _FWH( 3651 )
   Called from:  => WINRUN( 0 )
   Called from: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE( 1113 )
   Called from: z:\prg\R32_menu.prg => VTNAPRINCIPAL( 895 )
   Called from: z:\prg\R32_menu.prg => MAIN( 141 )
Alguien sabe como se debe hacer la busqueda sobre un recorset en dos campos?
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: oRs:Find() ado en dos campos, sobre xbrowse, como?
Posted: Fri Jan 19, 2024 03:12 AM

Leandro:

Podrías hacerlo desde el SELECT con la clausula LIKE, no se si te sirva?

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: oRs:Find() ado en dos campos, sobre xbrowse, como?
Posted: Fri Jan 19, 2024 12:40 PM

Leandro:

Sin conocer ADO te consulto, de que tipo de datos son cFcEn y cFcDc?

Te pregunto por si incluyes en ellas las comillas

Posts: 851
Joined: Sun Nov 09, 2014 05:01 PM
Re: oRs:Find() ado en dos campos, sobre xbrowse, como?
Posted: Fri Jan 19, 2024 02:57 PM
leandro,

Yo hago las busquedas por 2 o mas campos asi:
Code (fw): Select all Collapse
cQuery := "SELECT * from "+cTabla+" WHERE CONCAT (descripcion, codigo_fabrica)  LIKE '%"+cSeek+"%'  ORDER BY descripcion;"
la variable cSeek es un input donde el usuario ingresa bien sea la descipcion o el codigo a buscar.
creo que puede servirte.
"Los errores en programación, siempre están entre la silla y el teclado..."



Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin



Carora, Estado Lara, Venezuela.
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: oRs:Find() ado en dos campos, sobre xbrowse, como?
Posted: Fri Jan 19, 2024 07:52 PM

Armando y José, muchas gracias por las respuestas, pero necesitamos hacer la búsqueda sobre el recorset, ya que luego de eso se genera una acción que crea un objeto con base en la información del row, específicamente el que esta seleccionado.

Cesar

Son el código de comprobante y el numero de una factura. Ya también probamos colocándolo dentro de comillas pero devuelve el mismo error.

Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: oRs:Find() ado en dos campos, sobre xbrowse, como?
Posted: Fri Jan 19, 2024 07:54 PM

De momento encontramos la solución, para el proceso nuevo, buscando sobre el campo del id de la tabla de las facturas.

Pero la verdad es que nos gustaría también incluir la búsqueda por los dos campos, para hacer otro tipo de procesos.

Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 49
Joined: Wed Apr 18, 2007 06:01 PM
Re: oRs:Find() ado en dos campos, sobre xbrowse, como?
Posted: Fri Jan 19, 2024 10:05 PM
Hola Leandro,

Se me ocurre que conviertas a un Hash el recordset
algo así, esta hecho al vuelo no se si funciona.

Code (fw): Select all Collapse
  cBusqueda:="ll_consec="+alltrim(cFcEn)
  hhash    :={ => }
  
  oRs:MoveFirst() /// Voy al primero
  
 for i=0 to oRs:fields:count-1
     cCampo:=oRs:fields(i):name
     uValue:=oRs:fields(i):value
     hhash[cCampo]:=uValue 
 next i

   Msginfo( hhash[cBusqueda]) )
José David Angulo

Auditoria y Sitemas Ltda.

Cartagena Colombia
Posts: 842
Joined: Mon Oct 10, 2005 01:29 PM
Re: oRs:Find() ado en dos campos, sobre xbrowse, como?
Posted: Mon Jan 22, 2024 08:27 AM

Hello

ors:Find() only works with one field.

If I need more fields use the Filter function

oRs:Filter = "ll_consec="+alltrim(cFcEn)+" AND ll_docume="+alltrim(cFcDc)

 IF oRs:RecordCount() == 0



 ENDIF

 oRs:Filter := "

Maurizio "

Continue the discussion