Estou desenvolvendo um aplicativo para ler um Banco Access chamado "DP5.mdb", Tabela "T_Pacientes", Campos "NOME" e "R_ENDERECO".
Banco conectado.
Tabela aberta, devidamente testada na Procedure OpenTable. Isto verifiquei pelo código das linhas 110 a 115.
Mas os dados não aparecem no Browse(). Nas linhas 61 a 64 mostra as minhas várias tentativas e nenhuma deu certo.
Onde está o meu Erro ?
Código: Selecionar todos
*
#include "AdoXb.prg"
*
#include "MiniGUI.ch"
#include "ado.ch"
#include "set.ch"
*
REQUEST HB_GT_WIN_DEFAULT && Janela DOS - Temporário para testes.
*
*
*==================================================================================================
FUNCTION Main()
*
LOCAL oError := ErrorBlock( { | oError | MyErrorFunc( oError ) } )
LOCAL nWinWidth := getdesktopwidth() * 0.8
LOCAL nWinHeight := getdesktopheight() * 0.8
PUBLIC nBrwWidth := nWinWidth-30
PUBLIC nBrwHeight := nWinHeight-60
PUBLIC caminho := ""
PUBLIC network := .T.
*
PUBLIC StrDatabas := cCliniPath + "DP5.MDB"
PUBLIC StrConnect := "Provider=Microsoft.ACE.OLEDB.12.0;Password='';Data Source=&StrDatabas;Persist Security Info=True"
*
PUBLIC oConexao, oRecSet, oBrw
*
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
HB_LANGSELECT("PT")
HB_CDPSELECT( "PT850" )
*
SET DATE TO BRIT
SET CENTURY ON
*
SET DATE BRITISH
SET CENTURY ON
SET DELETE ON
/// SET AUTOADJUST ON //NOBUTTONS
SET BROWSESYNC ON
SET NAVIGATION EXTENDED
/// SET AUTOZOOMING ON
*
*==================================================================================================
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH nWinWidth HEIGHT nWinHeight ;
TITLE 'PACIENTES' + str(nWinWidth) + STR(nWinHeight) ;
MAIN NOMAXIMIZE ;
ON INIT OpenTable() ;
ON RELEASE CloseTable()
*
@ 10,10 BROWSE T_Pacientes ;
WIDTH nBrwWidth ;
HEIGHT nBrwHeight ;
HEADERS { 'Nome' , 'Endere‡o' } ;
WIDTHS { 300 , 300 } ;
WORKAREA T_Pacientes ;
FIELDS { 'NOME', 'R_ENDERECO' }
/*======== Testei as linhas abaixo, uma por uma, e o aplicativo aborta, sem mensagem. =======
FIELDS { ('NOME'):value , ('R_ENDERECO'):value }
FIELDS { 'T_Pacientes->NOME', 'T_Pacientes->R_ENDERECO' }
FIELDS { oRecSet:Fiels('NOME'):value , oRecSet:Fiels('R_ENDERECO'):value }
FIELDS { oConexao:Fiels('NOME'):value , oConexao:Fiels('R_ENDERECO'):value }
*/
*
END WINDOW
*
CENTER WINDOW Form_1
*
Form_1.T_Pacientes.SetFocus
*
ACTIVATE WINDOW Form_1
*
RETURN( NIL )
*
*
*==================================================================================================
Procedure OpenTable
*
IF ! FILE( 'DP5.mdb' )
MsgStop( "Arquivo DP5 ausente ou inacess¡vel", "Erro", )
ENDIF
*
PUBLIC StrDatabas := cCliniPath + "DP5.MDB"
PUBLIC StrConnect := "Provider=Microsoft.ACE.OLEDB.12.0;Password='';Data Source=&StrDatabas;Persist Security Info=True"
*
PUBLIC oRecSet := TOLEAUTO():New( "ADODB.RecordSet" )
PUBLIC oGravarData := TOLEAUTO():New( "ADODB.Command" )
PUBLIC oConexao := TOleAuto():new( "ADODB.connection" )
*
oConexao:ConnectionString := StrConnect
oConexao:Open()
*
c_SeleStr := "SELECT " +;
'NOME, R_ENDERECO ' +;
'from T_Pacientes ' +;
'order by NOME '
*
WITH Object oRecSet
*
:CursorLocation := adUseClient
:CursorType := adOpenDynamic
:LockType := adLockOptimistic
:ActiveConnection := oConexao
:Source := c_SeleStr
:Open()
*
/*=============================== Este trecho abaixo mostra todos os registros tabela T_Pacientes.
WHILE .NOT. :Eof()
? :Fields( "NOME" ):Value
?? " | "
?? :Fields( "R_ENDERECO" ):Value
:MoveNext()
ENDDO
*/
*
END WITH
*
Return
*
*
*==================================================================================================
PROCEDURE CloseTable
*
USE
*
RETURN( NIL )
