ADORDD e SQLMIX

Forum sobre SQL.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ADORDD e SQLMIX

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

Código: Selecionar todos

#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 */
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ADORDD e SQLMIX

Mensagem por JoséQuintas »

Me chamou a atenção o final do README.TXT

Código: Selecionar todos

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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

ADORDD e SQLMIX

Mensagem 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
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ADORDD e SQLMIX

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

ADORDD e SQLMIX

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

ADORDD e SQLMIX

Mensagem 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.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

ADORDD e SQLMIX

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

Código: Selecionar todos

try :

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

Regards,
Marek Horodyski
Ou esse...

Código: Selecionar todos

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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ADORDD e SQLMIX

Mensagem por JoséQuintas »

Minha pequena rotina de hoje, pra opção de DBF e MySQL.

Código: Selecionar todos

         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:

Código: Selecionar todos

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) Exibido 7747 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Ruben Dario
Usuário Nível 3
Usuário Nível 3
Mensagens: 127
Registrado em: 14 Jun 2015 23:19
Localização: Colombia

ADORDD e SQLMIX

Mensagem 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
sergio.kondo
Usuário Nível 1
Usuário Nível 1
Mensagens: 10
Registrado em: 05 Set 2011 00:15
Localização: São Paulo/SP

ADORDD e SQLMIX

Mensagem 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
Avatar do usuário
Mario Mesquita
Usuário Nível 4
Usuário Nível 4
Mensagens: 613
Registrado em: 08 Dez 2009 13:47
Localização: Rio de Janeiro

ADORDD e SQLMIX

Mensagem 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.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

ADORDD e SQLMIX

Mensagem por sygecom »

Vem junto com o Harbour, você está compilando com o que ai ? xHarbour ou Harbour e qual versão ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Mario Mesquita
Usuário Nível 4
Usuário Nível 4
Mensagens: 613
Registrado em: 08 Dez 2009 13:47
Localização: Rio de Janeiro

ADORDD e SQLMIX

Mensagem 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.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

ADORDD e SQLMIX

Mensagem por sygecom »

Mario,
HMG é uma lib gráfica para usar com Harbour ou xHarbour. Na pasta do harbour tem as contrib ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Mario Mesquita
Usuário Nível 4
Usuário Nível 4
Mensagens: 613
Registrado em: 08 Dez 2009 13:47
Localização: Rio de Janeiro

ADORDD e SQLMIX

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