jc Posted February 2, 2009 Report Share Posted February 2, 2009 Galera, tenho uma notÃcia boa para todos. Há alguns meses atrás, minha equipe se deparou com um pequeno problema em nossas rotinas de gravação/deleção e atualização de dados exibidos com a lib utilizada. Desde então tenho estudado e testado o ADODB (ActiveX Data Objects) que é uma biblioteca abstrata de componentes de comunicação com bases de dados (bancos, arquivos, imagens, etc) via OLE da própria microsoft. Atualmente, estamos na fase final já para implementação das rotinas desenvolvidas em cima do ADODB para o nosso sistema... removendo assim, a lib anterior. O ADODB funciona com quaisquer banco de dados que possua o driver nativo para o windows... bastando instalar esse mesmo driver e informar ao ADODB, a string correta de conexão. Após isso, nenhuma mudança de código precisa ser feita para nenhum banco de dados. Tudo igual e o melhor de tudo: Tudo funciona perfeitamente. Realizei alguns testes de performance e nos deparamos com um desempenho com cerca de 15% de ganho na velocidade tanto em consultas complexas com campos calculados e store procedures.. até atualização de dados com INSERTs, UPDATEs e DELETEs. Tb existe o tratamento de imagens através do ADODB.Stream, que realiza o trabalho com campos BLOB de forma extremamente simples, sem necessitar de nada mais além de uma única linha para ler a imagem e outra para inserir a imagem nos campos tipo BLOB (salvando-se a instância do objeto que requer mais códigos, porém todos igualmente simples). Até então estou utilizando os três objetos: ADODB.Connection ADODB.RecordSet ADODB.Stream Site para dúvidas: http://www.devguru.com/Technologies/ado/quickref/ado_intro.html Recomendo alguns testes para averiguação por parte de vcs, pois é um extremo recurso à ser utilizado e o fivewin comporta todo ele! Quaisquer dúvidas, favor entre em contato comigo. Irei ajudar a todos o quanto for possÃvel. *** Um pequeno exemplo *** -> Inserindo um novo registro: oRs:addNew() oRs:fields( "codigo_reduzido" ):value := val( alltrim( strtran( uValorField, ".", "" ) ) ) oRs:fields( "codigo_pontuado" ):value := alltrim( uValorField ) oRs:fields( "descricao" ):value := "NOVA CONTA: '" + alltrim( uValorField ) + "' INSERIDA!" oRs:fields( "grupo" ):value := "A" oRs:fields( "nivel" ):value := len( alltrim( uValorField ) ) oRs:fields( "tipo" ):value := "S" oRs:fields( "natureza" ):value := "C" oRs:updateBatch()id=code>id=code>-> Cancelando uma alteração realizada: oRs:moveFirst()id=code>id=code>-> Atualizando o registro corrente: id=code>id=code>-> Atualizando toda a consulta atual: id=code>id=code>-> Uma pequena consulta (extremamente ligeira): && -- Salvando a posição anterior à pesquisa nBookmark := oRs:bookMark && -- Realizando a pesquisa cCriterio := "descricao LIKE '*" + alltrim( uKeySearch ) + "*'" TRY oRs:moveFirst() oRs:find( cCriterio ) && -- Conteúdo não localizado IF ( oRs:bof .OR. oRs:eof ) ? "O conteúdo informado não foi localizado!" ENDIF CATCH oRs:bookMark := nBookmark oBrw:setFocus() END ENDIFid=code>id=code>-> Excluindo um registro: id=code>id=code>-> Alguns métodos práticos de navegação do RecordSet: oRs:moveLast() oRs:move( nPosicaoBookmark ) oRs:movePrevious() oRs:moveNext()id=code>id=code>Até mais! Tudo de bom! -- Júlio César M. Ferreira www.rsconsultores.com.br Fone: (81) 4009.5444 Fax: (81) 4009.5400 E-mail: julio.mferreira@gmail.com MSN: julio_mferreira@hotmail.com Recife - PE FWh 8.08/ xHarbour 1.1.0/ xDevStudio 0.72/ SQL LIB 1.9/ Pelles 5.00.1 Quote Link to comment Share on other sites More sharing options...
jc Posted February 2, 2009 Author Report Share Posted February 2, 2009 Galera, tenho uma notÃcia boa para todos. Há alguns meses atrás, minha equipe se deparou com um pequeno problema em nossas rotinas de gravação/deleção e atualização de dados exibidos com a lib utilizada. Desde então tenho estudado e testado o ADODB (ActiveX Data Objects) que é uma biblioteca abstrata de componentes de comunicação com bases de dados (bancos, arquivos, imagens, etc) via OLE da própria microsoft. Atualmente, estamos na fase final já para implementação das rotinas desenvolvidas em cima do ADODB para o nosso sistema... removendo assim, a lib anterior. O ADODB funciona com quaisquer banco de dados que possua o driver nativo para o windows... bastando instalar esse mesmo driver e informar ao ADODB, a string correta de conexão. Após isso, nenhuma mudança de código precisa ser feita para nenhum banco de dados. Tudo igual e o melhor de tudo: Tudo funciona perfeitamente. Realizei alguns testes de performance e nos deparamos com um desempenho com cerca de 15% de ganho na velocidade tanto em consultas complexas com campos calculados e store procedures.. até atualização de dados com INSERTs, UPDATEs e DELETEs. Tb existe o tratamento de imagens através do ADODB.Stream, que realiza o trabalho com campos BLOB de forma extremamente simples, sem necessitar de nada mais além de uma única linha para ler a imagem e outra para inserir a imagem nos campos tipo BLOB (salvando-se a instância do objeto que requer mais códigos, porém todos igualmente simples). Até então estou utilizando os três objetos: ADODB.Connection ADODB.RecordSet ADODB.Stream Site para dúvidas: http://www.devguru.com/Technologies/ado/quickref/ado_intro.html Recomendo alguns testes para averiguação por parte de vcs, pois é um extremo recurso à ser utilizado e o fivewin comporta todo ele! Quaisquer dúvidas, favor entre em contato comigo. Irei ajudar a todos o quanto for possÃvel. *** Um pequeno exemplo *** -> Inserindo um novo registro: oRs:addNew() oRs:fields( "codigo_reduzido" ):value := val( alltrim( strtran( uValorField, ".", "" ) ) ) oRs:fields( "codigo_pontuado" ):value := alltrim( uValorField ) oRs:fields( "descricao" ):value := "NOVA CONTA: '" + alltrim( uValorField ) + "' INSERIDA!" oRs:fields( "grupo" ):value := "A" oRs:fields( "nivel" ):value := len( alltrim( uValorField ) ) oRs:fields( "tipo" ):value := "S" oRs:fields( "natureza" ):value := "C" oRs:updateBatch()id=code>id=code>-> Cancelando uma alteração realizada: oRs:moveFirst()id=code>id=code>-> Atualizando o registro corrente: id=code>id=code>-> Atualizando toda a consulta atual: id=code>id=code>-> Uma pequena consulta (extremamente ligeira): && -- Salvando a posição anterior à pesquisa nBookmark := oRs:bookMark && -- Realizando a pesquisa cCriterio := "descricao LIKE '*" + alltrim( uKeySearch ) + "*'" TRY oRs:moveFirst() oRs:find( cCriterio ) && -- Conteúdo não localizado IF ( oRs:bof .OR. oRs:eof ) ? "O conteúdo informado não foi localizado!" ENDIF CATCH oRs:bookMark := nBookmark oBrw:setFocus() END ENDIFid=code>id=code>-> Excluindo um registro: id=code>id=code>-> Alguns métodos práticos de navegação do RecordSet: oRs:moveLast() oRs:move( nPosicaoBookmark ) oRs:movePrevious() oRs:moveNext()id=code>id=code>Até mais! Tudo de bom! -- Júlio César M. Ferreira www.rsconsultores.com.br Fone: (81) 4009.5444 Fax: (81) 4009.5400 E-mail: julio.mferreira@gmail.com MSN: julio_mferreira@hotmail.com Recife - PE FWh 8.08/ xHarbour 1.1.0/ xDevStudio 0.72/ SQL LIB 1.9/ Pelles 5.00.1 Quote Link to comment Share on other sites More sharing options...
jcleoner Posted February 3, 2009 Report Share Posted February 3, 2009 Voce vai disponibilizar alguma coisa prática para nossa comunidade como a lib e prgs de exemplo ? Quote Link to comment Share on other sites More sharing options...
jc Posted February 3, 2009 Author Report Share Posted February 3, 2009 citação:Voce vai disponibilizar alguma coisa prática para nossa comunidade como a lib e prgs de exemplo ? id=quote>id=quote>Caro José, Posso disponibilizar sim alguns exemplos, porém não há necessidade de nenhuma lib. É nativo do Windows! Bastando apenas que vc instale o driver para o seu banco de dados. Mas, via ODBC, vc poderá ver muitas opções nativas já disponÃveis! -- Júlio César M. Ferreira www.rsconsultores.com.br Fone: (81) 4009.5444 Fax: (81) 4009.5400 E-mail: julio.mferreira@gmail.com MSN: julio_mferreira@hotmail.com Recife - PE FWh 8.08/ xHarbour 1.1.0/ xDevStudio 0.72/ SQL LIB 1.9/ Pelles 5.00.1 Quote Link to comment Share on other sites More sharing options...
jcleoner Posted February 3, 2009 Report Share Posted February 3, 2009 Deixe eu ver se entendi Se vc instala um driver, então o acesso é mesmo se chamando de ADODB esta utilizando ODBC. Como é a velocidade de acesso ? Quote Link to comment Share on other sites More sharing options...
jc Posted February 3, 2009 Author Report Share Posted February 3, 2009 citação:Deixe eu ver se entendi Se vc instala um driver, então o acesso é mesmo se chamando de ADODB esta utilizando ODBC. Como é a velocidade de acesso ? id=quote>id=quote>Na verdade, oq vc instala é o Microsoft OLE DB para ODBC do banco de dados que vc irá usar. Ele disponibiliza, via ODBC, a conexão através do ADO e muitas outras funcionalidades. Dos testes que executei com cerca de 17.676 registros, o retorno se deu cerca de 15% mais rápido que a lib anterior! -- Júlio César M. Ferreira www.rsconsultores.com.br Fone: (81) 4009.5444 Fax: (81) 4009.5400 E-mail: julio.mferreira@gmail.com MSN: julio_mferreira@hotmail.com Recife - PE FWh 8.08/ xHarbour 1.1.0/ xDevStudio 0.72/ SQL LIB 1.9/ Pelles 5.00.1 Quote Link to comment Share on other sites More sharing options...
personal Posted February 3, 2009 Report Share Posted February 3, 2009 Julio, seria possivel voce passar mais alguns passos para gente dar uma olhada como funciona. Já pedindo demais, uns exemplos de programação seria muito bem vindo. Quote Link to comment Share on other sites More sharing options...
jc Posted February 4, 2009 Author Report Share Posted February 4, 2009 citação:Julio, seria possivel voce passar mais alguns passos para gente dar uma olhada como funciona. Já pedindo demais, uns exemplos de programação seria muito bem vindo. id=quote>id=quote>Claro que sim! À medida que estamos elaborando as nossas rotinas aqui, vou montando tb um pequeno exemplo pois dessa forma irei colocar alguns tópicos mais importantes. Quero muito que vcs possam entrar no ADO pq achei uma tecnologia excelente e quanto mais gente no processo, mais fácil para solucionarmos problemas que possam surgir! -- Júlio César M. Ferreira www.rsconsultores.com.br Fone: (81) 4009.5444 Fax: (81) 4009.5400 E-mail: julio.mferreira@gmail.com MSN: julio_mferreira@hotmail.com Recife - PE FWh 8.08/ xHarbour 1.1.0/ xDevStudio 0.72/ SQL LIB 1.9/ Pelles 5.00.1 Quote Link to comment Share on other sites More sharing options...
kleyber Posted February 4, 2009 Report Share Posted February 4, 2009 Júlio, Me esclarece uma coisa: Eu sempre achei que o ADO fosse uma camada abaixo do ODBC e, portanto, não usaria o ODBC pra se conectar; pelo contrário, o ODBC é que usaria o ADO pra fazer a conexão... mas pelo que vc está dizendo, meu entendimento está errado... gostaria de ter mais detalhes. Uma outra coisa é que, se vc for instalar teu sistema em rede, cada terminal terá que ser configurado com o OLE DB pra poder acessar? Abraços, Kleyber Derick xHarbour 1.1.0 + FWH 8.02 (BMW Zerada!!!) + xDevStudio + SQLLIB Visite São LuÃs - MA A Ilha dos Amores Quote Link to comment Share on other sites More sharing options...
jc Posted February 4, 2009 Author Report Share Posted February 4, 2009 citação:Júlio, Me esclarece uma coisa: Eu sempre achei que o ADO fosse uma camada abaixo do ODBC e, portanto, não usaria o ODBC pra se conectar; pelo contrário, o ODBC é que usaria o ADO pra fazer a conexão... mas pelo que vc está dizendo, meu entendimento está errado... gostaria de ter mais detalhes. Uma outra coisa é que, se vc for instalar teu sistema em rede, cada terminal terá que ser configurado com o OLE DB pra poder acessar? Abraços, Kleyber Derick xHarbour 1.1.0 + FWH 8.02 (BMW Zerada!!!) + xDevStudio + SQLLIB Visite São LuÃs - MA A Ilha dos Amores id=quote>id=quote>Kleyber! Como vai essa ilha de Slz meu amigo? Saudade dessa terrinha quente É mais ou menos isso mesmo... podemos dizer que o ADO é uma linguagem utilizada pelo OLE DB para comunicação com o teu banco de dados... Site oficial da microsoft para desenvolvedores, sobre o ADO e o ADOX: http://msdn.microsoft.com/en-us/library/ms675532(VS.85).aspx -- Júlio César M. Ferreira www.rsconsultores.com.br Fone: (81) 4009.5444 Fax: (81) 4009.5400 E-mail: julio.mferreira@gmail.com MSN: julio_mferreira@hotmail.com Recife - PE FWh 8.08/ xHarbour 1.1.0/ xDevStudio 0.72/ SQL LIB 1.9/ Pelles 5.00.1 Quote Link to comment Share on other sites More sharing options...
kleyber Posted February 4, 2009 Report Share Posted February 4, 2009 citação: citação:Júlio, Me esclarece uma coisa: Eu sempre achei que o ADO fosse uma camada abaixo do ODBC e, portanto, não usaria o ODBC pra se conectar; pelo contrário, o ODBC é que usaria o ADO pra fazer a conexão... mas pelo que vc está dizendo, meu entendimento está errado... gostaria de ter mais detalhes. Uma outra coisa é que, se vc for instalar teu sistema em rede, cada terminal terá que ser configurado com o OLE DB pra poder acessar? Abraços, Kleyber Derick xHarbour 1.1.0 + FWH 8.02 (BMW Zerada!!!) + xDevStudio + SQLLIB Visite São LuÃs - MA A Ilha dos Amores id=quote>id=quote>Kleyber! Como vai essa ilha de Slz meu amigo? Saudade dessa terrinha quente É mais ou menos isso mesmo... podemos dizer que o ADO é uma linguagem utilizada pelo OLE DB para comunicação com o teu banco de dados... Site oficial da microsoft para desenvolvedores, sobre o ADO e o ADOX: http://msdn.microsoft.com/en-us/library/ms675532(VS.85).aspx -- Júlio César M. Ferreira www.rsconsultores.com.br Fone: (81) 4009.5444 Fax: (81) 4009.5400 E-mail: julio.mferreira@gmail.com MSN: julio_mferreira@hotmail.com Recife - PE FWh 8.08/ xHarbour 1.1.0/ xDevStudio 0.72/ SQL LIB 1.9/ Pelles 5.00.1 id=quote>id=quote>Julio, Aqui continua quente, apesar de algumas chuvas...hehehe Bom e quanto à instalação, vai ter que configurar cada máquina pra usar? Abraços, Kleyber Derick xHarbour 1.1.0 + FWH 8.02 (BMW Zerada!!!) + xDevStudio + SQLLIB Visite São LuÃs - MA A Ilha dos Amores Quote Link to comment Share on other sites More sharing options...
jc Posted February 4, 2009 Author Report Share Posted February 4, 2009 citação:Julio,Aqui continua quente, apesar de algumas chuvas...hehehe Bom e quanto à instalação, vai ter que configurar cada máquina pra usar? Abraços, Kleyber Derick xHarbour 1.1.0 + FWH 8.02 (BMW Zerada!!!) + xDevStudio + SQLLIB Visite São LuÃs - MA A Ilha dos Amores id=quote>id=quote>Kleyber, infelizmente sim Essa seria a única "complicação" aparente... visto que o driver para MySQL ou PostgreSQL não são nativos do windows, porém existem oficialmente nos respectivos sites dos gerenciadores.... Já para o Oracle, é nativo do windows ( Pq né!? ) -- Júlio César M. Ferreira www.rsconsultores.com.br Fone: (81) 4009.5444 Fax: (81) 4009.5400 E-mail: julio.mferreira@gmail.com MSN: julio_mferreira@hotmail.com Recife - PE FWh 8.08/ xHarbour 1.1.0/ xDevStudio 0.72/ SQL LIB 1.9/ Pelles 5.00.1 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.