Clipper On Line • Ver Tópico - INSERT usando SQLRDD no MYSql

INSERT usando SQLRDD no MYSql

Discussão sobre SQL

Moderador: Moderadores

 

INSERT usando SQLRDD no MYSql

Mensagempor jelias » 18 Out 2014 18:22

Amiguinhos,

Temos um sistema feito em PHP+MYSQL que roda nas nuvens e os representantes comerciais da empresa fazem seus pedidos através do mesmo, e na empresa fiz integração no sistema usando xHarbour 1.2.1 + SQLRDD, trazendo os pedidos e atualizando os dados de cadastros na nuvens.
Tudo está funcionando certinho, mais tenho que melhorar um processo que é o INSERT.
Quando estou cadastrando dados nas nuvens, mesmo usando o comando SR_CommitTransaction() após cada atualização, a alteração que é concretizada no bando de dados, somente ocorre verdadeiramente quando eu fecho a conexão. SR_EndConnection( nCnn )

Abertura do banco de dados

  //-------------------------------------------------------------------------
   // Primeiro fazer teste de conectividade com o banco nas Nuvens
   //
   nCnn = sr_addConnection( CONNECT_MYSQL, "MYSQL=;UID=;PWD=;DTB=;PORT=3306")
   if nCnn < 0
      mensagem("Erro de conexao com o banco de dados!",3)
      MENSAGEM("Nao sera possivel usar esta opcao neste momento!",5)
      ABREARQ(,.F.)
      RESTSCREEN(00,00,24,79,aTel)
   else
      WIN3D("Conexao com o Banco de Dados",03,01,05,30,2,"9")
      @ 04,05 say "Conectado com SUCESSO"
      sr_msg(2)
      sr_setfastopen(.T.)
      sr_setbaselang(2)
      sr_setactiveconnection( nCnn )
   end


Comando INSERT

nConect=sr_getconnection()
      nConect:exec([INSERT INTO tb_v_produtos (vstrCodProduto,vstrDescricao,vstrPrecoTab,vdecDesconto1,vdecDesconto2,vdecDesconto3,vdecDesconto4,vdecDesconto5,vdecDesconto6,vdecDescAtcd1,vdecDescAtcd2,vdecDescAtcd3,vdecDescAtcd4,vdecDescAtcd5,vstrTipo,vstrCodBarra,vintStatus) ]+;
      [VALUES ("]+ALLTRIM(AL_ESTOQ->codigo)+;
      [","]+ALLTRIM(AL_ESTOQ->descri)+;
      [","]+ALLTRIM(TRANS(AL_ESTOQ->pretab,"99999999.99"))+;
      [","]+ALLTRIM(TRANS(AL_ESTOQ->indic1,"99.99"))+;
      [","]+ALLTRIM(TRANS(AL_ESTOQ->indic2,"99.99"))+;
      [","]+ALLTRIM(TRANS(AL_ESTOQ->indic3,"99.99"))+;
      [","]+ALLTRIM(TRANS(AL_ESTOQ->indic4,"99.99"))+;
      [","]+ALLTRIM(TRANS(AL_ESTOQ->indic5,"99.99"))+;
      [","]+ALLTRIM(TRANS(AL_ESTOQ->indic6,"99.99"))+;
      [","]+ALLTRIM(TRANS(AL_ESTOQ->desca1,"99.99"))+;
      [","]+ALLTRIM(TRANS(AL_ESTOQ->desca2,"99.99"))+;
      [","]+ALLTRIM(TRANS(AL_ESTOQ->desca3,"99.99"))+;
      [","]+ALLTRIM(TRANS(AL_ESTOQ->desca4,"99.99"))+;
      [","]+ALLTRIM(TRANS(AL_ESTOQ->desca5,"99.99"))+;
      [","]+cTipo+;
      [","]+ALLTRIM(AL_ESTOQ->codbar)+;
      [","]+IIF(AL_ESTOQ->situac="01","1",IIF(AL_ESTOQ->situac="03","3","2"))+[")])
      SR_CommitTransaction()


Espero resolver esta situação com a ajuda dos amigos e assim como no xHarbour poder atualizar o registro logo após o comitar.

Saudações,

Júlio.
xHarbour 1.2.1 (simplex) + BCC 5.8.2 + Hwgui + SQLRDD
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
jelias
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 249
Data de registro: 27 Ago 2008 11:32
Cidade/Estado: Minas Gerais
Curtiu: 0 vez
Mens.Curtidas: 16 vezes

INSERT usando SQLRDD no MYSql

Mensagempor Jairo Maia » 19 Out 2014 05:20

Olá Júlio,

Você não postou a função completa, então, apenas um palpite:

O comando SR_EndConnection() salva os dados pendentes e encerra a conexão. Como você disse, está funcionando, então um palpite:

Por acaso você não está executando mais de uma vez a sequência SR_BeginTransaction()/SR_EndTransaction(), está? Se sim, para cada sequencia SR_BeginTransaction()/SR_EndTransaction() você terá que usar um SR_CommitTransaction().
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

INSERT usando SQLRDD no MYSql

Mensagempor jelias » 19 Out 2014 10:32

Amigo Jairo, grato por responder.

Eu não uso as funções, SR_BeginTransaction()/SR_EndTransaction(). Neste caso deveria? Como e quando devo usá-las?

Sds,

Júlio.
xHarbour 1.2.1 (simplex) + BCC 5.8.2 + Hwgui + SQLRDD
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
jelias
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 249
Data de registro: 27 Ago 2008 11:32
Cidade/Estado: Minas Gerais
Curtiu: 0 vez
Mens.Curtidas: 16 vezes

INSERT usando SQLRDD no MYSql

Mensagempor Itamar M. Lins Jr. » 19 Out 2014 16:04

set autocommit = 0
See
http://dev.mysql.com/doc/refman/5.5/en/implicit-commit.html
The FLUSH and RESET statements cause an implicit commit.


Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

INSERT usando SQLRDD no MYSql

Mensagempor Jairo Maia » 20 Out 2014 07:38

Olá Júlio,

jelias escreveu:Eu não uso as funções, SR_BeginTransaction()/SR_EndTransaction(). Neste caso deveria? Como e quando devo usá-las?
Acho que você deve (ou pode) usar toda vez que for fazer uma transmissão:
SR_BeginTransaction()

try

  Seu código...

  SR_CommitTransaction()

catch e

  SR_RollbackTransaction()  // falhou? retoma ambiente anterior...

end

SR_EndTransaction()


No entanto, vendo com mais cuidado o comando INSERT, antes de qualquer alteração tente alterar a função SR_CommitTransaction() para:
SR_CommitTransaction( nConect )
ou
nConect:Commit()
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes




Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro