Clipper On Line • Ver Tópico - Acesso ao FireBird

Acesso ao FireBird

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

Acesso ao FireBird

Mensagempor jelias » 12 Jun 2009 16:46

Amiguinhos,

Tenho um sistema em clipper 5.2e + Blinker 7.0 + Six 3.0, que já está rodando a bastante tempo sem nenhum problema.
Entretanto, o volume de dados tem crescido bastante, e veio a necessidade de criar um sistema de retaguarda, onde é feito análise das vendas. Para atingir as expectativas, fiz um sistema simples em Delphi que importa os dados dos dbf.
Recentimente com a ajuda do AlaminoJúnior e o Wagner, comecei a garimpar com o Xharbour, e hoje estou fazendo um upgrade no sistema usando xHarbour 1.0.0 (simplex) + hgWVW.
Confesso que estou muito feliz com o avanço que fiz.

Pesquisando aqui no forum, vi muita coisa sobre o mysql e pensei em migrar tanto o sistema xHarbour quanto em Delphi para Mysql.

- Agora, existe uma segunda opcão que seria até mais lógica, de deixar por enquanto os meus sistemas dbf normalmente, entretanto atualizando o banco do FireBird automaticamente. Só que é ai que entra a minha dúvida, como fazer isso?

Alguém sabe como eu posso usar o firebird 2.1 com xHarbour 1.0.0 (simplex). O que preciso é gravar os dados somentes, não irei utilizar os fb para query nem em relatórios no xh.

Muito Obrigado a todos!
Abraço!
xHarbour 1.2.1 (simplex) + BCC 5.8.2 + Hwgui + SQLRDD
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
jelias
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 249
Data de registro: 27 Ago 2008 11:32
Cidade/Estado: Minas Gerais
Curtiu: 0 vez
Mens.Curtidas: 16 vezes

Re: ACESSO AO FIREBIRD

Mensagempor sygecom » 15 Jun 2009 15:53

xHarbour acredito que somente usando a versão paga do xharbour.com, mas com harbour tem na pasta CONTRIB, veja abaixo um exemplo da pasta CONTRIB\HBFBIRD

simple.prg
/*
* $Id: simple.prg 10153 2009-02-03 02:05:45Z druzus $
*/

#include "common.ch"

Function main()
    Local oServer, oQuery, oRow, i, x, aTables, aStruct, aKey

    Local cServer := '192.168.1.33:D:\firebird\test\test.gdb'
    Local cUser := 'sysdba'
    Local cPass := 'masterkey'
    Local nDialect := 1
    Local cQuery
   
    if File('test.gdb')
        FErase('test.gdb')
    end
   
    ? FBCreateDB('test.gdb', cuser, cpass, 1024, 'ASCII', nDialect )
               
    ? "Connecting..."
       
    oServer := TFBServer():New(cServer, cUser, cPass, nDialect)

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

    ? 'Tables...'
   
    For x := 1 to 1
        aTables := oServer:ListTables()
   
        For i := 1 to Len(aTables)
            ? aTables[i]
        next
    Next       
       
    ? 'Using implicit transaction...'
   
    if oServer:TableExists('TEST')
        oServer:Execute('DROP TABLE Test')
        oServer:Execute('DROP DOMAIN boolean_field')
    end       

    ? 'Creating domain for boolean fields...'
    oServer:Execute('create domain boolean_field as smallint default 0 not null check (value in (0,1))')
   
    oServer:StartTransaction()
    ? 'Creating test table...'
    cQuery := 'CREATE TABLE test('
    cQuery += '     Code SmallInt not null primary key, '
    cQuery += '     dept Integer, '
    cQuery += '     Name Varchar(40), '
    cQuery += '     Sales boolean_field, '
    cQuery += '     Tax Float, '
    cQuery += '     Salary Double Precision, '
    cQuery += '     Budget Numeric(12,2), '
    cQuery += '     Discount Decimal(5,2), '
    cQuery += '     Creation Date, '
    cQuery += '     Description blob sub_type 1 segment size 40 ) '

    oServer:Execute(cQuery)
   
    if oServer:neterr()
        ? oServer:Error()
    end

    oServer:Commit()
   
    oQuery := oServer:Query('SELECT code, dept, name, sales, salary, creation FROM test')   
    wait

   
    ? 'Structure of test table'
    aStruct := oServer:TableStruct('test')
   
    For i := 1 to Len(aStruct)
        ?
        For x := 1 to Len(aStruct[i])
            ?? aStruct[i,x]
        Next           
    next
   
    ? 'Inserting, declared transaction control '
    oServer:StartTransaction()
   
    For i := 1 to 100
        cQuery := 'INSERT INTO test(code, dept, name, sales, tax, salary, budget, Discount, Creation, Description) '
        cQuery += 'VALUES( ' + str(i) + ', 2, "TEST", 1, 5, 3000, 1500.2, 7.5, "12-22-2003", "Short Description about what ? ")'
       
        oServer:Execute(cQuery) 
       
        if oServer:neterr()
            ? oServer:error()
        end             
    Next                   
       
    oServer:Commit()

    oQuery := oServer:Query('SELECT code, name, description, sales FROM test')
   
    aStruct := oQuery:Struct()
   
    For i := 1 to Len(aStruct)
        ? aStruct[i,1], aStruct[i,2], aStruct[i,3], aStruct[i,4]
    Next
       
    aKey := oQuery:GetKeyField()
   
    ? "Fields: ", oQuery:Fcount(), "Primary Key: ", aKey[1]

    oRow := oQuery:Blank()
   
    ? oRow:FCount(), ;
      oRow:Fieldpos('code'), ;
      oRow:Fieldget(1), ;
      oRow:Fieldname(1), ;
      oRow:Fieldtype(1), ;
      oRow:Fielddec(1), ;
      oRow:Fieldlen(1), ;
      len(oRow:Getkeyfield())

    oRow:Fieldput(1, 150)
    oRow:Fieldput(2, 'MY TEST')
   
    ? oRow:Fieldget(1), oRow:Fieldget(2)
   
    ? oServer:Append(oRow)
   
    ? oServer:Delete(oQuery:blank(), 'code = 200')
   
    ? oServer:Execute('error caused intentionaly')   

    DO WHILE ! oQuery:Eof()
        oQuery:Skip()
        ? oQuery:Fieldget(oQuery:Fieldpos('code')), ;
          oQuery:Fieldget(4), ;
          oQuery:Fieldget(2), ;
          oQuery:Fieldname(1),;
          oQuery:Fieldtype(1), ;
          oQuery:Fielddec(1), ;
          oQuery:Fieldlen(1),;
          oQuery:Fieldget(3)
   
        if oQuery:Recno() == 50
            oRow := oQuery:getrow()
           
            oRow:Fieldput(2, 'My Second test')
            ? 'Update: ', oServer:Update(oRow)
        end     
       
        if oQuery:Recno() == 60
            oRow := oQuery:getrow()
            ? 'Delete: ', oServer:Delete(oRow)
        end
    END   

    ? 'Delete: ', oServer:Delete(oQuery:Blank(), 'code = 70')

    oQuery:Refresh()
   
    DO WHILE oQuery:Fetch()
        oRow := oQuery:getrow()
       
        ? oRow:Fieldget(oRow:Fieldpos('code')), ;
          oRow:Fieldget(4), ;
          oRow:Fieldget(2), ;
          oRow:Fieldname(1),;
          oRow:Fieldtype(1), ;
          oRow:Fielddec(1), ;
          oRow:Fieldlen(1),;
          oRow:Fieldget(3)
    END   

    oQuery:Destroy()
   
    oServer:Destroy()
   
   
    ? "Closing..."
       
    return nil
   

Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7017
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 133 vezes

Re: ACESSO AO FIREBIRD

Mensagempor RamonXHB » 16 Jun 2009 16:11

Vc pode usar o adodb/oledb pra usar com o firebird de qualquer versão, pode usar também o adordd pra isso.
Basta ter um conhecimento básico de sql, é algo que já está disponivel no windows xp, funciona bem tanto em harbour como em xharbour, também pode usar com outros bancos sql.
Ramon A. Körber Jr.
Harbour 3.2 MiniGUI Extended Edition
xDevStudio v0.70 - BCC 5.82 - Lazarus FreePascal
Firebird
AdoDB - ODBC
Windows - Linux
Linux User Number 404280
MSN - ramon15061959@hotmail.com
Skype - ramon15061959
ICQ - UIN 82580595
Avatar de usuário

RamonXHB
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 152
Data de registro: 03 Mar 2007 14:55
Curtiu: 10 vezes
Mens.Curtidas: 3 vezes

Re: Acesso ao FireBird

Mensagempor jelias » 18 Jun 2009 21:33

Amiguinhos,

Obrigado pelas respostas. Entretanto RamonXHB, poderia me explicar mais detalhadamente como trabalhar com o ADOdb, visto que pude observar na net é uma biblioteca de abstração de banco de dados.
- Gostaria de saber como compilar, como funciona o processo de gravação no banco Fb com esta biblioteca.
- Por favor, se tiver como citar um exemplo, ficaria muito agradecido.

Muito Obrigado,

Sucesso para todos.

Abraço.
xHarbour 1.2.1 (simplex) + BCC 5.8.2 + Hwgui + SQLRDD
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
jelias
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 249
Data de registro: 27 Ago 2008 11:32
Cidade/Estado: Minas Gerais
Curtiu: 0 vez
Mens.Curtidas: 16 vezes

Re: Acesso ao FireBird

Mensagempor RamonXHB » 22 Jun 2009 22:33

Existe nos arquivos do grupo miniguibrasil do yahoo um exemplo chamado Agendafb, desenvolvido com harbour-minigui, neste exemplo tem todas as necessidades de inclusão, alteração, exclusão e filtragem usando um banco de dados firebird.
Ramon A. Körber Jr.
Harbour 3.2 MiniGUI Extended Edition
xDevStudio v0.70 - BCC 5.82 - Lazarus FreePascal
Firebird
AdoDB - ODBC
Windows - Linux
Linux User Number 404280
MSN - ramon15061959@hotmail.com
Skype - ramon15061959
ICQ - UIN 82580595
Avatar de usuário

RamonXHB
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 152
Data de registro: 03 Mar 2007 14:55
Curtiu: 10 vezes
Mens.Curtidas: 3 vezes

Re: Acesso ao FireBird

Mensagempor gvc » 10 Ago 2009 11:28

[RamonXHB]
Vc teria esse arquivo de exemplo para me enviar.
Para entrar baixar o arquivo de onde vc informou, eu teria que fazer incrição no grupo, alem de pertencer ao yahoo.
Como eu só quero ver como é feito (fontes) acho que criar todas as incrições e contas é desperdicio. (dos recursos do yahoo)

Se puder enviar, gvcortez@uol.com.br

Desde já, obrigado.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Avatar de usuário

gvc
Colaborador

Colaborador
 
Mensagens: 1269
Data de registro: 23 Ago 2005 10:57
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Acesso ao FireBird

Mensagempor sygecom » 22 Ago 2009 11:32

Bom, para quem sabe temos também o SQLRDD que é uma LIB comercial porem muito boa, e que acessa Firebird nativamente e os resultados são otimos com xHarbour.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7017
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 133 vezes




Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro