Clipper On Line • Ver Tópico - ADORDD e SQLMIX
Página 1 de 2

ADORDD e SQLMIX

MensagemEnviado: 14 Jun 2015 20:47
por JoséQuintas
Apenas relatando os fatos.

Baixei a nova ADORDD, que não faz parte do Harbour, e não consegui compilar, dá erros, talvez por dependência da fivewin.

Depois fui olhar SQLMIX.

Este é o exemplo na pasta tests, não diz muito.

#require "rddsql"

REQUEST SQLMIX

PROCEDURE Main()

   CLS

#if defined( __HBSCRIPT__HBSHELL )
   rddRegister( "SQLBASE" )
   rddRegister( "SQLMIX" )
#endif

   rddSetDefault( "SQLMIX" )
   dbCreate( "persons", { { "NAME", "C", 20, 0 }, { "FAMILYNAME", "C", 20, 0 }, { "BIRTH", "D", 8, 0 }, { "AMOUNT", "N", 9, 2 } }, , .T., "persons" )

   dbAppend(); AEval( { PadR( "Bil", 20 ),  PadR( "Gatwick", 20 ),  hb_SToD( "19650124" ), 123456.78 }, {| X, Y | FieldPut( Y, X ) } )
   dbAppend(); AEval( { PadR( "Tom", 20 ),  PadR( "Heathrow", 20 ), hb_SToD( "19870512" ),   9086.54 }, {| X, Y | FieldPut( Y, X ) } )
   dbAppend(); AEval( { PadR( "John", 20 ), PadR( "Weber", 20 ),    hb_SToD( "19750306" ),   2975.45 }, {| X, Y | FieldPut( Y, X ) } )
   dbAppend(); AEval( { PadR( "Sim", 20 ),  PadR( "Simsom", 20 ),   hb_SToD( "19930705" ),  32975.37 }, {| X, Y | FieldPut( Y, X ) } )

   dbGoTop()
   Browse()

   INDEX ON FIELD->AMOUNT TO amount
   dbGoTop()
   Browse()
   dbCloseAll()

   RETURN

PROCEDURE RDDSYS() ; RETURN  /* must be a public function */

ADORDD e SQLMIX

MensagemEnviado: 14 Jun 2015 21:09
por JoséQuintas
Me chamou a atenção o final do README.TXT

3. Modifying database

   SSI presents a query result via RDD interface and generates no hidden
SQL queries. So, how database can be changed? Does dbAppend() and FieldPut()
works, or is it readonly SQL interface?
   dbAppend(), FieldPut() and other similiar functions work on cached query
result, i.e. query can be appended by new rows and field values can be
changed, but SQL database is not changed. dbCreate() function can also be
used to create an "empty query result" but no table is created on SQL server.
So, SSI can also be used as implementation of "array RDD".
   The programmer must call SQL command explicitly to modify SQL tables.
SSI provides a method to detect which cached rows was changed or appended.


Se entendi direito, a SQLMIX é apenas pra consulta.

Sinceramente fiquei confuso, porque se for assim, cheguei num ponto onde estou fazendo o que ela faz.
Lógico... meu uso só serve pra ambiente Windows.

ADORDD e SQLMIX

MensagemEnviado: 15 Jun 2015 10:00
por janio
Quintas,

Acho que vc entendeu errado. Conforme ja li alguns lugares, o RESULTADO da consulta no SQLMIX eh um "dbf virtual". Nesse "dbf virtual" vc pode usar comandos xbase (dbskip(), dbAppend(), etc).

Nesse caso (usando comandos xbase), vc estara fazendo alterações NA CONSULTA e não na sua base de dados real.

Caso queira modificar o seu banco de dados... aí vc tera que usar comandos SQL e não xbase.

Janio

ADORDD e SQLMIX

MensagemEnviado: 15 Jun 2015 10:45
por JoséQuintas
Foi isso que entendi também, mas talvez não tenha me expressado direito no meu texto.

Consultas -> resultado estilo xbase
alteração, inclusão e exclusão -> não podem ser estilo xBase, porque não salva no servidor. Tem que ser comandos SQL.

A conversão acaba sendo somente na consulta, e no restante é necessário alterar o fonte pra comandos SQL (inclusão, alteração, exclusão).

Meu uso ADO:

consultas -> resultado convertido pra DBF e uso estilo xbase
alteração, inclusão e exclusão -> comandos SQL

Se for isso mesmo, acabaram praticamente equivalentes, exceto SQLMIX funcionar em Linux.
E o mais interessante: por muito pouca diferença, a alteração de fontes é praticamente a mesma.

Fiquei mais confuso ainda. Tanto tumulto sobre qual usar, e é praticamente trocar seis por meia dúzia.

A questão passou a ser apenas opção de escolha, porque em termos de alteração de fonte deu no mesmo.
Tudo que vale pra SQLMIX vale pra ADO, e vice-versa.

Melhor... seja qual for a escolha, ao invés de discutir sobre qual usar, é só trocar idéia porque vale pra todas.

Lógico... vou puxar pro lado do ADO, porque nele fica claro o que está acontecendo, mas tanto faz.

De qualquer forma, o mais importante é o que vém depois, justamente as precauções disso em ambiente multiusuário, porque não dá pra fazer igual DBF.
Como eu disse várias vezes, uso MySQL há muitos anos, mas não no aplicativo inteiro.
Vou chegar nessa parte, e vou ter dúvidas como todo mundo.
Estou deixando pra me preocupar quando chegar lá.

Nota: Quando começou a discussão, eu ainda não tinha feito meu conversor pras consultas. Depois disso ficou equivalente.

ADORDD e SQLMIX

MensagemEnviado: 15 Jun 2015 18:28
por Itamar M. Lins Jr.
Faz tempo que estou explicando isso.
SQLMIX é melhor para os usuários do Harbour.

1) Traz tudo em DBF(o resultado) não precisar de ler uma vez e depois ler novamente p/ transformar em DBF.
2) Não precisa do Windows.
3) Usa sintaxe SQL para acessar as tabelas do servidor.(Liberdade em aprender mais uma maneira de trabalhar e não joga fora o conhecimento xBase)
4) Os comandos p/ conexão são mais simples e portanto mais fáceis de entender.

ADO é ADO não tem nada a ver! Só funciona no Windows!, Não traz o resultado em DBF, precisa reler tudo p/ transformar em DBF ou fazer algo parecido ao SQLMIX(reinventar a roda), a parte de conexão é confusa para o principiante, portanto é preciso aprender mais comandos!

Agora não ler o que escrevo... paciência!

Tem gente que irá gostar mais do ADO, porque já vem com a cultura do VB ou de algo similar que é o seu caso, mas para quem nunca usou VB nem ADO, é muito mais fácil aprender SQLMIX.

Saudações,
Itamar M. Lins Jr.

ADORDD e SQLMIX

MensagemEnviado: 15 Jun 2015 19:27
por alxsts
Olá!

Escrever código SQL na aplicação não é uma boa prática. O ideal é manter tudo em stored procedures e executá-las quando necessário.

Vou repetir a pergunta que fiz há algum tempo atrás: como se executa uma stored procedure ou function em SQLMix?

Na minha humilde opinião, migrar para SQL e manter sintaxe DBF só se justifica no caso de modernização de um sistema já existente, para ir eliminando esta sintaxe e trocando pela outra. Para sistemas novos, o certo é já usar SQL. Creio que a alternativa SQL mais moderna para se usar com Harbour, e multiplataforma, é a QT, que já traz as classes para acesso a este tipo de fonte de dados.

ADORDD e SQLMIX

MensagemEnviado: 15 Jun 2015 20:08
por Itamar M. Lins Jr.
Ola!
Alxsts, como vc manipula o resultado ?
Sobre Stored Procedures, eu não sou um usuário bom para ensinar isso porque eu uso muito pouco mesmo, mas eu achei isso.

try :

? RDDINFO( 1003, "begin ProcedureName( par1, par2); end ;", 'SQLMIX', nConnect)

Regards,
Marek Horodyski

Ou esse...
Maby so (on Oracle) :

DBUSEAREA( .T., 'SQLMIX', "SELECT * FROM TABLE ( procedureName( par1, par2) )", "AliasName", ,,, nConnect)

Regards,

Marek Horodyski


Sabendo que, não sou a melhor pessoa p/ explicar essas coisas.

Saudações,
Itamar M. Lins Jr.

ADORDD e SQLMIX

MensagemEnviado: 15 Jun 2015 20:36
por JoséQuintas
Minha pequena rotina de hoje, pra opção de DBF e MySQL.

         cFileDbf := "corre" + Right( StrZero( nCont, 4 ), 2 )
         IF .NOT. File( cFileDbf + ".DBF" )
            cnMySql:cSql := "SELECT * FROM CORRENTE WHERE ANOBASE=" + StringSql( StrZero( nCont, 4 ) ) + " AND LOCOD=" + Ltrim( Str( mLocad00Cod ) ) + ;
               " ORDER BY ANOBASE, LOCOD, NEXTRA, DB, DATA"
            cnMySql:Execute()
            cFileDbf := cnMySql:SqlToDbf( .T. )
            cnMySql:Rs:Close()
         ENDIF


Qualquer hora altero a classe pra reduzir mais.
De repente, trocar tudo isso por algo assim:

cFileDbf := cnMySql:ExecuteDbf( "SELECT * FROM CORRENTE WHERE ANOBASE=" + StringSql( StrZero( nCont, 4 ) ) + ;
   " AND LOCOD=" + Ltrim( Str( mLocad00Cod ) ) + " ORDER BY ANOBASE, LOCOD, NEXTRA, DB, DATA" )
USE ( cFileDbf )


No final, o que achava desvantagem era não poder checar usando -w3 -es2, mas campo de arquivo também não dá, então dá no mesmo.

Conforme se vai usando, vai se criando opções.
SqlToDbf( .T. ) - esse .T. é pra criar estrutura automaticamente, não tinha esse recurso antes.

O negócio é usar. Conforme se vai usando, vamos fazendo o que precisamos.

No momento, pra tudo, só uso esse objeto cnMySql, e nada mais.

A propósito... Mesmo criando DBF, é rápido.
O DBF é criado localmente, e o acesso é mais rápido do que qualquer rede.

corrente.png
corrente.png (7.84 KiB) Visualizado 4887 vezes

Não é muito, mas é outro arquivo com mais de um milhão de registros.
Levou 5 segundos pra gerar um extrato de 1994 até 2015 em formato PDF, pesquisando um ano por vez.
Nem sei se isso é rápido ou não, mas tá bom.

Criei essa rotina hoje, falta confirmar na rede/servidor do cliente.
Talvez ligue pra algum usuário da empresa, e peça pra ele clicar no "atualiza versão".
É assim que estou fazendo, é fazer e deixar liberado pra quem quiser atualizar.

ADORDD e SQLMIX

MensagemEnviado: 17 Ago 2015 18:40
por Ruben Dario
Saludos

NO sabia con con los DBF se pueden manejar sentencias SQL.

Tienes un ejemplo mas completo , para manipular una DBF , para poderlo reproducir, y me muestras como lo compilas

Gracias

ADORDD e SQLMIX

MensagemEnviado: 28 Fev 2016 19:24
por sergio.kondo
Olá!

Infelizmente utilizo o xHarbour e gostaria de saber se é possível usar o SQLMix com xHarbour. Se sim, à partir de qual versão?

Atenciosamente,
Sérgio Kondo

ADORDD e SQLMIX

MensagemEnviado: 26 Mar 2016 14:48
por Mario Mesquita
Boa tarde!

Preciso "puxar" dados em uma base de dados Firebird para um programa meu com DBF.

Pelo que li, o SqlMix pode me ajudar a fazer isso com relativa facilidade para alguém com pouco conhecimento de SQL?

Se é possível, como baixo o SqlMix?

Desde já, agradeço a ajuda.

Saudações,
Mario.

ADORDD e SQLMIX

MensagemEnviado: 26 Mar 2016 21:46
por sygecom
Vem junto com o Harbour, você está compilando com o que ai ? xHarbour ou Harbour e qual versão ?

ADORDD e SQLMIX

MensagemEnviado: 27 Mar 2016 08:20
por Mario Mesquita
Bom dia!

Estou usando HMG 3.0.46. Até baixei a 3.4, mas está dando uns errinhos nos meus ícones e alguns textos na tela. Deve ser alguma bobagem, mas tenho que fazer ajustes e o tempo anda curto.

Então, mesmo com as vantagens das últimas versão, vou com a .46 que me atende muito bem por hora.

Saudações,
Mario.

ADORDD e SQLMIX

MensagemEnviado: 27 Mar 2016 11:41
por sygecom
Mario,
HMG é uma lib gráfica para usar com Harbour ou xHarbour. Na pasta do harbour tem as contrib ?

ADORDD e SQLMIX

MensagemEnviado: 27 Mar 2016 16:32
por Mario Mesquita
Boa tarde.

Sygecon, nas pastas Harbour do HMG 3.0.46 e 3.4.1 não encontrei nada referente a SQLMIX. Mas posso ter comido mosca. Vou procurar melhor.

Elas usam o Harbou 3.2, não é?

Sds,
Mario.

ADORDD e SQLMIX

MensagemEnviado: 27 Mar 2016 19:39
por Jairo Maia
Olá Pessoal,

Se não estou enganado, a HMG 3.0.46 usa o Harbour 2.1, e a HMG 3.4.x usa o Harbour 3.2.

ADORDD e SQLMIX

MensagemEnviado: 30 Mar 2016 08:32
por Mario Mesquita
Bom dia a todos.

Jairo, em sendo assim, essa versão 2.1 (sei lá, acho que é 3.x) inviabiliza o uso do SqlMix?

Em breve eu quero "subir" para as versão do HMG 3.4 que já usa uma versão mais nova do Harbour. E se for o caso, fazer o programa de migração das tabelas SQL para DBF com essa versão, mesmo que eu não mude os sistemas em 3.0.46 .

Sds,
Mario.

ADORDD e SQLMIX

MensagemEnviado: 30 Mar 2016 08:57
por Jairo Maia
Olá Mario,

Não sei dizer. Não tenho nenhum conhecimento sobre SqlMix. Apenas sei que a HMG 3.0.46 na instalação usa Harbour 2.1, HMG 3.0 usa Harbour 3.0, e a HMG 3.4 usa Harbour 3.2.

Mário, como se trata de dúvidas sobre HMG, sugiro você colocar essas questões na seção MiniGui do fórum. Lá participam vários colegas que usam HMG e acho que podem ajudar melhor.

ADORDD e SQLMIX

MensagemEnviado: 30 Mar 2016 17:38
por tomgton
Olá pessoal, boa tarde.
Alguém tem um exemplo de conexão com um banco MSSQL usando o ADORDD pra me exemplificar? Estamos começando a estudar aqui uma possível mudança entre arquivos DBF e o banco em SQL Server.

ADORDD e SQLMIX

MensagemEnviado: 30 Mar 2016 17:53
por Mario Mesquita
Boa tarde.

Jairo, a dúvida não é sobre HMG, é sobre como obter e usar o tal SQLMIX.

Ele é parte do Harbour? Qual versão? É LIB, .EXE? Como expliquei, estou buscando uma maneira prática de migrar tabelas FDB para DBF, via Harbour.

Se ele é um tipo de RDD ou interface entre um programa e uma base SQL, penso que aqui tem mais lógica.

Além do que, esse tópico já estava aberto e achei produtivo centrar dúvidas sobre o SQLMIX no mesmo tópico.

Sds,
Mario.

ADORDD e SQLMIX

MensagemEnviado: 09 Jun 2016 08:21
por JoséQuintas
Mario Mesquita, deixei passar uma pergunta sua antiga:

Existe o ADS - Advantage Database Server.
Ele é pago, se usar servidor.
Sem servidor, trabalha igual ao Dbf/Cdx.

Ao usar ADO, e o ODBC de ADS, podem ser usados comandos SQL normalmente sobre DBFs, do mesmo jeito que se faz com qualquer base de dados.

Quanto ao SQLMIX, vai depender do que usar com ele.
O SQLMIX é o agrupamento de várias opções diferentes, que existem no Harbour, até mesmo ODBC.
Vai ter que verificar com quem usa.