Jump to content
Fivewin Brasil

Conectar com Firebird


elitenet

Recommended Posts

Caros Amigos

Preciso de uma classe que eu consiga conectar a Firebird somente para ler varias tabelas.

Ja tentei com os exemplos encontrados aqui no forum, o Todbc conecta mas da erro na tdbodbcdirect.

Com adordd não consegui achar os .ch para compilar junto.

274082_100000139180259_6365851_q.jpg

Muriaé-MG

FWH 2.6/XHARBOUR/C/C++/JAVA/DELPHI/MYSQL/FIREBIRD

Link to comment
Share on other sites

Caros Amigos

Preciso de uma classe que eu consiga conectar a Firebird somente para ler varias tabelas.

Ja tentei com os exemplos encontrados aqui no forum, o Todbc conecta mas da erro na tdbodbcdirect.

Com adordd não consegui achar os .ch para compilar junto.

274082_100000139180259_6365851_q.jpg

Muriaé-MG

FWH 2.6/XHARBOUR/C/C++/JAVA/DELPHI/MYSQL/FIREBIRD

Link to comment
Share on other sites

Alguém mais se habilita?

Estou tentando com a rotina abaixo e da erro no todbcdirect.


local aData := {}

Local nFor,cCampo:=1,aNome:={}

Local oLbx, cItem

Local btnPrc, btnAdc, btnAlt, btnExc, btnImp, btnsai

LOCAL cConStr := "HERMES;UID=sysdba;PWD=masterkey;DRIVER=Firebird/InterBase® driver"

public oOdbc, oDbf, oDlg2

DEFAULT bPrc := { || RecPrc( oLbx ) },;

bAdc := { || RecInc( oLbx ) },;

bAlt := { || RecAlt( oLbx ) },; // C:\Progs\Exemplos_Five\MDB\mdb1

bExc := { || RecExc( oLbx ) },;

bImp := { || RecImp( oLbx ) },;

bSai := { || oDlg2:End() }

SET 3D LOOK ON

oOdbc := TOdbc():New( cConStr ) // "HERMES", "masterkey", "SYSDBA" )

// Conectando ao MDB

// oODBC := TODBC():NEW( cConStr )

If !oOdbc:lSuccess

oOdbc:ShowErrorList("Erro na conexão")

oOdbc:End()

return nil

Endif

oDbf := oOdbc:Query( 'SELECT * FROM BRINDE' )

//oDbf := TDbOdbcDirect():new( , oOdbc)

if oOdbc:IsError()

oOdbc:ShowErrorList()

oOdbc:aErrors := {}

oDbf:End()

return nil

endif

id=code>id=code>

274082_100000139180259_6365851_q.jpg

Muriaé-MG

FWH 2.6/XHARBOUR/C/C++/JAVA/DELPHI/MYSQL/FIREBIRD

Link to comment
Share on other sites

Elitenet esse é um exemplo conectando ao access, voce chegou a testar a sua ODBC?


#include "FiveWin.ch"

#include "sql.ch"

oOdbc := TOdbc():New("Amostra", " ", "")

If !oOdbc:lSuccess

oOdbc:ShowErrorList("ODBC session not successfully initialized, aborting...")

oOdbc:End()

return nil

Else

MsgWait("Aguarde conectando ao banco de dados!","Conexão",0.5)

Endif

id=code>id=code>

No meu caso "Amostra" é o nome da ODBC e não tem usuário e senha se tiver tem que colocar como abaixo.

oOdbc := TOdbc():New("odbc", "usuario", "senha")

Sds,

Geraldo B. Silva

Fwh1202 Fev/2012, xHarbour 2.0, Bcc582, Pelles, xDev, Sqllib, Tdolphin e MySql.

lucgera@terra.com.br

São Paulo - SP

Link to comment
Share on other sites

Olá,

eu estou usando o exemplo do Rodrigo Moreno Rodrigo_moreno@yahoo.com

* www - http://www.xharbour.org

e faço conexão direta com o banco firebird, antes eu usava o SQLRDD, a classe está no contrib do xHarbour.

Wanderlei Cardoso

Analista / Programador

(62)8171-3059 - Goiânia

xHarbour 1.2.1

Fivewin 11.12 / FireBird Nativo

Link to comment
Share on other sites

Elitenet abaixo uma rotina onde abro o access, jogo numa array e depois gero um relatório em excel. O Código não tá lá grande coisa, fiz apenas para uma necessidade específica, mas funciona.


Local lZona:=space(8),lSegmento:=space(50),lEmpresa:=""

Local cSql,aLista:={},conta_terminal:=0,soma_avaliacao:=0,conta:=0

Local lTerminal := space(8),lAta:=space(8),aTeste:={},hHoras:=space(5),Dia:="",lNoturno:=""

local lAcq:=space(10),nAnoBase:=0,nMesBase:=0

local nDiasOcorridos := 0,cRetorno:=""

// 1 2 3 4 5 6 7

cSql := "SELECT a.ano,a.mes,b.id,a.acq,a.data_fisc,b.DATA_APROVACAO,right(b.DATA_APROVACAO,8) as Oito "

if oCpo:nTipo = 1 //-> Serviços

cSql += " FROM tab_dados_acq_ext a INNER JOIN CAD_INF_ADIC b ON a.acq = b.ACQ "

elseif oCpo:nTipo = 2 //-> Imagem e Segurança

cSql += " FROM tab_dados_acq_ext_img_seg a INNER JOIN CAD_INF_ADIC b ON a.acq = b.ACQ "

elseif oCpo:nTipo = 3 //-> Obras Implantação

cSql += " FROM tab_dados_acq_ext_obras_imp a INNER JOIN CAD_INF_ADIC b ON a.acq = b.ACQ "

elseif oCpo:nTipo = 4 //-> Obras Manutenção

cSql += " FROM tab_dados_acq_ext_obras_man a INNER JOIN CAD_INF_ADIC b ON a.acq = b.ACQ "

endif

IF !empty(oCpo:n_acq)

lAcq := oCpo:n_acq

cSql += " WHERE a.acq = '"+lAcq+"' AND (a.status=5 OR a.status=11 ) AND b.data_aprovacao IS NOT NULL"

ELSEIF !empty(oCpo:ano_base) .AND. !empty(oCpo:mes_base)

IF val(oCpo:ano_base) = 0 .AND. val(oCpo:mes_base) = 0

GbMsg("Favor Digitar ano e mês para gerar relatório!",,2)

return(nil)

ENDIF

nAnoBase := oCpo:ano_base

nMesBase := oCpo:mes_base

cSql += " WHERE a.ano='"+nAnoBase+"' AND a.mes='"+nMesBase+"' AND (a.status=5 OR a.status=11 ) AND b.data_aprovacao IS NOT NULL"

ELSEIF !empty(oCpo:data_inicio)

IF empty(oCpo:data_fim)

oCpo:data_fim := date()

ENDIF

cSql += " WHERE a.data_fisc >='"+GbDatag(oCpo:data_inicio)+"' AND a.data_fisc <='"+GbDatag(oCpo:data_fim)+"' AND (a.status=5 OR a.status=11 ) AND b.data_aprovacao IS NOT NULL"

ELSE

GbMsg("Seleção Inválida, verifique!",,2)

return(nil)

ENDIF

cSql += " GROUP BY a.ano,a.mes,b.id,a.acq,a.data_fisc,b.DATA_APROVACAO "

cSql += " ORDER BY a.acq ; "

oDbf := TDbOdbcDirect():new( cSql,oOdbc)

oDbf:Open()

oDbf:Gotop()

//-> Testa se há serviços aprovados no período

if oDbf:RecCount() = 0

oDbf:End()

GbMsg("Nenhuma Serviço/Obra foi aprovado no período selecionado!",,2)

LimpaTela(oCad)

GbFoco(oCad[2])

return(nil)

endif

While !oDbf:Eof()

nDiasCorrido := DiasUteis(oDbf:FieldGet(5),oDbf:FieldGet(6))

if oCpo:nTipo <= 2

IF nDiasCorrido > 2

cRetorno := "Perdido"

ELSE

cRetorno := "Ok"

ENDIF

elseif oCpo:nTipo > 2

IF nDiasCorrido > 10

cRetorno := "Perdido"

ELSE

cRetorno := "Ok"

ENDIF

endif

TrataHora(oDbf:FieldGet(7),@hHoras)

DiaSemana(oDbf:FieldGet(6),@Dia)

if val(left(hHoras,2)) > 18

lNoturno := "Noturno"

else

lNoturno := "Diurno"

endif

aAdd(aLista,{oDbf:FieldGet(3),oDbf:FieldGet(4),oDbf:FieldGet(5),oDbf:FieldGet(6),hHoras,;

Dia,lNoturno,nDiasCorrido,cRetorno } )

hHoras := space(5)

Dia := ""

lNoturno := ""

nDiasCorrido := 0

cRetorno := ""

oDbf:Skip()

End

oDbf:End()

RelatorioExcel(aLista)

return(nil)

id=code>id=code>

Geraldo B. Silva

Fwh1202 Fev/2012, xHarbour 2.0, Bcc582, Pelles, xDev, Sqllib, Tdolphin e MySql.

lucgera@terra.com.br

São Paulo - SP

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...