TDBLOOKUPCOMBOBOK

21/09/2017

0

begin
with dm.sql_statusCliente do
begin
close;
SQL.Clear;
sql.Add('select * from statusCliente');
sql.Add('AND status = id_status');
ParamByName('id_status').Value := DB_combobox.KeyValue;
Open;

end;

end;

Quando escolho umas das 2 opçoes OK ou PENDENTE no combobox que vem da tabela status que e ligada a tabela clientes
e view statusClientes o delphi me retorna o seguinte erro...

---------------------------
[FireDAC][Phys][MySQL] 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 'AND status = 1' at line 2.
---------------------------
OK
---------------------------
Anderson Saldanha

Anderson Saldanha

Responder

Post mais votado

21/09/2017

Bom dia, Anderson

Esta mensagem mostra que existe um erro de sintaxe no seu SQL. Verifique os espaços entre as instruções. Use o depurador pra debugar e ver o que está retornando na sua instrução SQL usando o Ctrl+F7.

Abraços

Felipe Morais

Felipe Morais
Responder

Mais Posts

21/09/2017

Anderson Saldanha

ok obrigado vou tentar aqui
Responder

21/09/2017

Anderson Saldanha

nao estou entendendo a sql esta correta pode dar uma olhada aqui.. nao sei o porque deste erro

---------------------------
softarquivo
---------------------------
[FireDAC][Phys][MySQL] 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 'AND clientes = 1' at line 2.
---------------------------
OK
---------------------------

begin
with dm.SLQ_clientes do
begin
close;
SQL.Clear;
sql.Add('select * from clientes');
sql.Add('AND clientes = :id_status');
ParamByName('id_status').Value := DB_combobox.KeyValue;
Open;

end;

end;

CREATE TABLE basexml.clientes (
id INT(11) NOT NULL AUTO_INCREMENT,
nome VARCHAR(50) DEFAULT NULL,
cidade VARCHAR(50) DEFAULT NULL,
arquivo VARCHAR(20) NOT NULL,
observacao VARCHAR(50) NOT NULL,
cnpj VARCHAR(15) NOT NULL,
id_status INT(11) DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE INDEX UK_clientes_id_status (id_status),
CONSTRAINT FK_clientes_id_status FOREIGN KEY (id_status)
REFERENCES basexml.status(id_status) ON DELETE NO ACTION ON UPDATE RESTRICT
)
ENGINE = INNODB
AUTO_INCREMENT = 2
AVG_ROW_LENGTH = 8192
CHARACTER SET latin1
COLLATE latin1_swedish_ci;

CREATE TABLE basexml.status (
id_status INT(11) NOT NULL AUTO_INCREMENT,
sts_nome VARCHAR(15) NOT NULL,
PRIMARY KEY (id_status),
UNIQUE INDEX UK_status_sts_nome (sts_nome)
)
ENGINE = INNODB
AUTO_INCREMENT = 3
AVG_ROW_LENGTH = 8192
CHARACTER SET latin1
COLLATE latin1_swedish_ci;

VIEW..
SELECT
`c`.`id` AS `id`,
`c`.`nome` AS `nome`,
`c`.`cidade` AS `cidade`,
`c`.`arquivo` AS `arquivo`,
`c`.`observacao` AS `observacao`,
`c`.`cnpj` AS `cnpj`,
`c`.`id_status` AS `id_status`,
`s`.`sts_nome` AS `sts_nome`
FROM (`clientes` `c`
JOIN `status` `s`
ON ((`c`.`id_status` = `s`.`id_status`)))
Responder

21/09/2017

Felipe Morais

Se o dm.SLQ_clientes tem instrução SQL que você fez, vai dar erro. Tente assim:

begin
with dm.SLQ_clientes do
begin
close;
SQL.Clear;
sql.Add('select * from clientes');
sql.Add('WHERE clientes = :id_status');
ParamByName('id_status').Value := DB_combobox.KeyValue;
Open;

end;

end;
Responder

22/09/2017

Tone Costa.

Não existe o campo Clientes na sua tabela Clientes. Teria que ser ID = :ID
Responder

22/09/2017

Felipe Morais

Ou, é id_status = :id_status
Responder

22/09/2017

Anderson Saldanha

entendi vou tentar aqui mas clientes e o nome da tabela
Responder

22/09/2017

Anderson Saldanha

Assim nao deu erro porem nao me retornou nada kkkk nao gravo no banco de dados nem no delphi a opçao
begin
with dm.SLQ_clientes do
begin
close;
SQL.Clear;
sql.Add('select * from clientes');
sql.Add('where id_status = :id_status');
ParamByName('id_status').Value := DB_combobox.KeyValue;
Open;

end;

end;
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar