xHarbour x SQLRDD - Samples
Moderador: Moderadores
-
sasquast
- Usuário Nível 1

- Mensagens: 29
- Registrado em: 31 Jul 2019 16:47
- Localização: Volta Redonda / RJ
xHarbour x SQLRDD - Samples
Pessoal, bom dia,
Estou engatinhando na conexão do Xharbour com o MySQL. Li alguns tópicos aqui e o caminho é seguir os samples do SQLRDD e ir testando, porem estou recebendo o erro abaixo no memo.prg
04/19/22 10:31:36: SQLExecDirect Error
42000 - 1064 - [MySQL][ODBC 8.0(a) Driver][mysqld-8.0.28]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Type=InnoDb' at line 9
Command sent to database :
CREATE TABLE `test_table_memo` ( `code_id` CHAR (8) NOT NULL,
`cardid` CHAR (1) ,
`d1` MEDIUMBLOB,
`d2` MEDIUMBLOB,
`d3` MEDIUMBLOB,
`d4` MEDIUMBLOB,
`sr_recno` BIGINT (15) NOT NULL UNIQUE AUTO_INCREMENT ,
`sr_deleted` CHAR (1) NOT NULL
) Type=InnoDb
Steatment handle :
Connection handle :
RetCode : -1
SR_ODBC:RUNTIMEERR Linha : 904
SR_ODBC:EXEC Linha : 394
SR_WORKAREA:SQLCREATE Linha : 5408
DBCREATE Linha : 0
MAIN Linha : 33
Conectando está, pois o fonte cria tabelas na base. O ODBC 32 bits conecta na base também.
Como podem ver, o MySQL que consegui foi o 8. Em algumas documentações no site do xHarbour é citato como compatível o MySQL 4.1. Será que não tem como usar o 8 mesmo ? Se alguém conseguiu, onde alterar essa query pois eu não encontrei em parte alguma do fonte.
Obrigado.
Estou engatinhando na conexão do Xharbour com o MySQL. Li alguns tópicos aqui e o caminho é seguir os samples do SQLRDD e ir testando, porem estou recebendo o erro abaixo no memo.prg
04/19/22 10:31:36: SQLExecDirect Error
42000 - 1064 - [MySQL][ODBC 8.0(a) Driver][mysqld-8.0.28]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Type=InnoDb' at line 9
Command sent to database :
CREATE TABLE `test_table_memo` ( `code_id` CHAR (8) NOT NULL,
`cardid` CHAR (1) ,
`d1` MEDIUMBLOB,
`d2` MEDIUMBLOB,
`d3` MEDIUMBLOB,
`d4` MEDIUMBLOB,
`sr_recno` BIGINT (15) NOT NULL UNIQUE AUTO_INCREMENT ,
`sr_deleted` CHAR (1) NOT NULL
) Type=InnoDb
Steatment handle :
Connection handle :
RetCode : -1
SR_ODBC:RUNTIMEERR Linha : 904
SR_ODBC:EXEC Linha : 394
SR_WORKAREA:SQLCREATE Linha : 5408
DBCREATE Linha : 0
MAIN Linha : 33
Conectando está, pois o fonte cria tabelas na base. O ODBC 32 bits conecta na base também.
Como podem ver, o MySQL que consegui foi o 8. Em algumas documentações no site do xHarbour é citato como compatível o MySQL 4.1. Será que não tem como usar o 8 mesmo ? Se alguém conseguiu, onde alterar essa query pois eu não encontrei em parte alguma do fonte.
Obrigado.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
xHarbour x SQLRDD - Samples
Não sei no MySQL 8, mas aqui uso assim:
e não Type.
Código: Selecionar todos
ENGINE=InnoDB
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
xHarbour x SQLRDD - Samples
Só um comentário:
No HeidiSQL, e talvez num backup do MySQL, os nomes ficam entre apóstofros (``).
Isso não é obrigatório, é mais para casos onde os nomes podem ser iguais a palavras-chave.
Por exemplo, um campo chamado SELECT, que pode confundir com o comando SELECT.
Isto é válido:
No HeidiSQL, e talvez num backup do MySQL, os nomes ficam entre apóstofros (``).
Isso não é obrigatório, é mais para casos onde os nomes podem ser iguais a palavras-chave.
Por exemplo, um campo chamado SELECT, que pode confundir com o comando SELECT.
Isto é válido:
Código: Selecionar todos
CREATE TABLE IF NOT EXISTS JPVEICULO (
IDVEICULO INT(11) NOT NULL AUTO_INCREMENT,
VEPLACA VARCHAR(8) NOT NULL DEFAULT '',
VEMOTORI VARCHAR(30) NOT NULL DEFAULT '',
VETELEFONE VARCHAR(20) NOT NULL DEFAULT '',
PRIMARY KEY ( IDVEICULO ),
INDEX PLACA ( VEPLACA )
) COLLATE=latin1_swedish_ci ENGINE=InnoDB
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/
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/
-
sasquast
- Usuário Nível 1

- Mensagens: 29
- Registrado em: 31 Jul 2019 16:47
- Localização: Volta Redonda / RJ
xHarbour x SQLRDD - Samples
Obrigado pelas orientações e dicas, Sr José Quintas,
No entanto eu não consegui encontrar nos fontes de exemplo o local para alterar de Type para Engine. Acredito que esteja buscando de um include ou coisa do tipo, mas o fonte não me aponta qual. O comando em questão, no fonte, aparece simplesmente como:
Como posso rastrear até chegar no ponto que eu possa alterar ?
No entanto eu não consegui encontrar nos fontes de exemplo o local para alterar de Type para Engine. Acredito que esteja buscando de um include ou coisa do tipo, mas o fonte não me aponta qual. O comando em questão, no fonte, aparece simplesmente como:
Código: Selecionar todos
local aStruct := {{"CODE_ID","C",8,0,.F.,,,,,1 },{"CARDID","C",1,0},{"D1","M",10,0},{"D2","M",10,0},{"D3","M",10,0}, {"D4","M",10,0}}
Connect( @cRDD, cDSN ) // see connect.prg
? "Connected to :", SR_GetConnectionInfo(, SQL_DBMS_NAME ), SR_GetConnectionInfo(, SQL_DBMS_VER )
? "RDD in use :", cRDD
? "Creating table :", dbCreate( "TEST_TABLE_MEMO", aStruct, cRDD )
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
xHarbour x SQLRDD - Samples
No Harbour temos todos os fontes.
No XHarbour não sei se essa RDD é comercial, e nesse caso não vai ter os fontes, e não vai ter como alterar.
Se tiver os fontes, deve ser na pasta contribs/sqlrdd
Se o seu editor de texto tiver a opção de pesquisar em vários arquivos, pode pesquisar o type=innodb em arquivos *.c, *.ch, *.prg, *.h
No XHarbour não sei se essa RDD é comercial, e nesse caso não vai ter os fontes, e não vai ter como alterar.
Se tiver os fontes, deve ser na pasta contribs/sqlrdd
Se o seu editor de texto tiver a opção de pesquisar em vários arquivos, pode pesquisar o type=innodb em arquivos *.c, *.ch, *.prg, *.h
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
xHarbour x SQLRDD - Samples
Faltou dizer:
Só por essa conversão...
Ainda bem que deu erro, abandone enquanto há tempo.
Vai aproveitar seus fontes, mas vai perder sua alma.
Só por essa conversão...
Ainda bem que deu erro, abandone enquanto há tempo.
Vai aproveitar seus fontes, mas vai perder sua alma.
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/
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/
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
xHarbour x SQLRDD - Samples
Olá!
SQLRDD é pago, comercializado pela xHarbour.com US$ 595,00...
Se tua aplicação roda apenas em Windows, pode usar ADO e não ficar preso a esta lib. Se roda em Linux ou Unix, pode usar SQLMix. Neste caso o resultado vem em formato de tabelas .DBF, o que pode não interessar. No Harbour, existem a libs hbodbc e hbmysql. Não sei se elas existem no xHarbour.
SQLRDD é pago, comercializado pela xHarbour.com US$ 595,00...
Se tua aplicação roda apenas em Windows, pode usar ADO e não ficar preso a esta lib. Se roda em Linux ou Unix, pode usar SQLMix. Neste caso o resultado vem em formato de tabelas .DBF, o que pode não interessar. No Harbour, existem a libs hbodbc e hbmysql. Não sei se elas existem no xHarbour.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
xHarbour x SQLRDD - Samples
Tenho usado o SQLRDD com xHarbour há muito tempo, porém notei que em versões do MySQL superiores a 5 podem acontecer alguns problemas.
Sendo assim usávamos somente a versão 5.1.7x e mais recentemente o MariaDB 5.2
Sendo assim usávamos somente a versão 5.1.7x e mais recentemente o MariaDB 5.2
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
MySQL c/ SQLRDD
HwGui + GTWVG
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
xHarbour x SQLRDD - Samples
Olá!
Pois já tem um projeto bem grande do "Gringo" Harbour _ORM e Harbour_VFP que usa SQLMIX como ponte mas altera/melhora nem sei direito li rápido os fontes e tem coisa pra "dedeu..." Até HTML tem conversão de tabelas...
The ORM acronym stands for Object Relational Mapper.
ORMs are a method to access and manipulate data using objects, instead of direct access to SQL backends or other data stores.
SQLRDD é DBF usando(simulando) SQL, continua tudo DBF(comandos), mas pode mudar tudo para SQL, neste caso o melhor é usar SQLMIX ou ADO mesmo.
Por isso não temos acesso a sintaxe SQL, escrevemos APPEND que é traduzido para INSERT e assim por diante.
Se é para escrever em SQL o SQLRDD perde seu uso. O que não ocorre com SQLMIX, nem com o ADO.
No caso ele escreveu:
dbCreate( "TEST_TABLE_MEMO", aStruct, cRDD )
Foi traduzido para isso:
Repare nos dois ultimos fields! Tem RECNO e DELETED para simular DBF por isso as tabelas não podem ser compartilhadas(R/W) com outros programas/sistemas.
Saudações,
Itamar M. Lins Jr.
O SQLRDD faz a mesma coisa é um pouco pior/melhor depende do ponto de vista de cada um, para mim é pior, melhor usa ADO a classe do José Quintas, ou SQLMIX, SQLMIX o resultado é em DBF ou não, depende do grau que o programador tem para interferir na classe SQLMIX.o que pode não interessar
Pois já tem um projeto bem grande do "Gringo" Harbour _ORM e Harbour_VFP que usa SQLMIX como ponte mas altera/melhora nem sei direito li rápido os fontes e tem coisa pra "dedeu..." Até HTML tem conversão de tabelas...
The ORM acronym stands for Object Relational Mapper.
ORMs are a method to access and manipulate data using objects, instead of direct access to SQL backends or other data stores.
SQLRDD é DBF usando(simulando) SQL, continua tudo DBF(comandos), mas pode mudar tudo para SQL, neste caso o melhor é usar SQLMIX ou ADO mesmo.
Por isso não temos acesso a sintaxe SQL, escrevemos APPEND que é traduzido para INSERT e assim por diante.
Se é para escrever em SQL o SQLRDD perde seu uso. O que não ocorre com SQLMIX, nem com o ADO.
No caso ele escreveu:
dbCreate( "TEST_TABLE_MEMO", aStruct, cRDD )
Foi traduzido para isso:
Código: Selecionar todos
CREATE TABLE `test_table_memo` ( `code_id` CHAR (8) NOT NULL,
`cardid` CHAR (1) ,
`d1` MEDIUMBLOB,
`d2` MEDIUMBLOB,
`d3` MEDIUMBLOB,
`d4` MEDIUMBLOB,
`sr_recno` BIGINT (15) NOT NULL UNIQUE AUTO_INCREMENT ,
`sr_deleted` CHAR (1) NOT NULL
) Type=InnoDb
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
xHarbour x SQLRDD - Samples
O SQLRDD fez todo sentido pra mim e provavelmente para outros pois permite ir migrando aos poucos.SQLRDD é DBF usando(simulando) SQL, continua tudo DBF(comandos), mas pode mudar tudo para SQL, neste caso o melhor é usar SQLMIX ou ADO mesmo.
Quem tem pouco ou nenhum conhecimento com o mundo SQL, encontra nesta ferramenta a solução, pois pode ir usando a sintaxe DBF ao mesmo tempo em que vai aprendendo e evoluindo no conceito SQL.
Depois desta parte entendida e vencida, avalia-se a possibilidade de usar outras soluções como já apontadas. Eu optei por manter SQLRDD até porque não iria mais dar continuidade em sistemas com xHarbour, o que nos leva a outro ponto:
É possível sim vários sistemas (até usando outras linguagens) usarem o mesmo banco, tabelas, etc ... pois é exatamente como tenho feito há muito tempo.Repare nos dois ultimos fields! Tem RECNO e DELETED para simular DBF por isso as tabelas não podem ser compartilhadas(R/W) com outros programas/sistemas.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
MySQL c/ SQLRDD
HwGui + GTWVG
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
xHarbour x SQLRDD - Samples
Olá!
Quem sabe disso blz, e quem não sabe ?
DBF não é o problema, os problemas são exatamente os comandos SQL que não podemos usar. Porque se for usar não precisa do SQLRDD.
O bom são os comandos SQL, e não usar sintaxe DBF.
Saudações,
Itamar M. Lins Jr.
Como tabela de apenas leitura. Quero ver um programa de fora adicionar registros, fora os indices que precisa saber. Como é que o programa de fora sabe o que é DELETED e RECNO ? Fora rlock(), flock(), dbunlock()...usarem o mesmo banco, tabelas, etc ...
Quem sabe disso blz, e quem não sabe ?
ADO E SQLMIX fazem a mesma coisa se quiser também.pois pode ir usando a sintaxe DBF ao mesmo tempo em que vai aprendendo e evoluindo no conceito SQL.
DBF não é o problema, os problemas são exatamente os comandos SQL que não podemos usar. Porque se for usar não precisa do SQLRDD.
O bom são os comandos SQL, e não usar sintaxe DBF.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
xHarbour x SQLRDD - Samples
E quem nesse planeta abre o SEU banco de dados pra "programa de fora" escrever nele? O maximo que ocorre eh a disponibilizacao de API's, que assim quem continua fazendo os processos de write (escrita) é o PROPRIETARIO e CONHECEDOR do bancoComo tabela de apenas leitura. Quero ver um programa de fora adicionar registros, fora os indices que precisa saber. Como é que o programa de fora sabe o que é DELETED e RECNO ? Fora rlock(), flock(), dbunlock()...
Quem sabe disso blz, e quem não sabe ?
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
xHarbour x SQLRDD - Samples
Olá!
Até aqui no forum já apareceu umas duas vezes alguém perguntando.
Os dados pertencem a empresa e não ao dono do programa. Pode criptografar a vontade, mas se o dono da empresa acionar a justiça, qualquer empresa de software perde. Não pode criptografar/senha para não deixar acessar os dados.
Como eu disse ANTES para leitura é blz!
Saudações,
Itamar M. Lins Jr.
Depende do tamanho da sua área de atuação. Eu já vi diversas vezes, quando trabalhei com a TOTVS... Em empresas pequenas é raro.E quem nesse planeta abre o SEU banco de dados pra "programa de fora" escrever nele?
Até aqui no forum já apareceu umas duas vezes alguém perguntando.
Os dados pertencem a empresa e não ao dono do programa. Pode criptografar a vontade, mas se o dono da empresa acionar a justiça, qualquer empresa de software perde. Não pode criptografar/senha para não deixar acessar os dados.
Como eu disse ANTES para leitura é blz!
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
sasquast
- Usuário Nível 1

- Mensagens: 29
- Registrado em: 31 Jul 2019 16:47
- Localização: Volta Redonda / RJ
xHarbour x SQLRDD - Samples
Muito obrigado a todos pelas orientações.
Vou seguir o caminho do ADO, ao menos por enquanto, pois estamos avaliando ainda essa migração DBF > SQL.
Vou seguir o caminho do ADO, ao menos por enquanto, pois estamos avaliando ainda essa migração DBF > SQL.
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
xHarbour x SQLRDD - Samples
Quem em sã consciência abre caminho de suas tabelas para que outros programas de fora as usem ?Como tabela de apenas leitura. Quero ver um programa de fora adicionar registros, fora os indices que precisa saber. Como é que o programa de fora sabe o que é DELETED e RECNO ? Fora rlock(), flock(), dbunlock()...
Quem sabe disso blz, e quem não sabe ?
Onde fica a segurança dos dados nisso ?
Pouquíssimas vezes clientes pediram isso e eu disse que NÃO !
Como expliquei no post anterior, é só correr a tela e reler, tá explicadinho lá o contexto.DBF não é o problema, os problemas são exatamente os comandos SQL que não podemos usar. Porque se for usar não precisa do SQLRDD.
O bom são os comandos SQL, e não usar sintaxe DBF.
É notório que o nosso amiguinho baiano não simpatiza com nada do mundo xHarbour, SQLRDD e etc... o que eu posso fazer ?
Sei lá, deve ter tido alguma desilusão amorosa com alguém de lá, enfim ...
Agora ... meu mundo é este ... tudo isso tem pago as contas há quase vinte anos.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
MySQL c/ SQLRDD
HwGui + GTWVG