PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum erro DBEXPRESS incluindo registro #368307

10/02/2009

0

situação:

1)delphi 2007 + MYSQL Server 5

2) Componentes DBExpress na ordem de conexão: TSQLCOnnection-

>TSQLQuery->TDataSetProvider->TCLientDataSet

3)ClientDataSet está com propriedade ProviderName apontado

para o DataSetProvider; DataSetProvider está propriedade

dataset apontado para a query; Query está com propriedade

sqlconnection apontado para a devida TSQLCOnnection; a SQL da

TQuery é SELECT * FROM TB_CONTROL_PARAMS; A TQuery e

TClientDataSet estão com os fields da tabela populados, e o

campo chave primária tem ProviderFlags

[pfInUpdate,pfInWhere,pfInKey] enquanto que os campos

restantes são [pfInUpdate,pfInWhere]
DatSetProvider tem propriedade UpdateMode upWhereAll

4) chamo no evento OnCLick do botão uma inclusão de registro,

a tabela está vazia, a chave primária é INT o resto é tudo

VARCHAR:

cdsControlParams.Open;
cdsControlParams.Append;
cdsControlParams.FieldByName(´ControlId´).Value:= 1;
cdsControlParams.FieldByName(´FieldName´).Value:= ´teste´;
...outros campos...
cdsControlParams.FieldByName(´BlobKind´).Value:= ´teste´;
cdsControlParams.Post;
if cdsControlParams.ApplyUpdates(0)>0 then
showmessage(´teve erro´);

5) O step over indica que até a linha de POST tudo funciona.

Ao ser acionado o ApplyUpdates ocorre a exceção:

exception Class TDBXError with message ´You have an error in

your SQL syntax; check the manual that corresponds to your

MySQL server version for right syntax tO use near´....aqui vem

os nomes dos campos da tabela...´at line 10

ALGUÉM SABE O POR QUE DO ERRO??????????
:?:


Imaia

Imaia

Responder

Posts

10/02/2009

Imaia

:idea:
já resolvi. para os colegas desenvolvedores aí vai a solução do problema que me parecia de difícil solução:

não existe erro nenhum no uso e configuração dos componentes e código. Acontece que eu usei um token ou palavra reservada de query no MYSQLServer, a palavra é Left. Ao usar o nome de um campo como Left gera-se o erro, tentem:

insert into tb_teste (id,Left) values (1,´resolvido´);

temos:

MySQL Database Error: 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 ´Left) values (1,´resolvido´)´ at line 1

o mais curioso é que o mysql permite criar o campo sem reclamar, mas gera exceção ao tentar fazer qualquer insert neste campo. se o campo Left não for usado a inserção funciona também. heheh

valeu gente!!!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar