Um fonte para os testes:
#include "inkey.ch"
PROCEDURE Main
LOCAL oConexao, oRecordset, oElement, cSql, nCont, nCont2, nKey
LOCAL aCmdList := Array(10)
SetMode( 40, 100 )
FOR EACH oElement IN aCmdList
oElement := Space(90)
NEXT
oConexao := win_OleCreateObject( "ADODB.Connection" )
oConexao:ConnectionString := ADSString( hb_cwd() )
oConexao:Open()
DO WHILE .T.
CLS
@ 1, 0 SAY ""
FOR EACH oElement IN aCmdList
@ Row() + 1, 1 GET oElement
NEXT
READ
IF LastKey() == K_ESC
EXIT
ENDIF
cSql := ""
FOR EACH oElement IN aCmdList
cSql := cSql + Trim( oElement ) + " "
NEXT
//BEGIN SEQUENCE WITH __BreakBlock()
oRecordset := oConexao:Execute( cSql )
//END SEQUENCE
IF oRecordset == NIL
LOOP
ENDIF
nKey := 0
DO WHILE nKey != K_ESC .AND. .NOT. oRecordset:Eof()
FOR nCont = 1 TO oRecordset:Fields:Count()
?? oRecordset:Fields( nCont - 1 ):Value
NEXT
?
nKey := Inkey()
oRecordset:MoveNext()
ENDDO
oRecordset:Close()
oRecordset := NIL
Inkey(0)
ENDDO
oConexao:Close()
RETURN
FUNCTION ADSString( cPath )
LOCAL cString
cString := "Provider=Advantage.OLEDB.1;Mode=Share Deny None;" + ;
"Show Deleted Records in DBF Tables with Advantage=False;" + ;
"Data Source=" + cPath + ";Advantage Server Type=ADS_Local_Server;" + ;
"TableType=ADS_CDX;Security Mode=ADS_IGNORERIGHTS;" + ;
"Lock Mode=Compatible;Use NULL values in DBF Tables with Advantage=True;" + ;
"Exclusive=No;Deleted=No;"
RETURN cString
O comando digitado:
select cdcidade, cduf, cdcep from jpcadas
o resultado na tela:
SAO JOSE DOS CAMPOS SP12237-823
DIADEMA SP09920-578
SAO PAULO SP02284-000
SAO PAULO SP04794-000
RIBEIRAO PIRES SP09403-100
SAO PAULO SP03694-000
BARUERI SP06433-190
SAO PAULO SP02130-020
SAO PAULO SP02133-010
SAO PAULO SP04578-000
ATIBAIA SP12954-260
SAO PAULO SP04222-020
GUARULHOS SP07013-000
SUZANO SP08676-010
SAO PAULO SP08115-100
TABOAO DA SERRA SP06785-300
COTIA SP06709-046
SANTOS SP11045-906
SAO PAULO SP04794-000
SAO PAULO SP02520-000
TABOAO DA SERRA SP06763-230
SAO PAULO SP02283-000
SAO PAULO SP04829-280
OSASCO SP06223-200
RIBEIRAO PIRES SP09412-000
SAO PAULO SP00000-000
SAO PAULO SP05802-140
SAO PAULO SP08115-000
GUARULHOS SP07176-000
OSASCO SP06290-180
COTIA SP06713-100
SAO PAULO SP04133-300
TABOAO DA SERRA SP06768-000
SAO PAULO SP04662-003
SAO PAULO SP05083-030
PIEDADE SP18170-000
COTIA SP06709-046
SAO PAULO SP01220-020
SANTO ANDRE SP09260-510
Outro comando:
select count(*) AS qtd, cdcidade from jpcadas group by cdcidade
Outro resultado:
1STO ANTONIO D PINHAL
2SUMARE
35SUZANO
23TABOAO DA SERRA
1TAGUATINGA
1TANGUA
2TATUI
5TAUBATE
1TEIXEIRA DE FREITAS
2TEOFILO OTONI
1TERESINA
2TERESOPOLIS
1TIMOTEO
1TRAMANDAI
1TRES RIOS
1TUPA
1UBERABA
5UBERLANDIA
2UMUARAMA
1URUACU
1URUGUAIANA
1VACARIA
1VALINHOS
1VARGEM GRANDE DO SUL
4VARGEM GRANDE PAULIST
4VARZEA PAULISTA
1VENANCIO AIRES
2VIAMAO
2VICOSA
1VILA QUILHERME
1VILA VELHA
1VINHEDO
4VITORIA
2VITORIA DA CONQUISTA
1VL MARIA
2VOLTA REDONDA
2VOTORANTIM
2VOTUPORANGA
1XAXIM
No DBF, dentre outros campos:
CDCIDADE, C, 21
CDUF, C, 2
CDCEP, C, 9
É brincar com SQL usando DBFs.