Inserção de dados em Delphi
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
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
Curtidas 0
Respostas
Jones Granatyr
21/12/2016
Opa! Faça um teste retirando essas duas linhas abaixo
ADOConnection1.Connected := true;
ADOQuery1.Active := true;
ADOConnection1.Connected := true;
ADOQuery1.Active := true;
GOSTEI 0
Nomad
21/12/2016
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).
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
Nomad
21/12/2016
Se fecho o compilador, executo novamente e faço um novo cadastro*
GOSTEI 0
Raimundo Pereira
21/12/2016
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;
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
Raimundo Pereira
21/12/2016
Use o insert apenas para testar, depois pode retornar para o append
GOSTEI 0
Nomad
21/12/2016
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?
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
Nomad
21/12/2016
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
GOSTEI 0
Raimundo Pereira
21/12/2016
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.
porém isso pode ocorrer se em algum momento você repetir o comando append, é melhor realizar o debug.
GOSTEI 0
Nomad
21/12/2016
Sobrepondo*
GOSTEI 0
Silva Santos
21/12/2016
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
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
Nomad
21/12/2016
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.
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
Nomad
21/12/2016
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.
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
Silva Santos
21/12/2016
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.
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
Nomad
21/12/2016
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.
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