Página 1 de 1

sql firibird lib do Rodrigo Moreno

Enviado: 18 Mar 2015 15:45
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


sql firibird lib do Rodrigo Moreno

Enviado: 19 Mar 2015 13:32
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?

sql firibird lib do Rodrigo Moreno

Enviado: 19 Mar 2015 13:49
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

sql firibird lib do Rodrigo Moreno

Enviado: 20 Mar 2015 13:29
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