Jump to content
Fivewin Brasil

Lançamento de tAds 2.0


giovanyvecchi

Recommended Posts

Como varias pessoas aqui sabem, eu uso ads a anos e mesmo sem suporte ao banco de dados e a falta de exemplos praticos para nossa linguagem harbour+fivewin não abandonei o advantage acreditando que poderia melhorar e muito.

Fui pesquisando, adaptando, traduzindo e convertendo funçoes de outras linguagens para que pudesse usar nos nossos conceitos de programação. O tAds foi alterado inumeras vezes, ja que minha satisfação não correspondia aos resultados desejados. Mais nunca desisti e agora com os resultados concretos e satisfatorios eu posso liberar esta versão porque tenho certeza que a lógica de funcionamento esta na base correta e dai por diante é só implementar novos recursos conforme as nescessidades que aparecerão.

junto com o pacote tem exemplos e ferramentas para que voce possa iniciar a migração caso tenha interesse. Qualquer duvida voce podera perguntar para mim que responderei assim que possivel.

No decorrer destes proximos dias tentarei criar mais exemplos ja que minha carga horaria esta bem corrida.

Caso a demanda de interesses for demasiada por varias pessoas pedirei para o moderador do forum para que inclua um topico separado.

para baixar o tAds 2.0 o link esta abaixo.

http://www.4shared.com/zip/BdeAU5Ftce/tAds_2.html

Link to comment
Share on other sites

Giovany,

Parabéns pela iniciativa.

Tenho ouvido falar muito sobre o ADS que despertou a minha curiosidade em conhecê-lo melhor a fim de melhorar o banco de dados do meu sistema que utiliza CDX nativo.

Desculpe a minha ignorância, mas eu preciso obter duas respostas:

1) Quais são as vantagens de usar o ADS sobre o CDX convencional do xHarbour?

2) Todos os comandos do CDX existem no ADS e funcionam da mesma forma ou terei que adaptar o sistema para utilizar o ADS?

Aguardo, obrigado.

Link to comment
Share on other sites

Ola Oscar.

Em primeira mão, para quem não trabalha com ads, temos a entender que o funcionamento do banco de dados não passa de um RDD comum como DBFCDX. Olhando por cima não passa disto mesmo ja que podemos usar as mesmas regras e fontes de um DBFCDX ou DBFNTX apenas definindo o RDDADS como Default.

Mais o Ads vai muito alem disto, por isto voce pode usar de sua maneira como se fosse DBF normal usando APPEND, RLOCK, SKIP, REPLACE Etc Etc.

Alem disto o ads proporciona relacionamento como qualquer banco de dados relacional tipo Mysql, FireBird, Oracle. A vantagem é que voce pode usar grande parte de seus fontes com comandos antigos estito DBFCDX e misturar com Querys Sql e outras funcionalidades do ads.

O problema maior fica em um só desafio: "CONVERTER SEUS DBFS PARA ADT USANDO DICIONARIO DE DADOS"

Para isto voce pode usar o utilitario Dbf2Advantage.exe

Depois de criado o dicionario de dados voce seguira estes passos:

1 - Chama a função TADS_START_CONFIG() para o tads criar os ambientes de ADS

2 - Abra uma conexão e defina como padrão (Default / Por Falta), Ex:

oConexaoDefault := tAdsConnection():New(1,.T.)
oConexaoDefault:cDataDictionary  := ".\DADOSADD\Gerente_Byte.add"
oConexaoDefault:cSenhaConnect    := "PassWord"
oConexaoDefault:nTpConnect       := 7
lConectou := oConexaoDefault:tAdsConnect()

Em tAdsConnection():New(Numero_da_Conexão,Se_é_a_Conexão_Padrao)

Depois disto voce podera usar seus fontes normais usando o comando USE ou DBUSEAREA(), O que muda no comando é que voce não precisa indicar a rora do arquivo que voce quer abrir e nem os indices que estão relacionados porque estas informações ficam dentro do dicionario de dados. Ex:

Antes com DBFCDX: USE ".\DADOS\CLIENTES.DBF" ALIAS CLIENTES INDEX ".\CLIENTES.CDX" NEW SHARED

Depois com Ads: USE CLIENTES ALIAS CLIENTES

Isto vai proporcionar a voce um alivio ja que voce não vai precisar alterar todos seus fontes.

Só que isto não basta, usando desta maneira antiga voce vai ficar muito limitado ainda. Voce pode usar os comandos antigos e ir alterando aos poucos com os novos conseitos.

Tenho sistema que ta uma graça, Alguns modulos estão de quando era DBF CDX e outros com classes de tAds usando SQL. No momento estou desenvolvendo em meus sistema modulos para interligar cartorios e com os recursos que desenvolvi no tAds ta ficando muito bom.

Voce podera ir mesclando os recursos com seus fontes de uma maneira pratica. Tipo assim:

Quero abrir o cadastro de clientes do jeito que eu fazia antes

USE CLIENTES ALIAS CLIENTES NEW SHARED

depois quero fazer uma query em sql ou rdd sem atrapalhar o alias ja aberto

Em Rdd convencional

oDb_Clientes := tAds():NewRdd() // Abro aqui via rdd

oDb_Clientes:Append()

oDb_Clientes:VarPut("NOME","GIOVANY VECCHI")

oDb_Clientes:Commit()

oDb_Clientes:End() // Fecho o handle

Em Rdd gerado por classe de tAds com a função tAds_CreateClassFromDatabase("CLIENTES")

oDb_Clientes := DB_CLIENTES():OpenRdd()

Em Sql usando DataSet de Ads

oDs_Clientes := tAds():DsNew(1) // 1 é o tipo da query, significa de tem retorno de cursores ou handle

oDs_Clientes:cQrySql := "Select * from CLIENTES Order By NOME" // Defino a query

oDs_Clientes:DsExecute() // Executa a query

Veja em Samples de tAds para entender.

Outro esclarecimento que voce deve saber é que o ADS tem a versão gratis que não é Cliente/Servidor, Trabalha normalmente em rede mais o trafego é definido pela rede local. e a versão paga que funciona como Cliente/Servidor e internet.

Nos Sample01.exe tem um exemplo que abre uma tabela no servidor da Cibertec no Mexico. Funciona como se fosse um MySql, FireBird etc.

Antes eu tinha olhado para o MySql, mais decidi usar o ads por muitas vantagens que só quem usa como eu a anos pode entender. Ex:

Imagina só eu tendo 3 lojas em 3 servidores diferentes, to falando em 3 servidores um em cada loja com seus dados separados. quero tirar um relatorio de vendas das 3 lojas. faço assim:

1 - Conecto na loja 1 busco todo resultado e trago para o terminal que esta executando a pesquisa

2 - Conecto na loja 2 faço a mesma coisa

3 - Conecto na loja 3 tambem

Ai na minha maquina terei em buffer local os 3 resultados com varias tabelas das 3 lojas. dai vou mesclando os resultados das tabelas e posso gerar uma só com todas elas ou desejar a query que preciso conforme a necessidade desejada.

Outra vantagem, depois de um resultado de uma query posso aplicar um filtro como se fosse o DBSETFILTER nela.

O problema do ads é que não ha documentação para nossa linguagem. E o Rdd de harbour não esta preparado para trabalhar com objetos estilo C Sharp. Por isto eu criei o tAds.

Então resumindo é assim: Voce pode usar seus fontes do jeito que esta e ir implantando as outras formas com o tempo. Lambrando que o ads não suporta indices com funções do usuario tipo

NOME_SOBRENOME+MINHAFUNCAO("CAMPO")

No help de Advantage tem a lista das funções que podem estar tanto nos indices como nas querys

Qualquer duvida poste aqui ou me chame pelo Skype

Skype: giovany.vecchi

Link to comment
Share on other sites

Olá Giovanny...

Em primeiro lugar, obrigado por compartilhar com a comunidade as suas experiências e conhecimentos com o uso do ADS.

Estou tentando iniciar a migração do meu Sistema para SQL e pelo que ví no seu exemplo acima, posso usar o ADS para isso. Está correto ?

Tenho que instalar alguma coisa nos meus Clientes ?

Obrigado

Link to comment
Share on other sites

Olá Giovanny...

Em primeiro lugar, obrigado por compartilhar com a comunidade as suas experiências e conhecimentos com o uso do ADS.

Estou tentando iniciar a migração do meu Sistema para SQL e pelo que ví no seu exemplo acima, posso usar o ADS para isso. Está correto ?

Tenho que instalar alguma coisa nos meus Clientes ?

Obrigado

Oi Valdir.

Sim, voce pode usar normalmente comandos Sql com a classe tAds e ainda usar seus codigos antigos tudo misturado.

E a maior vantagem que tudo fica em OOP (programação Orientada ao Objeto ), muito pratico.

Seria assim um exemplo basico:

oDs_ListaVenda := tAds():DsNew(1)
oDs_ListaVenda:cQrySql := "Select {Static} VENDAS.SeqLancamento, VENDAS.S_CODIGO, PRODUTOS.PRODUTO AS DESCR_PRODUTO, VENDAS.QtaVenda from SAIDAS AS VENDAS " +;
                          "INNER JOIN PRODUTOS AS PRODUTOS ON PRODUTOS.CODIGO = VENDAS.S_CODIGO " +;
                          "Where VENDAS.Dt_Lancamento >= _Data_Inicial_ and VENDAS.Dt_Lancamento <= _Data_Final_ ;" 
aadd(oDs_ListaVenda:aVarsSql,{"_Data_Inicial_",cToD("01/04/2014")}) 
aadd(oDs_ListaVenda:aVarsSql,{"_Data_Final_",Date()})
 
oDs_ListaVenda:DsExecute(200)   
(oDs_ListaVenda:cAlias)->(xBrowse())

Este ai retornaria os produtos q venderam neste periodo lembrando que a descrição do produto esta na tabela PRODUTOS por isto usamos INNER JOIN.

Mais a vantagem maior é que com este resultado eu crio automaticamente outra tabela com estes campos gerados pela query.

Crio um temporario e posso indexar o campo DESCR_PRODUTO tambem. e abrir como um RDD normal.

é só eu colocar o parametro assim

oDs_ListaVenda:ldsCursorsToTemp := .T.

Na pasta de TADS chamada Ads Install tem as Dlls para voce instalar nos computadores. estas dlls são necessarias tanto na versão free local como na versão paga. Caso voce queira instalar um sistema remoto em um servidor para acesso via internet ou cliente/servidor voce pode pedir um trial de ads em: http://www.sap.com/pc/tech/database/software/advantage-database-server/index.html

Qualquer outra duvida me adiciona no Skype: giovany.vecchi

Link to comment
Share on other sites

  • 3 months later...

Prezados,

Estava lendo sobre os benefícios de se trabalhar com ADSRDD ao invés da DBFCDX. Estou tendo alguns problemas de performance em rede quando dois ou mais usuários abrem o mesmo arquivo. Como no momento não posso alterar meu sistema para banco de dados (firebird, mysql, etc), preciso resolver o problema para não perder o cliente.

Não consegui baixar o material sobre ADS nos link´s acima. Alguém poderia me fornecer um link com este material de exemplos. Estou analisando qual seria o impacto de alterações nos meus códigos.

Desde já agradeço-lhes pela ajuda.

Atenciosamente,

Ederson Araujo de Souza

Netspeed Sistemas

FWH 9.08 / xHarbour_1.21.9411

Link to comment
Share on other sites

Oi Ederson, o Ads não não é apenas uma solução temporaria e sim definitiva. Alem de voce poder trabalhar do mesmo modo mais com alguns ajustes voce vai adaptando para funcionamentos em SQL cliente/servidor. Trabalho com ads desde 2004, fiz inumeras ferramentas, mais o TADS supre todas as nescessidades.

Baixe o TADS pelo Tortoise

https://tads-class-for-harbour.googlecode.com/svn/trunk

Olhe na pasta Sample para um pequeno exemplo. e na Pasta HelptAds para o Help de tAds

Qualquer duvida adicione meu skype

giovany.vecchi

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