Bom dia.
Estou com um problema neste trecho abaixo que estou batalhando desde segunda feira, mas não consigo entender o motivo do erro. Estou tentando implementar o uso de query's parametrizadas, porém o código abaixo, hora funciona, hora não funciona aleatoriamente, e não consigo identificar o motivo. Já fiz tudo que é imaginável nessa rotina abaixo e ela não funciona. Já descartei as possibilidades de erro de comunicação com o banco, erro nos dados, espaços, tamanho de campo, etc, etc, etc
Inclusive o código original do programa, que mostro no final desta mensagem funciona perfeitamente. Esta faltando alguma coisa que não consigo identificar, ou algum "pulo do gato" que não conheço.
Gostaria de saber se tem algum erro no código abaixo, e se tem alguma forma de exibir a query completa que foi enviada ao banco para poder depurar onde esta acontecendo o erro.
Qualquer dica será muito bem vinda.
Code:
Procedure ManterDados_PTC_Company String sTipoManutencao String sIDConexaoSQL tDados_PTC_Company vtDados_PTC_Company
Handle hoSQL hdbc hstmt
String sLinhaSQL sAux
Integer iCNPJ iRazao iEndereco iNumero iCompl iCEP iCidade iUF iFone iEmail iCodSys
//sTipoManutencao (I)= Inclusão (A)= Alteração
If (sTipoManutencao="I") Begin
Move "INSERT INTO ptc.PTC_Company" to sLinhaSQL
Move (sLinhaSQL*"(CNPJ, RazaoSocial, Endereco, Numero, Complemento, CEP, Cidade, UF, Fone, eMail, CodigoSistemaTogni)") to sLinhaSQL
Move (sLinhaSQL*"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);") to sLinhaSQL
//Posição dos coringas
Move 1 to iCNPJ
Move 2 to iRazao
Move 3 to iEndereco
Move 4 to iNumero
Move 5 to iCompl
Move 6 to iCEP
Move 7 to iCidade
Move 8 to iUF
Move 9 to iFone
Move 10 to iEmail
Move 11 to iCodSys
End
If (sTipoManutencao="A") Begin
Move "UPDATE ptc.PTC_Company" to sLinhaSQL
Move (sLinhaSQL*"Set RazaoSocial=?, Endereco=?, Numero=?, Complemento=?, CEP=?, Cidade=?, UF=?, Fone=?, eMail=?, CodigoSistemaTogni=?") to sLinhaSQL
Move (sLinhaSQL*"WHERE CNPJ=?;") to sLinhaSQL
//Posição dos coringas
Move 1 to iRazao
Move 2 to iEndereco
Move 3 to iNumero
Move 4 to iCompl
Move 5 to iCEP
Move 6 to iCidade
Move 7 to iUF
Move 8 to iFone
Move 9 to iEmail
Move 10 to iCodSys
Move 11 to iCNPJ
End
//*** Conectar ao Servidor de dados
Get Create U_cSQLHandleManager to hoSQL
Send SQLSetConnect of hoSQL "MSSQLDRV" ("DFCONNID="-Uppercase(sIDConexaoSQL))
Get SQLConnect of hoSQL "" "" to hdbc
If (hdbc<>0) Begin
Get SQLOpen of hdbc to hstmt
If (hstmt<>0) Begin
Send SqlSetParameter of hstmt iCNPJ (NFeRemoveSeparadores(vtDados_PTC_Company.sCNPJ))
Send SqlSetParameter of hstmt iRazao (trim(vtDados_PTC_Company.sRazaoSocial))
Send SqlSetParameter of hstmt iEndereco (trim(vtDados_PTC_Company.sEndereco))
Send SqlSetParameter of hstmt iNumero vtDados_PTC_Company.iNumero typeNumber
Send SqlSetParameter of hstmt iCompl (trim(vtDados_PTC_Company.sComplemento))
Send SqlSetParameter of hstmt iCEP (NFeRemoveSeparadores(vtDados_PTC_Company.sCEP))
Send SqlSetParameter of hstmt iCidade (trim(vtDados_PTC_Company.sCidade))
Send SqlSetParameter of hstmt iUF (trim(vtDados_PTC_Company.sUF))
Send SqlSetParameter of hstmt iFone (trim(vtDados_PTC_Company.sFone))
Send SqlSetParameter of hstmt iEmail (trim(vtDados_PTC_Company.seMail))
Send SqlSetParameter of hstmt iCodSys vtDados_PTC_Company.iCodigoSistemaTogni typeNumber
Send SQLExecDirect of hstmt sLinhaSQL
Send SQLClose of hStmt
End
Send SQLDisconnect of hDbc
End
Send Destroy_Object of hoSQL
End_Procedure
Abaixo o mesmo código sem a inserção dos valores via "SQLSetParameter" que esta funcionando, ou seja, com os mesmos dados:
Code:
If (SizeOfArray(sRetornoSelect)>0) Begin
//Já cadastrado, efetuar atualização
Move ("UPDATE ptc.PTC_Company SET RazaoSocial='"-TCOMPANY.Nome-"',Endereco='"-TCOMPANY.Endereco-"',Numero='"-TCOMPANY.NUMERO-"',Complemento='"-TCOMPANY.COMPL-"',CEP='"-NFeRemoveSeparadores(TCOMPANY.CEP)-"',Cidade='"-TCOMPANY.Cidade-"',UF='"-TCOMPANY.UF-"',Fone='"-TCOMPANY.FONE-"',eMail='"-TCOMPANY.EMAIL-"',CodigoSistemaTogni="-String(TCOMPANY.Codigo)-" WHERE CNPJ='"-NFeRemoveSeparadores(TCOMPANY.CNPJ)-"';") to sComandoSQL
Send ExecutaComandoSQL sComandoSQL sIDConexaoWEB
End
Else Begin
//Não cadastrou ainda, efetuar o cadastro
Move ("INSERT INTO ptc.PTC_Company (CNPJ,RazaoSocial,Endereco,Numero,Complemento,CEP,Cidade,UF,Fone,eMail,CodigoSistemaTogni) VALUES('"-NFeRemoveSeparadores(TCOMPANY.CNPJ)-"','"-TCOMPANY.Nome-"','"-TCOMPANY.Endereco-"','"-TCOMPANY.NUMERO-"','"-TCOMPANY.COMPL-"','"-NFeRemoveSeparadores(TCOMPANY.CEP)-"','"-TCOMPANY.Cidade-"','"-TCOMPANY.UF-"','"-NFeRemoveSeparadores(TCOMPANY.FONE)-"','"-TCOMPANY.EMAIL-"','"-String(TCOMPANY.Codigo)-"');") to sComandoSQL
Send ExecutaComandoSQL sComandoSQL sIDConexaoWEB
End