Fórum Inserção de dados em Delphi #573089
21/12/2016
0
Tenho o código:
procedure TForm1.Button1Click(Sender: TObject);
begin
// Adição de novo registro ao banco de dados.
ADOConnection1.Connected := true;
ADOQuery1.Active := true;
ADOQuery1.Append;
ADOQuery1.FieldValues['cod']:= DBEcod.Text;
ADOQuery1.FieldValues['nome']:= DBEnome.Text;
ADOQuery1.FieldValues['naturalidade']:= DBEnatu.Text;
ADOQuery1.Post;
ShowMessage('Cadastro Realizado com Sucesso!');
Mas o Append insere dados em branco na tabela... Porém sem ele, ao inserir um segundo cadastro, substitui o primeiro... Gostaria de saber como ficaria para inserir sem a linha em branco e sem substituir o dado já cadastrado.
Obrigado
Nomad
Curtir tópico
+ 0Posts
21/12/2016
Jones Granatyr
ADOConnection1.Connected := true;
ADOQuery1.Active := true;
Gostei + 0
22/12/2016
Nomad
Fiz desta forma e os dados são inseridos em sequência, sem linha em branco ou substituir.... Porem se fecho o compilador e faço um novo cadastro, acaba substituindo o primeiro cadastro (para dar "certo", o append ficou abaixo do post, mas fiz o teste com ele no início e volta a ocorrer o cadastro em braco).
Gostei + 0
22/12/2016
Nomad
Gostei + 0
22/12/2016
Raimundo Pereira
Tente
ADOConnection1.Connected := true;
ADOQuery1.Active := true;
ADOQuery1.insert;
ADOQuery1.Fielbyname('cod').asstring:= DBEcod.Text;
ADOQuery1.Fielbyname('nome').asstring:= DBEnome.Text;
ADOQuery1.Fielbyname('naturalidade').asstring:= DBEnatu.Text;
ADOQuery1.Post;
ADOQuery1.Close;
ADOQuery1.open;
Gostei + 0
22/12/2016
Raimundo Pereira
Gostei + 0
22/12/2016
Nomad
Mas pelo que entendi, a função do insert e do append é inserir uma linha em branco na tabela, pois é o que ocorre se informou um ou outro no inicio.
O gostaria de saber, é como fazer para inserir sem a linha em branco?
Gostei + 0
22/12/2016
Nomad
Gostei + 0
22/12/2016
Raimundo Pereira
porém isso pode ocorrer se em algum momento você repetir o comando append, é melhor realizar o debug.
Gostei + 0
22/12/2016
Nomad
Gostei + 0
22/12/2016
Silva Santos
Eu fiz um teste aqui usando o seguinte cenário:
Tenho um form com um DBGrid, ligado a um DataSource que por sua vez está ligado a um ADOQuery que está conectado a um ADOConnection que está conectado em um "banco" access;
Tenho também três Edits que correspondem a Código, Nome e Telefone (Simulando um pequeno cadastro de clientes);
e por sua vez um botão com o seguinte código:
if not ADOQuery1.Active then
ADOQuery1.Open; // ao abrir a query o connection também abre!
ADOQuery1.Append;
ADOQuery1.FieldByName('id').Value := Edit1.Text;
ADOQuery1.FieldByName('nome').Value := Edit2.Text;
ADOQuery1.FieldByName('telefone').Value := Edit3.Text;
ADOQuery1.Post;
E funfou perfeito!
Coloquei o DBGrid justamente para ver as linhas sendo inseridas.
Espero ter ajudado
Gostei + 0
22/12/2016
Nomad
Com todos os exemplos passados aqui ocorre isto. E da forma como deixei, colocando o post e o append abaixo do naturalidade é inserido normalmente, sem a linha em branco... Porem, se fecho e abro o EXE e faço um novo cadastro, apaga o primeiro.
Gostei + 0
22/12/2016
Nomad
De qualquer forma, agradeço a atenção e ajuda de todos que responderam ao post. Mesmo não dando certo para a situação atual, pode ser de grande utilidade futuramente.
Gostei + 0
12/01/2017
Silva Santos
Com todos os exemplos passados aqui ocorre isto. E da forma como deixei, colocando o post e o append abaixo do naturalidade é inserido normalmente, sem a linha em branco... Porem, se fecho e abro o EXE e faço um novo cadastro, apaga o primeiro.
Fiquei intrigado!!
Tem como você passar prints dessas telas?
Gostei + 0
19/01/2017
Nomad
Com todos os exemplos passados aqui ocorre isto. E da forma como deixei, colocando o post e o append abaixo do naturalidade é inserido normalmente, sem a linha em branco... Porem, se fecho e abro o EXE e faço um novo cadastro, apaga o primeiro.
Fiquei intrigado!!
Tem como você passar prints dessas telas?
Olá Silva Santos.
Agradeço a atenção, mas já consegui resolver. O engraçado é que somente com o Post deu certo, realmente não sei oq estava errado, provavelmente era algum detalhe que passou despercebido.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)