KKKKKK os recursos exixtem para serem utilizados alguns utilizama de uma forma outros de outras formas, mas para mim, isto não parece desperdÃcio, quem quiser pode escrever este mesmo código e depois fazer a sua própria analise.
OBS: Este mesmo código serve para dbf ;
Para banco de dados tipo mysql , mariadb ;
Precisa trocar a conexão pra acessar os banco de dados, mas o restante não muda!
A parte de oRec:seek(), oRec:gotop(), oDbf:Blank(), oDbf:Append() e a maioria dos comando que estamos acostumados a utilizar em dbf estao presente nestas class simplesmente para compatibilizar a utilização em dbf e sgdb. No entanto isto não impede de utilizarmos comando nativo sql.
Tipo: oTable:Append( "FILENAME,PHOTO", { cFile, MEMOREAD( cFile ) } ) ou oTable:Update( "FILENAME,PHOTO", { cFile, MEMOREAD( cFile ) } )
oCn:Insert( "reservations", "start,end,name,room_id,status,paid", aData, .T. ) ou oCn:Upsert( "reservations", "start,end,name,room_id,status,paid", aData )
Entre outras tantas formas que já conhecemos no sql ...
O que eu posso afirmar seria a redução do tamanho do código que temos de escrever sem considerar a compatibilidade com alguns tipos de sgdb, eu so tenho a agradecer o Antonio Linhares por ter criados estas class maravilhosas pois com as mesmsas facilitou o meu trabalho no minimo em 70% ....
Exemplo: inclusão e alteração
function teste( lTipo )
Local oDlg, oFont, oRec
oRec := TDataBase():Open( nil, "c:\fwh\samples\states.dbf", "DBFCDX", .t. ) // Abertura do banco de dados
DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14 // Definicao da fonte
DEFINE DIALOG oDlg SIZE 400,240 PIXEL TRUEPIXEL FONT oFont TITLE If( lTipo , "Inclusão", "Alteração" ) // Criacao da janela
@ 040,030 SAY "Codigo :" GET oRec:ID SIZE 100,24 PIXEL PICTURE "999999" READONLY
@ 070,030 SAY "Nome :" GET oRec:Name SIZE 300,24 PIXEL
@ 100,030 SAY "Cidade :" GET oRec:City SIZE 300,24 PIXEL
@ 160,030 BTNBMP PROMPT "Gravar" SIZE 100,40 PIXEL OF oDlg FLAT ACTION ( oRec:Save(), oDlg:End() ) // Gravar e Fechar a janela
@ 160,270 BTNBMP PROMPT "Cancelar" SIZE 100,40 PIXEL OF oDlg FLAT ACTION ( oDlg:End() ) // Fechar a janela
ACTIVATE DIALOG oDlg CENTERED ON PAINT oDlg:Box( 20, 10, 150, 390 )
RELEASE FONT oFont
oRec:Close()
return nil
Delpji 7, harbour 3.2, xharbour 1.2.3, Bcc7, Minigw, Minigui 19.11, hwgui 2.20, FiveWin 19.05 Gtwvw, Gtwvg, C# VS 2017