Valdir Posted May 2, 2016 Report Share Posted May 2, 2016 Bom dia pessoal.. Como falei antes, comecei a brincar e aprender os comandos SQL nativos. Já na minha primeira experiência, deparei com o seguinte erro: - "Data truncated for column 'aliq' at row 1" No Bd a estrutura está assim : - aliq,double,6,2, null Trata-se de um simples cadastro de aliquotas do ICMS. Pelo que entendi, seria o tamanho do campo na tabela que estaria errado. Más como podem ver, o tamanho está correto. Alguém, por favor, poderia me explicar o que posso estar fazendo de errado ? Obrigado. Quote Link to comment Share on other sites More sharing options...
marcioe Posted May 2, 2016 Report Share Posted May 2, 2016 Dados truncados para a coluna Quote Link to comment Share on other sites More sharing options...
kleyber Posted May 2, 2016 Report Share Posted May 2, 2016 Aumente o tamanho desse campo na tabela. Coloque tipo 10,2. Quote Link to comment Share on other sites More sharing options...
evertonlb Posted May 2, 2016 Report Share Posted May 2, 2016 Olha.. aproveitando que o Valdir ta mexendo com comandos SQL, resolvi também aprender para, aos poucos, ir mudando meus comandos do DBase para SQL. Estou usando a SQLLib e montei uma inclusão de dados assim: Sql_Command := "Insert To Clientes" Sql_Command += "codigocliente, nomecliente, cidade, loja, telefonefixo, telefonecelular, Anotacoes" Sql_Command += "VALUES" Sql_Command += "cCodigoCliente, cNomeCliente, cCidade, cLoja, cTelefoneFixo, cTelefoneCelular, cAnotacao" BEGIN TRANSACTION SQl EXECUTE Sql_Command SQL COMMIT END TRANSACTION Não dá erro, mas também não inclui o registro.. Já verifiquei o manual e alguns tópicos no fórum, infelizmente não cheguei a uma conclusão de onde está o erro.. Alguem poderia dar uma dica? Att. Everton Quote Link to comment Share on other sites More sharing options...
Valdir Posted May 2, 2016 Author Report Share Posted May 2, 2016 Amigos... Obrigado pelas respostas. Kleyber, infelizmente não funfou. Tem como saber o tamanho do campo da tabela em tempo de execução ? Tipo assim... colocando um break point . Obrigado. Quote Link to comment Share on other sites More sharing options...
marcioe Posted May 2, 2016 Report Share Posted May 2, 2016 Pelo que vi está faltando espaço e o IN antes do TO . Veja assim Sql_Command := "Insert in To Clientes " Sql_Command += " codigocliente, nomecliente, cidade, loja, telefonefixo, telefonecelular, Anotacoes " Sql_Command += " VALUES " Sql_Command += " cCodigoCliente, cNomeCliente, cCidade, cLoja, cTelefoneFixo, cTelefoneCelular, cAnotacao" evertonlb 1 Quote Link to comment Share on other sites More sharing options...
evertonlb Posted May 2, 2016 Report Share Posted May 2, 2016 Não é Marcio.. continuarei tentando! Obrigado. Att.. Everton Quote Link to comment Share on other sites More sharing options...
marcioe Posted May 2, 2016 Report Share Posted May 2, 2016 deu certo não amigo,Se não der certo posta a estrutura da sua tabela lembrando que as vezes pode ser conversão de dados Tipo codigocliente é INT(6) e esta recebendo da variavel cCodigoCliente como sendo char(06) Quote Link to comment Share on other sites More sharing options...
joaosolution Posted May 2, 2016 Report Share Posted May 2, 2016 Everton Boa tarde No INSERT INTO o INTO é junto Att João Bosco evertonlb 1 Quote Link to comment Share on other sites More sharing options...
marcioe Posted May 2, 2016 Report Share Posted May 2, 2016 verdade joao Quote Link to comment Share on other sites More sharing options...
evertonlb Posted May 2, 2016 Report Share Posted May 2, 2016 Obrigado João. Juntei o "In" com o "To", mas mesmo assim não dá mensagem de erro e não grava!! Att. Everton Quote Link to comment Share on other sites More sharing options...
joaosolution Posted May 2, 2016 Report Share Posted May 2, 2016 Everton Boa tarde Você estou a mesma string de insert em algum aplicativo externo, ex, SqlYog ou HeidiSql? Se quiser chamar no skype: joaosolution@hotmail.com Att João Bosco Quote Link to comment Share on other sites More sharing options...
evertonlb Posted May 2, 2016 Report Share Posted May 2, 2016 deu certo não amigo, Se não der certo posta a estrutura da sua tabela lembrando que as vezes pode ser conversão de dados Tipo codigocliente é INT(6) e esta recebendo da variavel cCodigoCliente como sendo char(06) codigocliente varchar(10) PK nomecliente varchar(45) cidade varchar(45) loja varchar(45) telefonefixo varchar(45) telefonecelular varchar(45) Anotacoes longtext Marcio. coloquei tudo como VarChar, mas a variável do codigo é numérica ai uso o Strzero(). Deveria dar certo não e mesmo? Att. Everton Quote Link to comment Share on other sites More sharing options...
netsys Posted May 2, 2016 Report Share Posted May 2, 2016 Tente assim: Sql_command:="Insert into Clientes ( codigocliente, nomecliente, cidade, loja, telefonefixo, telefonecelular, anotacoes ) VALUES ( " Sql_command+=Any2Sql(cCodigocliente)+"," Sql_command+=Any2Sql(cNomecliente)+"," Sql_command+=Any2Sql(cCidade)+"," Sql_command+=Any2Sql(cLoja)+"," Sql_command+=Any2Sql(cTelefonefixo)+"," Sql_command+=Any2Sql(cTelefonecelular)+"," Sql_command+=Any2Sql(cAnotacao)+")" SqlExecute(Sql_command) Depois veja se ele criou um sqllog.txt com algum erro na pasta do sistema. abs Alberto - SP Quote Link to comment Share on other sites More sharing options...
Jorge Andrade Posted May 3, 2016 Report Share Posted May 3, 2016 No caso do Everton, acho que o netsys matou a questão, não identifiquei espaço entre o values e demais conteúdo da instrução, enquanto a do Valdir, eu tentaria numeric com decimais. []S, Quote Link to comment Share on other sites More sharing options...
Valdir Posted May 3, 2016 Author Report Share Posted May 3, 2016 Olá amigo Jorge... Obrigado por responder, más infelizmente também não funfou. Quando Incluo ou altero os valores dos campos tipo VarChar não tenho problemas. Agora quando tento Gravar um campo Numérico, aparece o erro: "DATA TRUNCATED for Column Aliq at Row 1" Acontece que o campo 'Aliq' da Tabela está como numérico (Double) com duas casas decimais. Já troquei seus tipos também e não obtive sucesso. Alguma outra sugestão ? Obrigado. Quote Link to comment Share on other sites More sharing options...
evandro Posted May 3, 2016 Report Share Posted May 3, 2016 Olá, Grande Valdir! Tudo bem? Isto é que dá ficar só na pescaria. Não vi ainda o comando/query que origina o erro. Quote Link to comment Share on other sites More sharing options...
Valdir Posted May 3, 2016 Author Report Share Posted May 3, 2016 Amado Mestre e Guru Evandro.. Blz meu amigo.? Eis o código: oQry = oServer:Query( "SELECT * FROM fivesys.aliquota Order by ufori" ) oQry:SetPages( 100 ) cCmdSql:= "INSERT INTO aliquota (ufori,nomori,ufdest,nomdest,aliq,indexuf) VALUES('"+cUFORI+"','"+cNOMORI+"','"+cUFDEST+"','"+cNOMDEST+"','+cAliq+','"+cINDEXUF+"')" oServer:Execute( cCmdSql ) ************************************************************************************ ** Erro ao tentar Incluir um novo registro no Bd. ** Error description: Error MYSQL/1265 Data truncated for column 'aliq' at row 1 ** No Bd a estrutura está assim : ** - aliq,double,6,2, null ************************************************************************************ Obrigado e forte abraço. Quote Link to comment Share on other sites More sharing options...
joaosolution Posted May 3, 2016 Report Share Posted May 3, 2016 Valdir Mostra a string convertida : ? cCmdSql ou MsgAlert(cCmdSql) Att João Bosco Quote Link to comment Share on other sites More sharing options...
Valdir Posted May 3, 2016 Author Report Share Posted May 3, 2016 Valdir Mostra a string convertida : ? cCmdSql ou MsgAlert(cCmdSql) Att João Bosco Olá amigo João Bosco Obrigado por responder. cCmdSql = "INSERT INTO aliquota (ufori,nomori,ufdest,nomdest,aliq,indexuf) VALUES('"SP"','"SAO PAULO"','"SP','"SAO APULO"','cAliq','"SPSP"')" Reparei que a variável cAliq não passa o valor pencentual de 18,00% para a cCmdSql. Esta variável recebe um valor digitado pelo usuário. Neste caso seria de 18,00% Num teste aqui, substitui a variavel cAlq pelo valor de 18,00... gravou sem problemas. Talvez o problema esteja relacionado na forma de repassar o valor da cAliq no cCmdSql. Será que é isso ? Obrigado. Quote Link to comment Share on other sites More sharing options...
joaosolution Posted May 3, 2016 Report Share Posted May 3, 2016 Valdir Se o cAliq é valor não precisa colocar as aspas ' ', nem simples, nem dupla o comando deve ficar assim: cCmdSql = "INSERT INTO aliquota (ufori,nomori,ufdest,nomdest,aliq,indexuf) VALUES('"SP"','"SAO PAULO"','"SP','"SAO APULO"',18,'"SPSP"')" o meu comando ficaria assim: INSERT INTO aliquota (ufori,nomori,ufdest,nomdest,aliq,indexuf) VALUES('SP','SAO PAULO','SP','SAO APULO',18,'SPSP') ou assim, se for varchar: INSERT INTO aliquota (ufori,nomori,ufdest,nomdest,aliq,indexuf) VALUES('SP','SAO PAULO','SP','SAO APULO','18','SPSP') Att João Bosco Quote Link to comment Share on other sites More sharing options...
Valdir Posted May 3, 2016 Author Report Share Posted May 3, 2016 Valdir Se o cAliq é valor não precisa colocar as aspas ' ', nem simples, nem dupla o comando deve ficar assim: cCmdSql = "INSERT INTO aliquota (ufori,nomori,ufdest,nomdest,aliq,indexuf) VALUES('"SP"','"SAO PAULO"','"SP','"SAO APULO"',18,'"SPSP"')" o meu comando ficaria assim: INSERT INTO aliquota (ufori,nomori,ufdest,nomdest,aliq,indexuf) VALUES('SP','SAO PAULO','SP','SAO APULO',18,'SPSP') ou assim, se for varchar: INSERT INTO aliquota (ufori,nomori,ufdest,nomdest,aliq,indexuf) VALUES('SP','SAO PAULO','SP','SAO APULO','18','SPSP') Att João Bosco Exatamente meu amigo... O problema está relacionado com o valor da cAliq que não está sendo passado para acCmdSql. Quando substituo a cAliq pelo valor literal de 18, o registro é incluso normalmente. Agora preciso entender porque esse valor não está sendo passado para a cCmdSql pela variável cAliq. Tens alguma sugestão.? Obrigado. Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted May 3, 2016 Report Share Posted May 3, 2016 Ola Valdir a função abaixo quem me arrumou foi o Marcelo(MARCA) ele cria um arquivo texto de sua instrução SQL, fica mais fácil achar alguns erro. AchaErro(cCmdSql) FUNCTION AchaErro(_ComandoSql)LOCAL cLisErr,mListOp cLisErr := "ACHAR" + AllTrim(Str(Day(Date()))) + AllTrim(Str(Month(Date()))) + ".LOG"mListOp := MemoRead(cLisErr)mListOp += _ComandoSql + CHR(13) + CHR(10)MemoWrit(cLisErr, mListOp) WinExec( "Notepad " + cLisErr) RETURN Quote Link to comment Share on other sites More sharing options...
joaosolution Posted May 4, 2016 Report Share Posted May 4, 2016 Valdir Retire as aspas simples do seu comando '+cAliq+' e troque para +cAliq+ Ou ainda coloque as aspas simples dentro das aspas duplas " ' "+cAliq+ " ' " Att João Bosco Quote Link to comment Share on other sites More sharing options...
Valdir Posted May 4, 2016 Author Report Share Posted May 4, 2016 Valdir Retire as aspas simples do seu comando '+cAliq+' e troque para +cAliq+ Ou ainda coloque as aspas simples dentro das aspas duplas " ' "+cAliq+ " ' " Att João Bosco Olá amigo João Bosco... Bom dia. Infelizmente também não deu certo. O mais estranho é o fato da cAliq não passar nenhum valor para cCmdSql. Olhando a Classe, na função oServer:Execute(), é diferenciado quando se tem variaveis do tipo VarChar ou Numéricas Muito estranho isso. 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.