DOUGLASAP 0 Denunciar post Postado Janeiro 24, 2013 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
Eisenheim 67 Denunciar post Postado Janeiro 28, 2013 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