Estou começando a trabalhar com Delphi há pouco tempo e escolhi usar o Access e o SQL em meus sistemas, só que estou com uma pequena dificuldade em inserir registros no BD Access através do comando “INSERT” do SQL. Estou querendo fazer a inserção através de um botão “TButton”, mas infelizmente não estou conseguindo. Vou tentar ser mais detalhista. Criei uma aplicação onde terá que fazer o cadastramento dos clientes, fiz a referência ao DataModule ao onde estão TADOConnection, TADOQuery e, claro o TDataSource, ambos estão interligados uns aos outros, sendo que o TADOConnection está acessado ao BD do Access que criei. Este DataModule foi referenciado na Form onde estou criando a inserção dos clientes. Na visualização dos clientes onde uso o “SELECT” do SQL, ele funciona normalmente, mas quando uso o “INSERT” para inserir, ele dá um erro. Vou lhe mostrar meu código, tentei de duas formas, vamos a primeira:
Mas o erro continua. O erro que dá é: “Tipos incompatíveis: ‘String’ e ‘Inteiros’”.
Criei no meu sistema as variáveis “id, ncadastro, fcadastro”, do qual foi o nome que dei a cada campo. Criei por desencargo de consciência variáveis Globais e também variáveis Locais, só que em ambos continuam dando erro. Veja abaixo as variáveis criadas:
id: integer;
ncadastro,fcadastro: string;
Nos campos criados foram usados o Edit e o DBEdit.
Peço-lhe para que avaliem meu código e me informem onde eu errei, pois como disse acima, estou começando a trabalhar no Delphi agora e como a maioria sou um “autodidata”.
Pergunta
Guest - Marcos Tavares -
Prezados colegas,
Estou começando a trabalhar com Delphi há pouco tempo e escolhi usar o Access e o SQL em meus sistemas, só que estou com uma pequena dificuldade em inserir registros no BD Access através do comando “INSERT” do SQL. Estou querendo fazer a inserção através de um botão “TButton”, mas infelizmente não estou conseguindo. Vou tentar ser mais detalhista. Criei uma aplicação onde terá que fazer o cadastramento dos clientes, fiz a referência ao DataModule ao onde estão TADOConnection, TADOQuery e, claro o TDataSource, ambos estão interligados uns aos outros, sendo que o TADOConnection está acessado ao BD do Access que criei. Este DataModule foi referenciado na Form onde estou criando a inserção dos clientes. Na visualização dos clientes onde uso o “SELECT” do SQL, ele funciona normalmente, mas quando uso o “INSERT” para inserir, ele dá um erro. Vou lhe mostrar meu código, tentei de duas formas, vamos a primeira:
procedure TfrmInsereCliente.btnInsereClick(Sender: TObject);
begin
if ncadastro.Text = '' then
begin
showmessage('Favor colocar o nome');
end
else if fcadastro.Text = '' then
begin
showmessage('Favor colocar o telefone');
end
else
datamodule1.AdoQuery.Close;
datamodule1.AdoQuery.SQL.Clear;
datamodule1.AdoQuery.SQL.Add('Insert Into Clientes(idCliente,Nome,Fone)');
datamodule1.AdoQuery.SQL.Add('Values'+id+','+ncadastro+','+fcadastro); // Aqui dá o erro
datamodule1.AdoQuery.Open;
end;
end.
Agora a segunda forma. Vejam:
....
datamodule1.AdoQuery.Close;
datamodule1.AdoQuery.SQL.Clear;
datamodule1.AdoQuery.SQL.Insert('Insert Into Clientes(idCliente,Nome,Fone)');
datamodule1.AdoQuery.SQL.Insert('Values'+id+','+ncadastro+','+fcadastro);
datamodule1.AdoQuery.Open
.....
Mas o erro continua. O erro que dá é: “Tipos incompatíveis: ‘String’ e ‘Inteiros’”.
Criei no meu sistema as variáveis “id, ncadastro, fcadastro”, do qual foi o nome que dei a cada campo. Criei por desencargo de consciência variáveis Globais e também variáveis Locais, só que em ambos continuam dando erro. Veja abaixo as variáveis criadas:
id: integer;
ncadastro,fcadastro: string;
Nos campos criados foram usados o Edit e o DBEdit.
Peço-lhe para que avaliem meu código e me informem onde eu errei, pois como disse acima, estou começando a trabalhar no Delphi agora e como a maioria sou um “autodidata”.
Conto com a colaboração de vocês.
Abraços []’s
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.