Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DOUGLASAP

Select com erro

Recommended Posts

Bom Dia Pessoal,

Estou começando desenvolver utilizando Delphi.

Comoço faço para que os dados sejam gravados e apacer em tempo de execução na DBGRID

 

Estou utilizando

 

ADOCONECTION

DataSource

ADOQuery

 

Banco de Dados Access

 

Estou com dúvidas em relação ao select.

 

 

procedure TForm2.Button1Click(Sender: TObject);
begin
ADOquery1.Active := False;
ADOquery1.SQL.Clear;
ADOquery1.SQL.Add('insert into contrato (contrato) values('+''''+edit1.Text+''''+'); ');
ADOquery1.SQL.Add('insert into contrato (cliente) values('+''''+edit2.Text+''''+'); ');
ADOquery1.SQL.Add('insert into contrato (equipamento) values('+''''+edit3.Text+''''+'); ');
ADOquery1.ExecSQL;
ADOquery1.Close;
end;
end.
Ele até compila, mas na hora de salvar os dados na tabela gera uma mensagem de erro.
"Caracteres encontrados após a instrução SQL".
Pelo que vi não tem nada.
Quando removo as linhas
ADOquery1.SQL.Add('insert into contrato (cliente) values('+''''+edit2.Text+''''+'); ');
ADOquery1.SQL.Add('insert into contrato (equipamento) values('+''''+edit3.Text+''''+'); ');
Ele executa e grava direitinho.
Mas nao é isso que quero.
Obrigado a todos

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo!

 

Primeiro passo:

 

Não sei qual metodologia você está adotando, mas você poderia fazer uso dos métodos nativos para trabalhar com dados provindos de banco de dados, tais como:

 

Append; - Incluir um registro no final da lista;

Edit; - Alterar o registro em que o cursor se encontra marcado;

Cancel; Cancelar qualquer operação "Inclusão/Alteração" do registro em que o cursor se encontra;

Delete; Exluir o registro em que o cursor se encontra;

Post; Gravar qualquer operação "Inclusão/Alteração" do registro em que o cursor se encontra;

 

Exemplo: Imaginando que você tenha uma "Query" com a instrução "select * from contrato", ficaria algo assim:

 

 

qryContrato.Append;
qryContratoContrato.AsString := Edit1.Text;

qryContratoCliente.AsString := Edit2.Text;

qryContratoEquipamento.AsString := Edit3.Text;
qryContrato.Post;

 

Segundo passo:

 

Caso deseje trabalhar da maneira como no seu exemplo, aconselho trabalhar da seguinte maneira:

 

 

 
procedure TForm2.Button1Click(Sender: TObject);
begin
ADOquery1.SQL.Clear;

ADOquery1.SQL.Add(' insert into contrato( contrato, cliente, equipamento ) values( :contrato, :cliente, :equipamento ) ');
ADOquery1.ParamByName('contrato').AsString := Edit1.Text;

ADOquery1.ParamByName('cliente').AsString := Edit2.Text;

ADOquery1.ParamByName('equipamento').AsString := Edit3.Text;
ADOquery1.ExecSQL;


ADOquery1.Close;
end;

 

 

Dessa maneira, fica mais fácil de você compreender o que está sendo passado para sua query, e caso ocorra algum problema de diagnosticar também.

 

Em situações que se faça necessária passar uma informação provinda de um campo para dentro da sua instrução SQL, começe a utilizar a instrução QuotedStr( campo ) ao invés de passar com '' 'Campo' '', isso também facilitará bastante as coisas pra você numa futura manutenção.

 

Até a próxima. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.