GARANTIR DESCONTO

Fórum Inserção de dados em Delphi #573089

21/12/2016

0

Estou iniciando os estudos no Delphi, e estou com a seguinte situação ao inserir os dados em uma tabela..

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

Nomad

Responder

Posts

21/12/2016

Jones Granatyr

Opa! Faça um teste retirando essas duas linhas abaixo

ADOConnection1.Connected := true;
ADOQuery1.Active := true;
Responder

Gostei + 0

22/12/2016

Nomad

Olá Jones
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).
Responder

Gostei + 0

22/12/2016

Nomad

Se fecho o compilador, executo novamente e faço um novo cadastro*
Responder

Gostei + 0

22/12/2016

Raimundo Pereira

Bom dia, geralmente eu uso funções para realizar comandos sql.
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;
Responder

Gostei + 0

22/12/2016

Raimundo Pereira

Use o insert apenas para testar, depois pode retornar para o append
Responder

Gostei + 0

22/12/2016

Nomad

Bom dia P2.
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?
Responder

Gostei + 0

22/12/2016

Nomad

Mas o problema principal é: eu insiro normalmente, porem se fecho o compilador e executou novamente para realizar a inserção... Esta sobrendo o primeiro registro da tabela
Responder

Gostei + 0

22/12/2016

Raimundo Pereira

Nunca aconteceu comigo dele após o append ou insert ser inserido uma linha em branco
porém isso pode ocorrer se em algum momento você repetir o comando append, é melhor realizar o debug.
Responder

Gostei + 0

22/12/2016

Nomad

Sobrepondo*
Responder

Gostei + 0

22/12/2016

Silva Santos

Rapaz!!!

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
Responder

Gostei + 0

22/12/2016

Nomad

Não deu certo TB, pois desta forma ocorre a situação de inserir a linha em branco na tabela.

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.
Responder

Gostei + 0

22/12/2016

Nomad

Sera que o erro pode estar na criação da tabela? Ha algo de diferente que eu tenha que especifiar?

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.
Responder

Gostei + 0

12/01/2017

Silva Santos

Não deu certo TB, pois desta forma ocorre a situação de inserir a linha em branco na tabela.

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?
Responder

Gostei + 0

19/01/2017

Nomad

Não deu certo TB, pois desta forma ocorre a situação de inserir a linha em branco na tabela.

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.
Responder

Gostei + 0

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

Aceitar