sql firibird lib do Rodrigo Moreno

Forum sobre SQL.

Moderador: Moderadores

Avatar do usuário
jairfab
Usuário Nível 3
Usuário Nível 3
Mensagens: 252
Registrado em: 21 Mai 2007 09:43
Localização: São Paulo, Região Leste - Suzano

sql firibird lib do Rodrigo Moreno

Mensagem por jairfab »

Estou fazendo teste com sql base firibird utilizando a lib e dll do Rodrigo Moreno e, não estou conseguindo obter o resultado quando utilizo campo tipo data e campo que tem valor nul, campo valor e caracteres retorna o valor normal.

Gostaria de uma dica dos colegas que tem experiencia em sql e ou utiliza esta lib.

Exemplo:

Código: Selecionar todos

#include "common.ch"
 
Function main()
Local oServer, oQuery, oRow, i, x, aTables, aStruct, aKey
Local cServer := 'C:\DB\MEUBANCO.FDB'
Local cUser := 'sysdba'
Local cPass := 'masterkey'
Local nDialect := 1
Local cQuery
cls 
? "Connecting..."
oServer := TFBServer():New(cServer, cUser, cPass, nDialect)

if oServer:NetErr()
   ? oServer:Error()
   quit
end

sSQL := 'SELECT NroPla,'
sSQL += 'SlDetalhe_Valor '
sSQL += 'SLDETALHE_DTCOMP '
sSQL += 'SLDETALHE_DTLAN '
sSQL += "FROM CT WHERE NroPla >'622' "
oQuery := oServer:Query( sSQL )  // VIEW 

DO WHILE ! oQuery:Eof()
   oQuery:Skip()
   ?  oQuery:FieldGet( 1 ), oQuery:FieldGet( 2 ), oQuery:FieldGet( 3 ) , oQuery:FieldGet( 4 )
ENDDO

oQuery:Refresh()
oQuery:Destroy()
oServer:Destroy()

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
Avatar do usuário
jairfab
Usuário Nível 3
Usuário Nível 3
Mensagens: 252
Registrado em: 21 Mai 2007 09:43
Localização: São Paulo, Região Leste - Suzano

sql firibird lib do Rodrigo Moreno

Mensagem por jairfab »

Conseguir alterando a linha 8 de nDialect := 1 para nDialect := 3

Agora eu quero fazer uma consulta envolvendo duas ou mais tabela, alguem poderia me ajudar?
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
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

sql firibird lib do Rodrigo Moreno

Mensagem por alxsts »

Olá!

Se você lê inglês, estude pelos tutoriais SQL da w3schools: Introduction to SQL.

O link acima leva à introdução. Se preferir ir direto para a parte de Joins, acesse SQL Joins

TutoriaisSQLw3schools
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
jairfab
Usuário Nível 3
Usuário Nível 3
Mensagens: 252
Registrado em: 21 Mai 2007 09:43
Localização: São Paulo, Região Leste - Suzano

sql firibird lib do Rodrigo Moreno

Mensagem por jairfab »

Funcionou desta forma:

Código: Selecionar todos

#include "common.ch"
#include "Fileio.ch"  
#define CRLF CHR(13)+CHR(10)
// Incluir as libs : fbclient.lib firebird.lib
// Na pasta onde vai chamar o programa incluir a dll:  fbclient.dll

Function Main()
ndialect := 3 //1
cls

*--- conexao com o banco ---*
db := FBConnect("C:\orig.fdb", "sysdba", "masterkey")
if ISNUMBER(db)
   ? 'Error'
   quit
end
trans:= FBStartTransaction(db)

*--- string sql ---*
cSql := "SELECT FIRST 20 PLA.NROPLA,"
cSql += " PLA.CONTA,"
cSql += " PLA.DESC2,"
cSql += " PLA.DESCRICAO,"
cSql += " SL.GLCLI_NOME,"
cSql += " SL.SLDETALHE_VALOR,"
cSql += " (coalesce(SL.SLDETALHE_DTCOMP,''))"
cSql += " FROM SLDETALHE SL"

cSql += " INNER JOIN CFPLANO PLA" 
cSql += " ON SL.CFPLANO_NROPLA = PLA.NROPLA"
cSql += " ORDER BY SL.GLCLI_NOME"

vteste = FBQuery(db, cSql, ndialect, trans)

DO WHILE ( fetch_stat := FBFetch( vteste ) ) == 0
   X01:=FBGetData( vteste, 4 )
   X02:=FBGetData( vteste, 1 )
   X03:=FBGetData( vteste, 5 )
   X04:=FBGetData( vteste, 6 )
   ? X01 ,X02,X03,X04
ENDDO

set curs on
FBFree(vteste) //apaga query
FBClose(db)    //fecha db
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
Responder