Busquedas con base de datos en Access y ADORDD

Post Reply
jfafive
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Busquedas con base de datos en Access y ADORDD

Post by jfafive »

Hola,

Estoy trabajando con una base de datos en access que la abro así:

REQUEST ADORDD
USE datos.mdb VIA "ADORDD" TABLE "clientes"

BROW()

Pero ahora quiero realizar una busqueda por un campo.
:?

¿hay que acceder al campo clave o hay que indexar como se hacia con dbf?
La verdad es que estoyu algo perdido.
:cry:
User avatar
Antonio Linares
Site Admin
Posts: 42660
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 69 times
Been thanked: 96 times
Contact:

Post by Antonio Linares »

Javier,

Prueba a usar LOCATE como se usa con las DBFs tradicionales (cuando no usamos índices).
regards, saludos

Antonio Linares
www.fivetechsoft.com
jfafive
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Probando con LOCATE

Post by jfafive »

Antonio, he probado con LOCATE, pero siempre me devuelve falso:

USE DATABASE\presugen.mdb VIA "ADORDD" TABLE "clientes" ALIAS "CLIENTES"

CLIENTES->(DbGoTop())
LOCATE FOR CC="1452"
lVal := CLIENTES->(Found())
MsgAlert( lVal )

El valor 1452, existe y el campo cc es numerico.
Enrrique Vertiz
Posts: 560
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru
Been thanked: 3 times
Contact:

Post by Enrrique Vertiz »

Creo que en el caso de busqueda de valores numericos debes omitir las comillas, solo busca el numero
Espero funcione
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23.1026X, Fwh 25.01, BCC74, MySQL 8.0.X, SQLLIB 1.9m
jfafive
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Post by jfafive »

Curioso...

He hecho la siguiente prueba.
He puesto un RecNo() antes del locate y otro despues.

El primero, me muestra un 1 (logico pues antes he hecho un DbGoTop())
Despues de locate, me muestra un 2(que es el registro de la busqueda)

La base de datos tiene 5 registros, por lo que no hay posibilidad de que fuera un EoF()

Sin envargo, la funcion Found() me sigue devolviendo .F. en cualquier caso.

Alguna pista??? :shock:
User avatar
Antonio Linares
Site Admin
Posts: 42660
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 69 times
Been thanked: 96 times
Contact:

Post by Antonio Linares »

Javier,

Hay que añadir Found() en ADORDD.prg de la siguiente manera:

Code: Select all | Expand

...
#define WA_FOUND     15

#define WA_SIZE      15
...
static function ADO_LOCATE( nWA, lContinue )

   local aWAData    := USRRDD_AREADATA( nWA )
   local oRecordSet := aWAData[ WA_RECORDSET ]

   oRecordSet:Find( aWAData[ WA_SCOPEINFO ][ UR_SI_CFOR ], If( lContinue, 1, 0 ) )
   aWAData[ WA_FOUND ] = ! oRecordSet:EOF
   aWAData[ WA_EOF ] = oRecordSet:EOF

return SUCCESS
...
static function ADO_FOUND( nWA, lFound )

   local aWAData := USRRDD_AREADATA( nWA )

   lFound = aWAData[ WA_FOUND ]

return SUCCESS
...
   aAdoFunc[ UR_FOUND ]        := ( @ADO_FOUND() )

Pruébalo y me comentas. Si te resulta lioso, envíame por email (como ZIP) el fichero adordd.prg que estás usando y lo modificamos aqui y te lo volvemos a enviar. Gracias
regards, saludos

Antonio Linares
www.fivetechsoft.com
jfafive
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Post by jfafive »

Ahora SI devuelve .T. o .F.
Ahora lo encuentra.

Gracias Antonio.
De paso he vuelto a usar el TLIB.EXE que lo tenia olvidado. :wink:
User avatar
Antonio Linares
Site Admin
Posts: 42660
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 69 times
Been thanked: 96 times
Contact:

Post by Antonio Linares »

bien! :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
jfafive
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Post by jfafive »

Hola Antonio,

Veo que si hago la busqueda con la siguiente sintaxis:

LOCATE FOR CLIENTES->CC = 1001

Me devuelve el siguiente error:

He ido al codigo fuente y he visto la linea 592, pero no se como meterle mano.Parece un conflicto con el uso del area de trabajo o alias.

Una ayudita?

Application
===========
Path and name: C:\FWH\bin\g.exe (32 bits)
Size: 1,188,864 bytes
Time from start: 0 hours 0 mins 2 secs
Error occurred at: 04/09/08, 23:00:01
Error description: Error ADODB.Recordset/6 DISP_E_UNKNOWNNAME: FIND
Args:
[ 1] = C CLIENTES->CC = 1001
[ 2] = N 0

Stack Calls
===========
Called from: => TOLEAUTO:FIND(0)
Called from: adordd.prg => ADO_LOCATE(592)
Called from: => __DBLOCATE(0)
Called from: G.prg => FBUSCACC(76)
Called from: G.prg => (b)FESTUDIOECO(51)
Called from: => TGET:LVALID(0)
Called from: => TGET:FWLOSTFOCUS(0)
Called from: => TCONTROL:HANDLEEVENT(0)
Called from: => TGET:HANDLEEVENT(0)
Called from: .\source\classes\WINDOW.PRG => _FWH(0)
Called from: => SYSREFRESH(0)
Called from: => TCONTROL:KEYCHAR(0)
Called from: => TGET:KEYCHAR(0)
Called from: => TWINDOW:HANDLEEVENT(0)
Called from: => TCONTROL:HANDLEEVENT(0)
Called from: => TGET:HANDLEEVENT(0)
Called from: .\source\classes\WINDOW.PRG => _FWH(0)
Called from: => DIALOGBOX(0)
Called from: => TDIALOG:ACTIVATE(0)
Called from: G.prg => FESTUDIOECO(56)
Called from: G.prg => (b)MAIN(27)
Called from: => TBTNBMP:CLICK(0)
Called from: => TBTNBMP:LBUTTONUP(0)
Called from: => TWINDOW:HANDLEEVENT(0)
Called from: => TCONTROL:HANDLEEVENT(0)
Called from: => TBTNBMP:HANDLEEVENT(0)
Called from: .\source\classes\WINDOW.PRG => _FWH(0)
Called from: => WINRUN(0)
Called from: => TWINDOW:ACTIVATE(0)
Called from: G.prg => MAIN(36)

System
======
CPU type: Intel(R) Core(TM)2 Duo CPU E6550 @ 2.33GHz 2333 Mhz
Hardware memory: 2048 megs

Free System resources: 90 %
GDI resources: 90 %
User resources: 90 %

Compiler version: Harbour devel build 1.1-1 Intl.
Windows version: 5.1, Build 2600 Service Pack 2

Windows total applications running: 29
1 M
2 Default IME
3 Menú desplegable de Autosugerir
4 CiceroUIWndFrame
5 SysFader
6 TF_FloatingLangBar_WndTitle
7 Dialog
8 PresuGen, apliación para la generación y cálculo de presupuestos
9 MS-DOS
10 Java Sys Tray
11 theAwtToolkitWindow
12 Connections Tray
13 MCI command handling window
14 Client:{A534759F-A612-4cf7-BA15-D022203D2DD1}
15 Acrobat IEHelper
16 DDE Server Window
17 Server:{A534759F-A612-4cf7-BA15-D022203D2DD1}
18 SMax4PNP
19 Medidor de energía
20 MS_WebcheckMonitor
21 MediaCenter
22 McAgent_Main_Hidden_Window
23 AEBalloonTip
24 Vtune
25 SoundMax4
26 NVSVCPMMWindowClass
27 GDI+ Window
28 ::. Santander .:: - Windows Internet Explorer
29 Program Manager

Variables in use
================
Procedure Type Value
==========================
TOLEAUTO:FIND
Param 1: C "CLIENTES->CC = 1001"
Param 2: N 0
Local 1: C "ADODB.Recordset"
Local 2: N 0
ADO_LOCATE
Param 1: N 1
Param 2: L .F.
Local 1: A Len: 15
Local 2: O Class: TOLEAUTO
__DBLOCATE
Param 1: B {|| ... }
Param 2: U
Param 3: U
Param 4: U
Param 5: L .F.
FBUSCACC
Param 1: N 5
Local 1: U
(b)FESTUDIOECO
Param 1: O Class: TGET
TGET:LVALID
Local 1: O Class: TGET
Local 2: L .T.
TGET:FWLOSTFOCUS
Param 1: N 721504
Local 1: O Class: TGET
Local 2: U
Local 3: U
TCONTROL:HANDLEEVENT
Param 1: N 2057
Param 2: N 721504
Param 3: N 0
Local 1: O Class: TGET
TGET:HANDLEEVENT
Param 1: N 2057
Param 2: N 721504
Param 3: N 0
Local 1: O Class: TGET
Local 2: U
_FWH
Param 1: N 0
Param 2: N 2057
Param 3: N 721504
Param 4: N 0
Param 5: N 6
Local 1: O Class: TGET
SYSREFRESH
TCONTROL:KEYCHAR
Param 1: N 13
Param 2: N 18612225
Local 1: O Class: TGET
Local 2: U
Local 3: U
Local 4: U
Local 5: U
TGET:KEYCHAR
Param 1: N 13
Param 2: N 18612225
Local 1: O Class: TGET
Local 2: U
Local 3: U
Local 4: U
Local 5: U
Local 6: U
TWINDOW:HANDLEEVENT
Param 1: N 258
Param 2: N 13
Param 3: N 18612225
TCONTROL:HANDLEEVENT
Param 1: N 258
Param 2: N 13
Param 3: N 18612225
Local 1: O Class: TGET
TGET:HANDLEEVENT
Param 1: N 258
Param 2: N 13
Param 3: N 18612225
Local 1: O Class: TGET
Local 2: U
_FWH
Param 1: N 18612225
Param 2: N 258
Param 3: N 13
Param 4: N 18612225
Param 5: N 6
Local 1: O Class: TGET
DIALOGBOX
Param 1: N 4194304
Param 2: C "ID_DIALOGO1"
Param 3: N 3342670
Param 4: O Class: TDIALOG
TDIALOG:ACTIVATE
Param 1: U
Param 2: U
Param 3: B {|| ... }
Param 4: L .T.
Param 5: U
Param 6: L .T.
Param 7: U
Param 8: U
Param 9: U
Param 10: L .F.
Local 1: O Class: TDIALOG
Local 2: N 3342670
Local 3: U
Local 4: U
Local 5: S
Local 6: O Class: TDIALOG
FESTUDIOECO
Local 1: O Class: TDIALOG
Local 2: O Class: TGET
Local 3: N 5
(b)MAIN
Param 1: O Class: TBTNBMP
TBTNBMP:CLICK
Local 1: O Class: TBTNBMP
TBTNBMP:LBUTTONUP
Param 1: N 50
Param 2: N 72
Local 1: O Class: TBTNBMP
Local 2: U
Local 3: L .T.
TWINDOW:HANDLEEVENT
Param 1: N 514
Param 2: N 0
Param 3: N 3276872
TCONTROL:HANDLEEVENT
Param 1: N 514
Param 2: N 0
Param 3: N 3276872
Local 1: O Class: TBTNBMP
TBTNBMP:HANDLEEVENT
Param 1: N 514
Param 2: N 0
Param 3: N 3276872
Local 1: O Class: TBTNBMP
_FWH
Param 1: N 3276872
Param 2: N 514
Param 3: N 0
Param 4: N 3276872
Param 5: N 3
Local 1: O Class: TBTNBMP
WINRUN
Param 1: N 3342670
TWINDOW:ACTIVATE
Param 1: C "MAXIMIZED"
Param 2: U
Param 3: U
Param 4: U
Param 5: U
Param 6: U
Param 7: U
Param 8: U
Param 9: U
Param 10: U
Param 11: U
Param 12: U
Param 13: U
Param 14: U
Param 15: U
Param 16: U
Param 17: U
Param 18: U
Param 19: U
Local 1: O Class: TWINDOW
Local 2: U
Local 3: U
MAIN
Local 1: O Class: TWINDOW
Local 2: O Class: TBAR
Local 3: O Class: TICON
Local 4: U

Linked RDDs
===========
DBF
DBFFPT
DBFBLOB
DBFNTX
ADORDD

DataBases in use
================

1: => CLIENTES RddName: ADORDD
==============================
RecNo RecCount BOF EOF
1 4 .F. .F.

Indexes in use TagName

Relations in use

Classes in use:
===============
1 ERROR
2 HBCLASS
3 HBOBJECT
4 TWINDOW
5 TCONTROL
6 TICON
7 TBRUSH
8 TFONT
9 TBAR
10 TRECT
11 TBTNBMP
12 TMSGBAR
13 TDIALOG
14 TGET
15 GET
16 TCLIPGET
17 TBUTTON
18 TOLEAUTO
19 TREG32

Memory Analysis
===============
101 Static variables

Dynamic memory consume:
Actual Value: 0 bytes
Highest Value: 0 bytes

jlmartinez
Posts: 1
Joined: Sat Feb 28, 2009 8:25 am

Re: Busquedas con base de datos en Access y ADORDD

Post by jlmartinez »

jfafive:

¿Conseguiste solucionar este error?

me está pasando lo mismo

gracias1000
José Luis
jfafive
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Re: Busquedas con base de datos en Access y ADORDD

Post by jfafive »

No,

al final seguí trabajando con DBF.

Salu2
Javier,
FWH 8.04 2008
User avatar
Willi Quintana
Posts: 1025
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú
Contact:

Re: Busquedas con base de datos en Access y ADORDD

Post by Willi Quintana »

Prueba asi:
USE DATABASE\presugen.mdb VIA "ADORDD" TABLE "clientes" ALIAS "CLIENTES"

CLIENTES->(DbGoTop())
LOCATE FOR CC="1452"
lVal := CC="1452"
MsgAlert( lVal )


Salu2
Post Reply