marcioe Posted May 4, 2016 Report Share Posted May 4, 2016 amigo, gera o SQL que voce esta tentando gravar no banco de dados. e posta aqui para galeara ver alem do código CREATE de sua tabela, dai dá pra simular o que esta errado Posta seu Skype Quote Link to comment Share on other sites More sharing options...
Valdir Posted May 4, 2016 Author Report Share Posted May 4, 2016 Pessoal... Agradeço à todos que se empenharam em ajudar a solucionar o meu problema. Graças a grande ajuda do amigo João Bosco, conseguimos identificar a causa do erro. cCmdSql:= "INSERT INTO aliquota (ufori,nomori,ufdest,nomdest,aliq,indexuf) VALUES('"+cUFORI+"','"+cNOMORI+"','"+cUFDEST+"','"+cNOMDEST+"',"+str(cAliq)+",'"+cINDEXUF+"')" Para variáveis tipo numérica, é necessário seguir a seguinte estrutura : "+str(cAliq)+", ou seja: Aspas duplas e o STR . Vaelu João Bosco. Brigadão. Abraços. Quote Link to comment Share on other sites More sharing options...
marcioe Posted May 4, 2016 Report Share Posted May 4, 2016 amigo, eu fiz esta funcão e tem me ajudado muito. *------------------------------------------------------------------------------- * *------------------------------------------------------------------------------- FUNCTION TRANSFORMA_SQL(VARIVEL_SQL,TIPO_VARIAVEL_SQL,TAMANHO_SQL,DECIMAIS_SQL) Cursor('SQL') RETORNO_SQL := "'" IF TIPO_VARIAVEL_SQL = "N" && Numerica IF Valtype(VARIVEL_SQL) = 'N' RETORNO_SQL := RETORNO_SQL + STR(VARIVEL_SQL,(TAMANHO_SQL),(DECIMAIS_SQL)) + "'" ELSE MsgStop('Parametro Passado Não é Válido '+ CHR(13) +'Conteudo.: '+ (VARIVEL_SQL) +CHR(13)+ 'Tipo Esperado.: '+ alltrim(TIPO_VARIAVEL_SQL) +CHR(13)+ 'Tipo Passado.: '+ alltrim(Valtype(TIPO_VARIAVEL_SQL))+CHR(13)+CHR(13)+'Favor Ligar para o Suporte '+ M->SUPORTE+chr(13)+ 'Rotina.: '+ ProcName()+chr(13)+'Linha.: '+ alltrim(str(ProcLine(),10,0)) ,sistema ) ENDIF ENDIF IF TIPO_VARIAVEL_SQL = "D" && Data IF VARIVEL_SQL = CTOD('') RETORNO_SQL := RETORNO_SQL + '00000000' + "'" ELSE RETORNO_SQL := RETORNO_SQL + DTOS(VARIVEL_SQL) + "'" ENDIF ENDIF IF TIPO_VARIAVEL_SQL = "T" &&&.OR. TIPO_VARIAVEL_SQL = "C" && Caracter, && Texto IF TIPO_VARIAVEL_SQL != "C" VARIVEL_SQL := TiraAcento(VARIVEL_SQL) ENDIF RETORNO_SQL := RETORNO_SQL + PADR(ALLTRIM( UPPER(VARIVEL_SQL) ),(TAMANHO_SQL)) + "'" ENDIF IF TIPO_VARIAVEL_SQL = "B" && BLOB RETORNO_SQL := RETORNO_SQL + ANY2SQL( MemoRead( (VARIVEL_SQL) )) + "'" ENDIF IF TIPO_VARIAVEL_SQL = "L" && Logico RETORNO_SQL := RETORNO_SQL + IF(VARIVEL_SQL=(.T.),"S","N") + "'" ENDIF IF TIPO_VARIAVEL_SQL = "C" && Caracter, sem remover os acentos RETORNO_SQL := RETORNO_SQL + PADR(ALLTRIM(upper(VARIVEL_SQL)),(TAMANHO_SQL)) + "'" ENDIF RETURN RETORNO_SQL Quem sabe pode ajudar voce . Exemplo de Uso BEGIN TRANSACTION cQuery_Mtabela := "INSERT INTO bancos ( " cQuery_Mtabela := cQuery_Mtabela + "NOME" cQuery_Mtabela := cQuery_Mtabela + ",ENDERECO" cQuery_Mtabela := cQuery_Mtabela + ",BAIRRO" cQuery_Mtabela := cQuery_Mtabela + ",CEP" cQuery_Mtabela := cQuery_Mtabela + ",CIDADE" cQuery_Mtabela := cQuery_Mtabela + ",ESTADO" cQuery_Mtabela := cQuery_Mtabela + ",TELEFONE" cQuery_Mtabela := cQuery_Mtabela + ",FAX" cQuery_Mtabela := cQuery_Mtabela + ",NUMERO_DO_BANCO" cQuery_Mtabela := cQuery_Mtabela + ",AGENCIA" cQuery_Mtabela := cQuery_Mtabela + ",CONTA" cQuery_Mtabela := cQuery_Mtabela + ",NUMCHE" cQuery_Mtabela := cQuery_Mtabela + ",TIPO_CT" cQuery_Mtabela := cQuery_Mtabela + ",FILIAL_E" cQuery_Mtabela := cQuery_Mtabela + ",CARTEIRA" cQuery_Mtabela := cQuery_Mtabela + ",ADICIONAL_BOLETO" cQuery_Mtabela := cQuery_Mtabela + ",ULTIMO_NUMERO" cQuery_Mtabela := cQuery_Mtabela + ",DIGITO_AGENCIA" cQuery_Mtabela := cQuery_Mtabela + ",DIGITO_CONTA" cQuery_Mtabela := cQuery_Mtabela + ",DESCONTO_ANTECIPACAO" cQuery_Mtabela := cQuery_Mtabela + ",MULTA_ATRASO" cQuery_Mtabela := cQuery_Mtabela + ",MORA_ATRASO" cQuery_Mtabela := cQuery_Mtabela + ",PROTESTAR_APOS" cQuery_Mtabela := cQuery_Mtabela + ",CAMINHO_LAYOUT" cQuery_Mtabela := cQuery_Mtabela + ",GERAR_REMESSA" cQuery_Mtabela := cQuery_Mtabela + ",MONE_LAYOUT_REMESSA" cQuery_Mtabela := cQuery_Mtabela + ",INSTRUCOOES" cQuery_Mtabela := cQuery_Mtabela + ",CODIGO_CEDENTE" cQuery_Mtabela := cQuery_Mtabela + ",SEQUENCIA_REMESSA" cQuery_Mtabela := cQuery_Mtabela + ",TIPO_BOLETO" cQuery_Mtabela := cQuery_Mtabela + ",MODELO_BOLETO_A4" cQuery_Mtabela := cQuery_Mtabela + ",MARGEM_SUPERIOR_A4" cQuery_Mtabela := cQuery_Mtabela + ",CONFIGURACAO_EXTRA_1" cQuery_Mtabela := cQuery_Mtabela + ",CONFIGURACAO_EXTRA_2" cQuery_Mtabela := cQuery_Mtabela + ",TAMANHO_NOSSO_NUMERO" cQuery_Mtabela := cQuery_Mtabela + " ) VALUES ( " cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_NOME_BANCO,"T",35,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_ENDE_BANCO,"T",28,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_BAIR_BANCO,"T",18,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_CEP__BANCO,"T",09,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_CIDA_BANCO,"T",22,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_ESTA_BANCO,"T",02,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_TELE_BANCO,"T",14,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_FAX__BANCO,"T",14,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_NUME_BANCO,"T",06,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_AGEN_BANCO,"T",10,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_CONT_BANCO,"T",35,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_CHEQ_BANCO,"N",06,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(IF(T_TIPO_CTA="Corrente",1,IF(T_TIPO_CTA="Poupança",2,IF(T_TIPO_CTA=" ",0,0))),"N",35,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_CODI_EMPRESA,"N",06,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_CARTEIRA,"T",03,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_CUSTO_EMISSAO,"N",18,4) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_ULTIMO_BOLETO,"N",18,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_DGV_AGENCIA,"T",01,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_DGV_CONTA,"T",01,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_DESC_ANTECIP,"N",07,3) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_MULTA_BOLETO,"N",07,3) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_MORA_BOLETO,"N",07,3) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_DIAS_PROTESTO,"N",04,0) + "," cQuery_Mtabela := cQuery_Mtabela + ANY2SQL(T_DADOS_LAYOUT) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(IF(T_GERAR_REMSSSA=(.T.),"S","N"),"T",01,0)+ "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_LAYOUT_REMSSA,"T",45,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_INSTRUCOES_BOL,"T",250,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_CODIGO_CEDENTE,"T",20,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_CODIGO_SEQUENCIA,"N",10,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_TIPO_BOLETO,"N",01,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_OPCAO_EMISSAO_MODELO_BOLETO,"N",01,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_MARGEM_SUPERIOR_BOLETO,"N",06,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_CONFIGURACAO_EXTRA_1,"T",10,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_CONFIGURACAO_EXTRA_2,"T",10,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(T_TAMANHO_CAMPO_NOSSO_NUMERO,"N",06,0) cQuery_Mtabela := cQuery_Mtabela + " )" COMITAR_DADOS_SQL(cQuery_Mtabela) END TRANSACTION Traduzindo para o Seu caso Seria algo mais ou menos assim BEGIN TRANSACTION cQuery_Mtabela := "INSERT INTO aliquota ( " cQuery_Mtabela := cQuery_Mtabela + " ufori" cQuery_Mtabela := cQuery_Mtabela + ",nomori" cQuery_Mtabela := cQuery_Mtabela + ",ufdest" cQuery_Mtabela := cQuery_Mtabela + ",nomdest" cQuery_Mtabela := cQuery_Mtabela + ",aliq" cQuery_Mtabela := cQuery_Mtabela + ",indexuf" cQuery_Mtabela := cQuery_Mtabela + ") VALUES( " cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(cUFORI,"T",02,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(cNOMORI,"T",10,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(cUFDEST,"T",02,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(cUFDEST,"T",02,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(cNOMDEST,"T",02,0) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(cAliq,"N",06,2) + "," cQuery_Mtabela := cQuery_Mtabela + TRANSFORMA_SQL(cINDEXUF,"T",02,2) cQuery_Mtabela := cQuery_Mtabela + " )" COMITAR_DADOS_SQL(cQuery_Mtabela) END TRANSACTION tenho esta função que retorna o erro do banco de dados *=============================================================================== * Funcao para Comitar o comando de Insercao de dados em uma TABELA mysql *=============================================================================== FUNCTION COMITAR_DADOS_SQL(cQuery_Mtabela) Cursor("SQL") sql execute( cQuery_Mtabela ) IF SQLErrorNO() > 0 ERROS := 1 TXT_ERROS := " FAVOR LIGAR PARA O SUPORTE O MAIS RAPIDO POSSIVEL " + CRTLF TXT_ERROS := TXT_ERROS + "==================================================================" + CRTLF TXT_ERROS := TXT_ERROS + "ERRO.: " + SQLErrorMsg() + CRTLF TXT_ERROS := TXT_ERROS + "SQL Nº.: " + STR(SQLErrorNO(),06,0) + CRTLF TXT_ERROS := TXT_ERROS + "BANCO DE DADOS.: " + ALLTRIM(SQLGETDBINFO()) + CRTLF TXT_ERROS := TXT_ERROS + "LINHA.: " + STR(PROCLINE(),10,0) + CRTLF TXT_ERROS := TXT_ERROS + "==================================================================" + CRTLF TXT_ERROS := TXT_ERROS + " DESCRICAO COMPLETA DA OPERACAO/COMANDO " + CRTLF TXT_ERROS := TXT_ERROS + "==================================================================" + CRTLF TXT_ERROS := TXT_ERROS + ALLTRIM(cQuery_Mtabela)+ CRTLF + CRTLF TXT_ERROS := TXT_ERROS + "==================================================================" + CRTLF MOSTAR_ERROS_DADOS(TXT_ERROS) **MsgStop(SQLErrorMsg()+"Erro ao Cadastar a Informação => ERRO SQL Nº.: " + STR(SQLErrorNO(),06,0) + CHR(13)+"Erro ao Tentar Executar o Comando Abaixo"+CHR(13)+ALLTRIM(cQuery_Mtabela) +CHR(13)+"Servidor de Banco de Dados " + alltrim(SQLGETDBINFO()) +CHR(13)+ "ERRO"+ SQLErrorMsg(),SISTEMA ) RETURN(.F.) ELSE SQL EXECUTE('COMMIT') RETURN(.T.) ENDIF Quote Link to comment Share on other sites More sharing options...
evertonlb Posted May 4, 2016 Report Share Posted May 4, 2016 Bom dia pessoal... Obrigado a todos pelas dicas. Ta funcionando. To com uma dificuldade na atualização da tabela que só aparece o registro ( no WorkBench ) após fechar o programa ( que só tem um cadastro simples, por hora ) Mas vou ver o manual da SLQLIB. Att. Everton Quote Link to comment Share on other sites More sharing options...
Valdir Posted May 4, 2016 Author Report Share Posted May 4, 2016 Olá amigo Márcio... Obrigado por compartilhar seus conhecimentos, Com certeza estarei adotando o seu exemplo, se assim o permitir. Do jeito que exemplificou, ficou muito claro a simplicidade da sua função. Brigadão. Quote Link to comment Share on other sites More sharing options...
marcioe Posted May 4, 2016 Report Share Posted May 4, 2016 Claro que podem usar a vontade, e até aprimorar. Usem a vontade. é para isso que estamos em uma comunidade, para compartilhar para Somar. Manda Ver Quote Link to comment Share on other sites More sharing options...
Jorge Andrade Posted May 4, 2016 Report Share Posted May 4, 2016 Bom dia pessoal... Obrigado a todos pelas dicas. Ta funcionando. To com uma dificuldade na atualização da tabela que só aparece o registro ( no WorkBench ) após fechar o programa ( que só tem um cadastro simples, por hora ) Mas vou ver o manual da SLQLIB. Att. Everton Everton, bom dia, vc não tem que dar um refresh na Table/Bd? Sei que na SQLRDD vc tem o SR_DBREFRESH limpa as informações e que atualiza as informações, mas no seu caso, vc está usando a TDOLPHIN/SQLLIB, então não sei se existe algo semelhante. []s, evertonlb 1 Quote Link to comment Share on other sites More sharing options...
joaosolution Posted May 4, 2016 Report Share Posted May 4, 2016 Everton Boa tarde Veja se você está executando commit TRY START TRANSACTION SQL EXECUTE cSql SQL EXECUTE "COMMIT" END TRANSACTION CATCH oErro MsgAlert( "Erro : " + oErr:Operation + " -> " + oErr:Description ) lRetSql := .F. END Att João Bosco evertonlb 1 Quote Link to comment Share on other sites More sharing options...
evertonlb Posted May 4, 2016 Report Share Posted May 4, 2016 Everton, bom dia, vc não tem que dar um refresh na Table/Bd? Sei que na SQLRDD vc tem o SR_DBREFRESH limpa as informações e que atualiza as informações, mas no seu caso, vc está usando a TDOLPHIN/SQLLIB, então não sei se existe algo semelhante. []s, Ola brother.. na SqlLib é SQLRefresh() Acabei de decobrir! Faltava duas coisas o Commit e o Refresh. Obrigado Quote Link to comment Share on other sites More sharing options...
evertonlb Posted May 4, 2016 Report Share Posted May 4, 2016 Everton Boa tarde Veja se você está executando commit TRY START TRANSACTION SQL EXECUTE cSql SQL EXECUTE "COMMIT" END TRANSACTION CATCH oErro MsgAlert( "Erro : " + oErr:Operation + " -> " + oErr:Description ) lRetSql := .F. END Att João Bosco Faltava o commit e o refresh João.. Obrigado! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.