Jump to content
Fivewin Brasil

Driver ODBC para DBF (xHarbour)


emotta

Recommended Posts

Existe algum driver ODBC para DBF do (x)Harbour?

Tentei o "{Microsoft dBASE Driver (*.dbf)}" mas nao é compativel, acredito que esse é para DBF do Visual FoxPro.

Caso exista precisarei fazer apenas um codigo para os relatórios, hoje tenho um codigo para DBF e outro código quando é SQL (para usar SELECT em vez de WHILE/SKIP)

Obrigado,

Link to comment
Share on other sites

amigo, ja uso SQLRDD com comandos SELECT... Mas como no mesmo sistema tenho clientes que usam SQL e clientes que usam DBF tenho que fazer as vezes dois codigos para um mesmo relatorio:

Exemplo:

If UsaSql()

*** COMANDOS SELECT

Else

*** COMANDOS WHILE/SKIP

EndIf

Então gostaria de usar algum driver ODBC e ai meu codigo ficaria igual... Esse é meu objetivo, ter apenas 1 codigo, mesmo que isso sacrifique a performance do DBF.

Vou testar o que me passou. vlw

abraços

Ola Motta

dá uma olhada neste link, tem varios modelos, veja se algum lhe atende.

uma dica... usar ODBC com DBF é uma fria, ja tentei e não deu certo, melhor mudar para SQL.

http://www.connectionstrings.com/

Link to comment
Share on other sites

Ola Motta

Entendi, ja que você usa SQLRDD, porque que você não coloca FIREBIRD nestes clientes que usan DBF, é bem leve e simples de instalar, alem de usar somente comandos SQL, com o ODBC para DBF alguns comandos nas querys não irão funcionar.

Já tive este problema, por isso converti tudo para SQL, hoje uso MySql estou mudando para Postgres, ja o meu PDV uso somente FIREBIRD. antes usava DBF, mais dava uns problemas, dai coloquei FIREBIRD e ficou show de bola.

Qual quer duvida ou ajuda pode chamar.

Link to comment
Share on other sites

amigo Oscar Ribeiro, no incio é complicado mesmo, porque até aconstumar o cerebro pensar em sql.

Cara eu apanhei demais com o SQL, mas nao é cuspindo no prato que já comi, mas nem quero mais saber de DBF, nunca mais.

Vale a pena aprender, perder o tempo e aprender SQL.

O tempo que voce irá perder para aprender SQL voce economiza em dar manutenção, criar indices, reindexar, erro de Indice, etc.....

Link to comment
Share on other sites

Miragerr, isso gera custo... Não tem como eu verificar entre 700 clientes quem usa DBF e migrar para Firebird. Não só fazer essa conversão mas depois a manutenção disso.

Hoje quando o cliente reclama de performance ou verificamos que a base de dados exige banco de dados instalamos o SQLSERVER EXPRESS. Mas pra isso ele tem que disponibilizar um servidor. Mesmo que seja feito uma força tarefa para converster todos que usam DBF para SQL isso exigiria explicar o porque de um servidor, etc etc etc. Custaria tempo e dinheiro e teoricamente sem beneficio VISIVEL algum para o cliente que está conente com a performance do DBF (quando se tem um banco pequeno).

Em resumo, eu arrumaria sarna para se coçar.

Enquanto que se eu conseguisse um driver ODBC para DBF eu resolveria meu problema pois teria apenas um CÓDIGO dentro do meu sistema, que seria tudo linguagem SQL, e o cliente com base pequena nem sentiria a diferença.

Esses são os meus motivos. Se não conseguir o driver prefiro manter como está, ou seja, fazendo dois códigos em alguns processos... Um usando WHILE/SKIP e outro usando SELECT.

Quanto a conversão Oscar sinceramente não tivemos problema nenhum, mas desde o inicio compramos o xHarbour comercial com SQLRDD. Quanto a outras formas não sei dizer porque nem tentei, mas com SQLRDD que usamos a 8 anos, NUNCA tivemos problema e a conversão foi feita em pouco menos de 1 mes.

abraços

Ola Motta

Entendi, ja que você usa SQLRDD, porque que você não coloca FIREBIRD nestes clientes que usan DBF, é bem leve e simples de instalar, alem de usar somente comandos SQL, com o ODBC para DBF alguns comandos nas querys não irão funcionar.

Já tive este problema, por isso converti tudo para SQL, hoje uso MySql estou mudando para Postgres, ja o meu PDV uso somente FIREBIRD. antes usava DBF, mais dava uns problemas, dai coloquei FIREBIRD e ficou show de bola.

Qual quer duvida ou ajuda pode chamar.

Link to comment
Share on other sites

CONCORDO PLENAMENTE, a maior dificuldade é PENSAR em SQL... Só mudar para "dormir" com DBF e "ACORDAR" com SQL não é dificil.

As fases da conversão são 3:

1-Só mudar de DBF para SQL => Nesta fase se continua usando como se fosse DBF, ou seja, com WHILE/SKIP/SEEK/SET FILTER, etc etc etc

2-Automatizar processos longos com SELECT => Algumas rotinas em seu sistema que consomem um processo longo, como fechamento de estoque, relatorios com uma grande massa de dados, etc, nestes processos voce automatiza para usar comandos SQL.

3-Uso total com SELECT/INSERT/UPDATE/DELETE => Aqui voce não usa mais SEEK/SET FILTER/ETC, uso total dos comandos SQL, inclusive com stored procedures.

No momento estou entre a fase 2 e fase 3. Isso depois de 8 anos....

amigo Oscar Ribeiro, no incio é complicado mesmo, porque até aconstumar o cerebro pensar em sql.

Cara eu apanhei demais com o SQL, mas nao é cuspindo no prato que já comi, mas nem quero mais saber de DBF, nunca mais.

Vale a pena aprender, perder o tempo e aprender SQL.

O tempo que voce irá perder para aprender SQL voce economiza em dar manutenção, criar indices, reindexar, erro de Indice, etc.....

Link to comment
Share on other sites

Ola Motta

Por isso lhe recomendei o FIREBIRD para estes clientes, no meu caso no inicio tambem usava DBF com SQL, verificava se estava em DBF ou SQL, era um saco isso, entao fiz uma rotina no meu sistema que na mudança de versão verificava se estva em DBF e ja convertia para SQL, olha foi muito pratico e sem traumas, hoje minha base de clientes não é tão grande quanto a sua, mais fiz tudo em menos de 2 meses.

Qualquer coisa estamos aqui.

Link to comment
Share on other sites

Acho que voce não entendeu minha explicação... O problema não é a conversão, é o depois. Banco exige servidor, deixar o servidor do banco executando no mesmo computador que o usuário utiliza é fria... E para alterar o montante vai gerar custo de pessoal e sem um beneficio real ao cliente. Basicamente é isso, o problema não é a converter e sim o trabalho e custo que envolve tudo isso.

Dessa forma não compensa fazer, nem para mim e nem para o cliente. Então prefiro continuar com dois codigos.

Os meus clientes que tem uma grande massa de dados já estão em SQL.

Conta rápida: Imagine que eu contrate um analista bem baratinho mesmo, e que faça um cliente por dia. Vamos supor que o custo dele por mes na empresa seja R$ 2.000,00. Consideremos 500 clientes:

Dias úteis no ano: 250 dias;

Prazo para finalizar conversão: 2 anos (500 clientes)

Custo: R$ 2.000,00 * 24 = R$ 48.000,00

Investir esse valor para que o cliente final não tenha nenhum custo "VISIVEL" fica complicado. Se conseguir o driver me resolve e sem custo, por isso que estou querendo.

Mas vlw pela dica, só que para o meu caso nao compensa, infelizmente.

abraços

Ola Motta

Por isso lhe recomendei o FIREBIRD para estes clientes, no meu caso no inicio tambem usava DBF com SQL, verificava se estava em DBF ou SQL, era um saco isso, entao fiz uma rotina no meu sistema que na mudança de versão verificava se estva em DBF e ja convertia para SQL, olha foi muito pratico e sem traumas, hoje minha base de clientes não é tão grande quanto a sua, mais fiz tudo em menos de 2 meses.

Qualquer coisa estamos aqui.

Link to comment
Share on other sites

Olá Eduardo e amigos...

Já há alguns anos venho usando os drives ODBC para acessar os arquivos DBF ao gerar Relatórios no meu Sistema.

Até o momento, nunca tive problemas em usar o "{Microsoft dBASE Driver (*.dbf)}", seja no "Win XP, Vista e Win7" e no "Win8" ainda não testei.

Para isso, tenho apenas que configurar corretamente a "Fontes de Dados (ODBC)" nas Ferramentas Administrativas do Windows.

Espero ter ajudado.

abração.

Link to comment
Share on other sites

Legal Valdir, bom saber que funciona.

Voce poe me mandar os PRINTs de configuração do ODBC e tambem alguns exemplos de código. Eu testei essa string e nao funcionou:

Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:\mydbpath;

Olá Eduardo e amigos...

Já há alguns anos venho usando os drives ODBC para acessar os arquivos DBF ao gerar Relatórios no meu Sistema.

Até o momento, nunca tive problemas em usar o "{Microsoft dBASE Driver (*.dbf)}", seja no "Win XP, Vista e Win7" e no "Win8" ainda não testei.

Para isso, tenho apenas que configurar corretamente a "Fontes de Dados (ODBC)" nas Ferramentas Administrativas do Windows.

Espero ter ajudado.

abração.

Link to comment
Share on other sites

Olá Eduardo..

Em relação ao código, não utilizo diretamente no Sistema. Para isso utilizo um arquivo .OCX do meu gerador de relatórios.

Legal Valdir, bom saber que funciona.

Voce poe me mandar os PRINTs de configuração do ODBC e tambem alguns exemplos de código. Eu testei essa string e nao funcionou:

Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:\mydbpath;

O Select fica assim : SELECT * FROM CLIENTES, pois o caminho já foi definido nas configurações do Driver ODBC.

Agora os prints, estou tentando... espere mais um pouco que ainda preciso aprender como colocar essas imagens aqui. kkkkk

abração.

Link to comment
Share on other sites

Ola Motta

Realmente colocar o DB no mesmo computador usado é FRIA MESMO, agora sim compreendi seu cenário de clientes, mais de qualquer forma se você analizar o DBF fica onde ? em um computador compartilhado né, desta forma ainda acho mais proveitoso usar o FIREBIRD mesmo que em maquina que se esta usando, não só pelo fato de ser mais simples a instalação do mesmo, como a manutenção, pois é bem mais pratico recuperar dados do FIREBIRD do que em DBF.

Eu mesmo quando fiz as conversões de DBF para SQL, procurei deixar tudo automatizado pelo sistema, e isso você pode fazer com um instalador como o INNO SETUP para a instalação do FIREBIRD, ficando somente na maquina servidora e compartilhada, e outra vantagem do FIREBIRD em maquina LOCAL é que você não precisa compartilhar o COMPUTADOR, basta saber qual é o IP, e claro liberar a porta caso tenha firewall.

Veja bem estou analizando um cenario, e uma possiblidade de usar SQL, sem muitos custos a você, exceto de automatizar no teu sistema, e te garanto não é dificil de fazer não, ja converti sistemas da TOTVS que era em SQL EXPRESS, converti para FIREBIRD o cliente era pequeno e não queria colocar um servidor DEDICADO.

Link to comment
Share on other sites

Abra o Paint, selecione a imagem inteira e depois selecione COPIAR... Venha aqui, abra pra responder e no texto digite CTRL + V

Faz isso em cada imagem...

Pessoar... dixcurpi a guinorança...

Como mostro aqui as imagens que postei no meu "Google Driver" ?

Tô apanhando mais que mulher de Bêbado.

Obrigado.

Link to comment
Share on other sites

Migraerr, a siutação ja expliquei e em um cenario com muitos clientes fica "caro" fazer... Mas vlw pela dica, mas fico ainda com meu pedido original de usar um driver ODBC que me resolve e sem efeito colateral.

Mas obrigado pela tentativa, discutir novas idéias e formatos é sempre proveitoso. Em outras situações poderei aplicar.

Abraços

Ola Motta

Realmente colocar o DB no mesmo computador usado é FRIA MESMO, agora sim compreendi seu cenário de clientes, mais de qualquer forma se você analizar o DBF fica onde ? em um computador compartilhado né, desta forma ainda acho mais proveitoso usar o FIREBIRD mesmo que em maquina que se esta usando, não só pelo fato de ser mais simples a instalação do mesmo, como a manutenção, pois é bem mais pratico recuperar dados do FIREBIRD do que em DBF.

Eu mesmo quando fiz as conversões de DBF para SQL, procurei deixar tudo automatizado pelo sistema, e isso você pode fazer com um instalador como o INNO SETUP para a instalação do FIREBIRD, ficando somente na maquina servidora e compartilhada, e outra vantagem do FIREBIRD em maquina LOCAL é que você não precisa compartilhar o COMPUTADOR, basta saber qual é o IP, e claro liberar a porta caso tenha firewall.

Veja bem estou analizando um cenario, e uma possiblidade de usar SQL, sem muitos custos a você, exceto de automatizar no teu sistema, e te garanto não é dificil de fazer não, ja converti sistemas da TOTVS que era em SQL EXPRESS, converti para FIREBIRD o cliente era pequeno e não queria colocar um servidor DEDICADO.

Link to comment
Share on other sites

consegui via ADO... Vou usar assim...

abração galera

Function U_Teste()
Local oConn
Local cSQL
Local rsClaims

oConn:= CreateObject("ADODB.Connection")
oConn:Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\temp\dados;Extended Properties=DBASE IV")

cSQL := "SELECT * FROM SP50001"

rsClaims := CreateObject("ADODB.Recordset")
rsClaims:CursorLocation := 3  // adUseClient
rsClaims:CursorType := 3 // adOpenStatic
rsClaims:ActiveConnection:= oConn
rsClaims:Open(cSQL)

rsClaims:MoveFirst()
MsgStop(rsClaims:Fields("SP5_CODIGO"):Value)

Return


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...