Fórum Duvida com listview #429663

25/11/2012

0

Pessoal, sou novo em programação. Quero fazer o seguinte: pegar valores inseridos em 2 edit e joga-los num listview. Apos, salvar todos os valores do listview no banco de dados. O meu codigo insere os valores dos edit no listview, mas da erro e n''ao salva no BD.
Meu codigo:

procedure TForm1.BitBtn_IncluirProcClick(Sender: TObject);
var item:TListItem;
begin
  inherited;
  Edit1.SetFocus;
  item:= Listview1.Items.Add;
  item.Caption:=form1.Edit1.Text;
  item.SubItems.Add(form1.Edit2.Text);
  Edit1.Text:='''';
  Edit2.Text:='''';
end;



procedure TForm1.BitBtnSalvarClick(Sender: TObject);
Var i : Integer;
begin
  inherited;
  DM2.ADOQry.Active:= True;
    for i := 0 to ListView1.Items.Count-1 do
    begin
       ListView1.ItemIndex:=0;
      DM2.ADOQry.FieldByName(''nome'').AsString:=Listview1.Items[i].SubItems.Strings[0];
      DM2.ADOQry.FieldByName(''num_processo'').AsString:=Listview1.Items[i].SubItems.Strings[1];
      DM2.ADOQry.Post;
    end;

   Listview1.Clear;
end;


Obrigado...
Maurício Curi

Maurício Curi

Responder

Posts

25/11/2012

Claudia Nogueira

Oie bem vindo ao fórum. :)

Eu não entendi muito bem o código do BitBtn_IncluirProcClick por causa daquela declaração da variável, mas vou tentar te ajudar nos erros que eu achei.

No BitBtn_IncluirProcClick:

  item.Items.Add;
  item.Items[item.Items.Count-1].Caption := Edit1.Text;
  item.Items[item.Items.Count-1].SubItems.Add(Edit2.Text);
  Edit1.Clear;
  Edit2.Clear;
  Edit2.SetFocus;


Não precisa disso var item:TListItem;, coloquei um TListView com Name = item no form

E no BitBtnSalvarClick:

procedure TForm1.BitBtnSalvarClick(Sender: TObject);
Var i : Integer;
begin
inherited;
DM2.ADOQry.Close;
DM2.ADOQry.Open;
for i := 0 to item.Items.Count - 1 do
begin
DM2.ADOQry.Insert;
DM2.ADOQry.FieldByName('nome').AsString:= item.Items[i].Caption;
DM2.ADOQry.FieldByName('num_processo').AsString:= item.Items[i].SubItems.Text;
DM2.ADOQry.Post;
end;
item.Clear;
end;


Qualquer coisa posta novamente.
Responder

Gostei + 0

27/11/2012

Maurício Curi

Muito obrigado Claudiadnh pela ajuda. A procedure BitbtnIncluir inclui dados através dos Edit nas colunas do Listview, então quero salvar os dados inseridos neste listview no banco de dados access. Vou testar a sua dica, e depois te respondo se deu ou não certo. Até mais. Obrigado.
Responder

Gostei + 0

30/11/2012

Maurício Curi

Claudiadnh, o seu código executou corretamente, mas eu tive de alterar item por Listview1, pois usando a variável "item" não aparece o método "items", então tive de fazer a troca p/ executá-lo. O que vc acha que tá faltando pra executar usando a variável "item"? Seria a falta de alguma unit não declarada? Simplismente não reconhece item como variável. Obrigado desde já.
Responder

Gostei + 0

30/11/2012

Claudia Nogueira

O "item" foi o nome que eu dei ao componente TListView que eu coloquei no form.

Claudiadnh, o seu código executou corretamente, mas eu tive de alterar item por Listview1, pois usando a variável "item" não aparece o método "items", então tive de fazer a troca p/ executá-lo. O que vc acha que tá faltando pra executar usando a variável "item"? Seria a falta de alguma unit não declarada? Simplismente não reconhece item como variável. Obrigado desde já.
Responder

Gostei + 0

27/02/2013

Maurício Curi

Claudiadnh, estou trabalhando com 4 campos na minha tabela do access. Tentei implementar isso ao código abaixo mas executou c/ erro. Poderia me ajudar? Inseri mais 2 edits e mais 2 colunas no listview.

procedure TForm1.BitBtn_IncluirProcClick(Sender: TObject);
begin
  inherited;
  Edit1.SetFocus;
  item.Items.Add;
  item.Items[item.Items.Count-1].Caption := Edit1.Text;
  item.Items[item.Items.Count-1].SubItems.Add(Edit2.Text);
  item.Items[item.Items.Count-1].SubItems.Add(Edit3.Text);
  Edit1.Clear;
  Edit2.Clear;
  Edit3.Clear;
end;


procedure TForm1.BitBtnSalvarClick(Sender: TObject);
Var i : Integer;
begin
  inherited;
  DM2.ADOQry.Close;
  DM2.ADOQry.Open;
  for i := 0 to item.Items.Count - 1 do
  begin
  DM2.ADOQry.Insert;
  DM2.ADOQry.FieldByName('nome').AsString:= item.Items[i].Caption;
  DM2.ADOQry.FieldByName('num_processo').AsString:= item.Items[i].SubItems.Text;
  DM2.ADOQry.FieldByName('obs').AsString:= item.Items[i].SubItems.Text;
  DM2.ADOQry.Post;
  end;
item.Clear;
Edit1.SetFocus;
end;


Quando executo o campo obs da minha tabela do bd recebe valor igual ao do num_processo, mas o que eu queria é que salvasse o que foi digitado no edit3(que consta na 3ª coluna do listview). Obrigado...
Responder

Gostei + 0

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

Aceitar