Deu sinal de vida
#include "hwgui.ch"
Function Main
Local oMainWindow
INIT WINDOW oMainWindow MAIN TITLE "Example" ;
AT 200,0 SIZE 400,150
MENU OF oMainWindow
MENUITEM "&Exit" ACTION hwg_EndWindow()
MENUITEM "&Dialog" ACTION DlgGet()
ENDMENU
ACTIVATE WINDOW oMainWindow
Return Nil
STATIC FUNCTION DlgGet()
LOCAL oModDlg, oBrw1, cnSQL
cnSQL := win_OleCreateObject( "ADODB.Recordset" )
cnSQL:Open( hb_cwd() + "teste.ado" )
INIT DIALOG oModDlg TITLE "Licenças" AT 0,0 SIZE 1024,768
@ 1,1 BROWSE oBrw1 SIZE 1022,700 ;
STYLE WS_BORDER + WS_VSCROLL + WS_HSCROLL
@ 500,720 OWNERBUTTON ON CLICK {|| hwg_EndDialog()} ;
SIZE 180,36 FLAT ;
TEXT "Close" COLOR hwg_ColorC2N("0000FF")
oBrw1:aarray := cnSQL
oBrw1:AddColumn( HColumn():New( "Codigo", { |v,o| (v), o:aArray:Fields( "CODIGO" ):Value },"C",6,0,.F.,DT_CENTER ) )
oBrw1:AddColumn( HColumn():New( "Nome", { |v,o| (v), o:aArray:Fields( "NOME" ):Value }, "C",30,0,.T.,DT_CENTER,DT_RIGHT ) )
oBrw1:aColumns[2]:lResizable := .F.
oBrw1:bSkip := { |o,nSkip| ADOSkipper( o:aArray, nSkip ) }
oBrw1:bGotop := { |o| o:aArray:MoveFirst() }
oBrw1:bGobot := { |o| o:aArray:MoveLast() }
oBrw1:bEof := { |o| o:aArray:Eof() }
oBrw1:bBof := { |o| o:aArray:Bof() }
oBrw1:bRcou := { |o| o:aArray:RecordCount() }
oBrw1:bRecno := { |o| o:aArray:AbsolutePosition }
oBrw1:bGOTO := { |o,n| (o),o:aArray:Move( n ) }
ACTIVATE DIALOG oModDlg
Inkey(10)
Return Nil
FUNCTION ADOSkipper( cnSQL, nSkip )
LOCAL nRec := cnSQL:AbsolutePosition()
IF ! cnSQL:Eof()
cnSQL:Move( nSkip )
IF cnSQL:Eof()
cnSQL:MoveLast()
ENDIF
IF cnSQL:Bof()
cnSQL:MoveFirst()
ENDIF
ENDIF
RETURN cnSQL:AbsolutePosition() - nRec
Gravei isto, é o que aparece na tela:
PROCEDURE PTESRSADO
LOCAL cnSQL := ADOClass():New()
LOCAL cLetra
WITH OBJECT cnSQL
:RsCreate( { ;
{ "CODIGO", "C", 5, 0 } , ;
{ "NOME", "C", 30, 0 } } )
FOR EACH cLetra IN { "A", "B", "C", "D", "E", "F" }
:AddNew()
:Fields( "CODIGO" ):Value := Asc( cLetra )
:Fields( "NOME" ):Value := Replicate( cLetra, 30 )
:Update()
NEXT
cnSQL:Rs:Save( "teste.ado" )
cnSQL:Close()
ENDWITH
O erro até dá pra considerar normal no ADO, porque ADO NÃO deixa acessar quando Eof(), ao contrário do DBF.
Justamente minha classe é pra evitar esse tipo de problema.
Só não sei dizer se deveria acontecer ou não.
Pelo menos mostrou o conteúdo, e deu erro depois.