[RESOLVIDO] SQL Insert apresenta erro

Tenho um formulário GRID EDITAVEL VIEW composto de 3 campos.
Um Sequencial com auto incremento e 2 campos de decimal 18,2

Na inclusão de um registro em branco o formulário funciona. Quando tem valores o mesmo apresenta o erro abaixo.
É um bug ou estou fazendo alguma coisa de errado?
PS: Ja exclui o formulario e refiz ele varias vezes.

ERRO
Erro ao incluir na base de dados:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ’ Multa, Juros) VALUES ( , 0.76, 87.65)’ at line 1

View SQL

Grou,

Verifique se o separador decimal definido na conexão com seu banco de dados está de acordo com o utilizado no banco.

att,
Bernhard Bernsmann

Grou Este View SQL é um link? se for clica nele que ele vai exibir o comando todo, mas pelo pouco que vi nesta parte VALUES ( , 0.76, 87.65), não veio o valor do auto incremento, vê se na configuração do campo ele ta como auto incremento automático, já que vc colocou no banco já com auto incremento.

Grou,

Supondo-se que sua tabela contenha apenas os 3 campos.

1 - É preciso ver o comando completo.
2 - O erro não está nos valores e sim próximo (near) à palavra Multa… então coloque a instrução completa pra saber o que é.

Forte abraço.

Toquei o ponto pela virgula na edicao da connexao MySql e não adiantou.

Aqui postei os erros.

Clicando no link VIEW SQL aparece assim

exclui o formulario e fiz de novo e é a mesma coisa. Uso SC V7 totalmente atualizado. Tentei insert manual no MySQL e funcionou, pelo SC nao.

Como eu havia dito, o problema está no nome dos campos, coloque aspas invertidas “[size=18pt]`[/size]”

Veja um exemplo:

$sql = “INSERT INTO grupo
(
grupo_descricao,
grupo_status,
grupo_dtcad
)
VALUES
(
‘Novo Grupo’,
‘Ativo’,
NOW()
)”;

Note a diferença das aspas… o nome do campo possui aspas invertidas e os valores aspas normais.

Os valores decimais também podem ficar entre aspas, o que não pode são os varchar não ficarem entre aspas.

Tente aí.

Forte abraço.

Mas Jovito, esse formulário foi gerado pelo ScriptCase automaticamente… Sem interferência manual.

Não tem onde mudar essa SQL.
Vou tentar mudar os nomes dos campos… de repente são palavras reservadas… sei lá.

Obrigado desde já.

Nesse caso eu não sei o que dizer… Pensei que era um insert manual, que você estava fazendo.

Grou,

Verifique a questão do autoincremento como comentou o Paulo.

Problema reportado para nossa equipe de bugs.

att,
Bernhard Bernsmann

Olá pessoal…

Tenho outra tabelas de auto incremento e funcionam normalmente.

Deletei a aplicação formulário GRID Editável View e alterei o nome da tabela, e nome dos campos.

Criei outra aplicação formulário Único Registro e o erro permanece.

To achando que os valores de multa e juros são abusivos… por isso o erro ocorre. :slight_smile:

Dê o View nesse sql e manda a tela pra gente ver.

a foto acima no topico anterior já é o View.

coloca a aplicação no modo debug e manda o print.

Olá pessoal…

Deletei a tabela e recriei de novo e criei a aplicação de novo.
Não conhecia o modo DEBUG do SC. Coloquei no Debug e deu o seguinte erro:

(mysqlt): SELECT count(*) from parametros
(mysqlt): SELECT id, per_multa, per_juros from parametros order by id LIMIT 0,10
Output
(mysqlt): SET AUTOCOMMIT=0
(mysqlt): BEGIN
(mysqlt): INSERT INTO parametros (per_multa, per_juros) VALUES (‘4,35’, ‘2,10’)
1366: Incorrect decimal value: ‘4,35’ for column ‘per_multa’ at row 1
ADOConnection._Execute(INSERT INTO parametros (per_multa, per_juros) VALUES (‘4,35’, ‘2,10’), false) % line 1085, file: adodb.inc.php
ADOConnection.Execute(INSERT INTO parametros (per_multa, per_juros) VALUES (‘4,35’, ‘2,10’)) % line 2571, file: form_parametros_apl.php
form_parametros_apl.nm_acessa_banco() % line 1251, file: form_parametros_apl.php
form_parametros_apl.controle_form_vert() % line 964, file: form_parametros_apl.php
form_parametros_apl.controle() % line 1556, file: form_parametros.php
(mysqlt): select last_insert_id()
(mysqlt): COMMIT
(mysqlt): SET AUTOCOMMIT=1

Deu “Incorrect decimal value”. Na Conexão troquei o ponto pela virgula e vice versa no separador de decimal.


Problema resolvido:
Depois que troquei a virgula pelo ponto no separador de decimal. Deletei a aplicação e criei outra de novo. Aí funcionou.
O Esquisito é que o separador de decimal já era ponto por default.
Obrigado pelas dicas de todos. Obrigado pela atenção dada e nas entrelinhas sempre vocês tem dicas valiosas.

Grou

Beleza Grou, o legal é que você conseguiu descobrir só, o modo debug ajuda bastante.

Paulo Bom dia,

Qual o comando que você deu para trocar a virgula por decimal ?

obrigado

Nigri

Nigri, quem resolveu o problema foi o próprio Grou depois que ativou o debug e descobriu o erro.

Nigri,

Não é comando. Você pode alterar isto nas configurações da conexão com o banco de dados.

att,
Bernhard Bernsmann

Boa Tarde,

Estou trabalhando com mysql 5.2 e onde posso mudar essa configuração que ainda não achei .

Alguem poderia dar uma dica ???

um abraço

NIgri