Página 2 de 2

Re: Harbour + SQLMIX

Enviado: 02 Mai 2026 13:12
por MSDN_7
Itamar, o problema não é aparecer em tela depois que grava, é justamente a informação estar gravada no banco, ela não fica.

Re: Harbour + SQLMIX

Enviado: 02 Mai 2026 13:16
por Itamar M. Lins Jr.
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 ?

Re: Harbour + SQLMIX

Enviado: 02 Mai 2026 13:25
por MSDN_7
Vamos por etapas, com certeza algo eu fiz errado :
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
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 :

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

Re: Harbour + SQLMIX

Enviado: 02 Mai 2026 13:33
por Itamar M. Lins Jr.
Olá!
Infelizmente, eu não fiz testes com Oracle.
Mas achei isso aqui perguntando para IA. Parece que precisa do commit.
Captura_de_tela_20260502_133247.png
Captura_de_tela_20260502_133247.png (75.1 KiB) Exibido 162 vezes

Re: Harbour + SQLMIX

Enviado: 02 Mai 2026 13:35
por MSDN_7
Isso eu não sabia, o que a IA disse depois, qual o comando ?

Re: Harbour + SQLMIX

Enviado: 02 Mai 2026 13:35
por Itamar M. Lins Jr.
Olá!
Captura_de_tela_20260502_133454.png
Captura_de_tela_20260502_133454.png (79.17 KiB) Exibido 158 vezes

Re: Harbour + SQLMIX

Enviado: 02 Mai 2026 13:55
por Itamar M. Lins Jr.
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...
Captura_de_tela_20260502_135334.png
Captura_de_tela_20260502_135334.png (78.89 KiB) Exibido 136 vezes

Re: Harbour + SQLMIX

Enviado: 02 Mai 2026 13:56
por MSDN_7
Inseri no código principal :

Código: Selecionar todos

DBInfo( DBI_SQL_AUTOCOMMIT, .T. )
também tem (no começo do fonte principal) :

Código: Selecionar todos

#include "dbinfo.ch"
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é !

Re: Harbour + SQLMIX

Enviado: 02 Mai 2026 14:00
por Itamar M. Lins Jr.
Olá!
Tenta esse:

Código: Selecionar todos

// Força o commit no Oracle
rddInfo( RDDI_EXECUTE, "COMMIT" )

Re: Harbour + SQLMIX

Enviado: 02 Mai 2026 14:02
por MSDN_7
Agora a IA ajudou...rsss
inserindo após o INSERT o trecho de código :

Código: Selecionar todos

rddInfo( RDDI_EXECUTE, "COMMIT" )
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 !

Re: Harbour + SQLMIX

Enviado: 02 Mai 2026 14:05
por MSDN_7
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.

Re: Harbour + SQLMIX

Enviado: 02 Mai 2026 14:37
por Itamar M. Lins Jr.
Olá!
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" )
Ou essa quando abrir a conexão:

Código: Selecionar todos

cConn := "DBE=ORA;LOG=usuario/senha@instancia;AUTOCOMMIT=Y"
Ou seja:

Código: Selecionar todos

     oCon := RDDInfo( RDDI_CONNECT, {"OCILIB", "localhost", "system", "102030", "oracle18c", "AUTOCOMMIT=Y"}, cRDD )
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.