emotta Posted April 7, 2014 Report Share Posted April 7, 2014 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, Quote Link to comment Share on other sites More sharing options...
miragerr Posted April 7, 2014 Report Share Posted April 7, 2014 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/ Quote Link to comment Share on other sites More sharing options...
emotta Posted April 7, 2014 Author Report Share Posted April 7, 2014 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/ Quote Link to comment Share on other sites More sharing options...
miragerr Posted April 7, 2014 Report Share Posted April 7, 2014 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. Quote Link to comment Share on other sites More sharing options...
oribeiro Posted April 8, 2014 Report Share Posted April 8, 2014 Eu vejo vocês falando de usar MySql junto com FireBird junto com PostGres e tudo parece tão simples. (risos). Tentei mudar para SQL e achei tudo tão difícil!! Quote Link to comment Share on other sites More sharing options...
marcioe Posted April 8, 2014 Report Share Posted April 8, 2014 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..... Quote Link to comment Share on other sites More sharing options...
emotta Posted April 8, 2014 Author Report Share Posted April 8, 2014 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. Quote Link to comment Share on other sites More sharing options...
emotta Posted April 8, 2014 Author Report Share Posted April 8, 2014 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..... Quote Link to comment Share on other sites More sharing options...
miragerr Posted April 8, 2014 Report Share Posted April 8, 2014 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. Quote Link to comment Share on other sites More sharing options...
emotta Posted April 8, 2014 Author Report Share Posted April 8, 2014 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. Quote Link to comment Share on other sites More sharing options...
Valdir Posted April 8, 2014 Report Share Posted April 8, 2014 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. Quote Link to comment Share on other sites More sharing options...
emotta Posted April 8, 2014 Author Report Share Posted April 8, 2014 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. Quote Link to comment Share on other sites More sharing options...
emotta Posted April 8, 2014 Author Report Share Posted April 8, 2014 Valdir, o select como fica? Voce coloca o caminho completo ou somente o nome do arquivo? E a extensão voce coloca ou nao? SELECT * FROM C:\SISTEMA\DADOS\CLIENTES.DBF ou SELECT * FROM CLIENTES.DBF ou SELECT * FROM CLIENTES Quote Link to comment Share on other sites More sharing options...
Valdir Posted April 8, 2014 Report Share Posted April 8, 2014 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. Quote Link to comment Share on other sites More sharing options...
miragerr Posted April 8, 2014 Report Share Posted April 8, 2014 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. Quote Link to comment Share on other sites More sharing options...
Valdir Posted April 8, 2014 Report Share Posted April 8, 2014 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. Quote Link to comment Share on other sites More sharing options...
emotta Posted April 8, 2014 Author Report Share Posted April 8, 2014 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. Quote Link to comment Share on other sites More sharing options...
emotta Posted April 8, 2014 Author Report Share Posted April 8, 2014 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. Quote Link to comment Share on other sites More sharing options...
emotta Posted April 8, 2014 Author Report Share Posted April 8, 2014 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 Quote Link to comment Share on other sites More sharing options...
aferra Posted April 8, 2014 Report Share Posted April 8, 2014 eu tentei e deu erro, o que pode ser? Quote Link to comment Share on other sites More sharing options...
emotta Posted April 8, 2014 Author Report Share Posted April 8, 2014 posta o codigo que deu erro... vc tem que mudar a pasta C:\TEMP\DADOS que está na string de conexao e tb mudar a tabela no select poste o erro aqui e o codigo eu tentei e deu erro, o que pode ser? Quote Link to comment Share on other sites More sharing options...
aferra Posted April 8, 2014 Report Share Posted April 8, 2014 Vlw Eduardo, o erro é esse (DOS Error -2147352567) WINOLE/1007 A tabela externa nÒo estß no formato esperado. (0x80004005): Microsoft JET Database Engine Quote Link to comment Share on other sites More sharing options...
emotta Posted April 8, 2014 Author Report Share Posted April 8, 2014 vou ficar te devendo pq nao sei... Vlw Eduardo, o erro é esse(DOS Error -2147352567) WINOLE/1007 A tabela externa nÒo estß no formato esperado. (0x80004005): Microsoft JET Database Engine Quote Link to comment Share on other sites More sharing options...
kapiaba Posted April 8, 2014 Report Share Posted April 8, 2014 https://answers.yahoo.com/question/index?qid=20121010115548AAQSQqx Quote Link to comment Share on other sites More sharing options...
aferra Posted April 9, 2014 Report Share Posted April 9, 2014 Vlw kapi, não é isso, mesmos definindo como no post não rolou....versão???falta de instalar o ODBC? ou não instalei corretamente? sei lá.. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.