Jump to content
Fivewin Brasil

Fivewin com ADODB


jc

Recommended Posts

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

ENDIF

id=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

Link to comment
Share on other sites

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

ENDIF

id=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

Link to comment
Share on other sites

citação:

Voce vai disponibilizar alguma coisa prática para nossa comunidade como a lib e prgs de exemplo ?

logo.gif


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

Link to comment
Share on other sites

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 ?

logo.gif


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

Link to comment
Share on other sites

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.

logofw.png


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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

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