Harbour + SQLMIX
Moderador: Moderadores
Re: Harbour + SQLMIX
Itamar, o problema não é aparecer em tela depois que grava, é justamente a informação estar gravada no banco, ela não fica.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 8099
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 5 vezes
- Curtiram: 1 vez
Re: Harbour + SQLMIX
Olá!
Pois é.
Se grava só no DBF, vc tá mandando para o lugar errado.
Só se grava no SGBD(MySQL) e fecha e puxa novamente para o DBF.
Se tá no DBF esses dados novos, veio de onde ?
Pois é.
Se grava só no DBF, vc tá mandando para o lugar errado.
Só se grava no SGBD(MySQL) e fecha e puxa novamente para o DBF.
Se tá no DBF esses dados novos, veio de onde ?
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Re: Harbour + SQLMIX
Vamos por etapas, com certeza algo eu fiz errado :
Código para conectar ao banco Oracle :
Ele conecta, tanto que traz no TBrowse os dados que estão fisicamente gravados no banco de dados Oracle, eu abro a tabela pelo Oracle SQL Developer e vejo as informações que gravei por lá aparecerem no TBrowse.
Uso esse código para gravar os dados :
Seguindo essa lógica, o que está faltando fazer ?
Detalhe, executei o exemplo do SQLMIX que usa MySQL e deu certo, grava fisicamente no banco, mas, com Oracle, não funciona !
Se eu consigo conectar, pegar os dados, exibir em tela, quer dizer que não tem problema com a conexão, certo ?
Código para conectar ao banco Oracle :
Código: Selecionar todos
rddSetDefault( "SQLMIX" )
/*
conectar com o banco : oracle
*/
cRDD := "SQLMIX"
oCon := RDDInfo( RDDI_CONNECT, {"OCILIB", "localhost", "system", "102030", "oracle18c"}, cRDD )
IF oCon == NIL
alert("Erro ao conectar!")
RETURN( nil )
else
alert('Oracle conectado')
ENDIF
Uso esse código para gravar os dados :
Código: Selecionar todos
produto->(dbCloseArea())
cSQL := "INSERT INTO produto (descricao,modelo) values ('teste1','teste2')"
If rddInfo( RDDI_EXECUTE, cSQL )
dbusearea( .T., , "SELECT * FROM produto", "produto" )
alert('gravou')
Else
alert('falhou')
EndIF
Detalhe, executei o exemplo do SQLMIX que usa MySQL e deu certo, grava fisicamente no banco, mas, com Oracle, não funciona !
Se eu consigo conectar, pegar os dados, exibir em tela, quer dizer que não tem problema com a conexão, certo ?
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 8099
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 5 vezes
- Curtiram: 1 vez
Re: Harbour + SQLMIX
Olá!
Infelizmente, eu não fiz testes com Oracle.
Mas achei isso aqui perguntando para IA. Parece que precisa do commit.
Infelizmente, eu não fiz testes com Oracle.
Mas achei isso aqui perguntando para IA. Parece que precisa do commit.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 8099
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 5 vezes
- Curtiram: 1 vez
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 8099
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 5 vezes
- Curtiram: 1 vez
Re: Harbour + SQLMIX
Olá!
Perguntei se podia mandar o COMMIT na sentença SQL, mas infelizmente ou fica ativado ou fica mandando depois toda vez que usar INSERT, UPDATE...
Perguntei se podia mandar o COMMIT na sentença SQL, mas infelizmente ou fica ativado ou fica mandando depois toda vez que usar INSERT, UPDATE...
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Re: Harbour + SQLMIX
Inseri no código principal :
também tem (no começo do fonte principal) :
mas, aparece o erro dizendo que DBI_SQL_AUTOCOMMIT não existe, e claro, buscando dentro do .CH, não existe mesmo.
a IA ajuda e não ajuda né !
Código: Selecionar todos
DBInfo( DBI_SQL_AUTOCOMMIT, .T. )Código: Selecionar todos
#include "dbinfo.ch"a IA ajuda e não ajuda né !
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 8099
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 5 vezes
- Curtiram: 1 vez
Re: Harbour + SQLMIX
Olá!
Tenta esse:
Tenta esse:
Código: Selecionar todos
// Força o commit no Oracle
rddInfo( RDDI_EXECUTE, "COMMIT" )Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Re: Harbour + SQLMIX
Agora a IA ajudou...rsss
inserindo após o INSERT o trecho de código :
grava fisicamente no banco ORACLE, problema resolvido, muito obrigado !
fica aqui o registro para quem for precisar um dia, em todos os outros bancos, os exemplos que usam SQLMIX funcionam 100%, porém....se vc for usar o ORACLE, ai tem que usar o COMMIT junto senão não grava no banco.
Abraços Itamar !
inserindo após o INSERT o trecho de código :
Código: Selecionar todos
rddInfo( RDDI_EXECUTE, "COMMIT" )fica aqui o registro para quem for precisar um dia, em todos os outros bancos, os exemplos que usam SQLMIX funcionam 100%, porém....se vc for usar o ORACLE, ai tem que usar o COMMIT junto senão não grava no banco.
Abraços Itamar !
Re: Harbour + SQLMIX
Como fiz o mesmo questionamento no fórum internacional, acabei de postar a solução direcionando para esse link do fórum, ajudando mais pessoas.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 8099
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 5 vezes
- Curtiram: 1 vez
Re: Harbour + SQLMIX
Olá!
Tem mais essas dicas aqui, para evitar ficar mandando commit a cada sentença SQL no Oracle.
NÃO TESTEI!
Ou essa quando abrir a conexão:
Ou seja:
Tem que testar ai para ver se vai.
Fui ver o download é 2 Gib(Oracle) para testar aqui, muito grande e tenho que mudar de RPM para DEB... muito trabalho, fica para a próxima os testes.
Tem mais essas dicas aqui, para evitar ficar mandando commit a cada sentença SQL no Oracle.
NÃO TESTEI!
Código: Selecionar todos
rddInfo( RDDI_EXECUTE, "SET AUTOCOMMIT ON" )Código: Selecionar todos
cConn := "DBE=ORA;LOG=usuario/senha@instancia;AUTOCOMMIT=Y"
Código: Selecionar todos
oCon := RDDInfo( RDDI_CONNECT, {"OCILIB", "localhost", "system", "102030", "oracle18c", "AUTOCOMMIT=Y"}, cRDD )
Fui ver o download é 2 Gib(Oracle) para testar aqui, muito grande e tenho que mudar de RPM para DEB... muito trabalho, fica para a próxima os testes.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
