Fórum Salvar o que tem no list Box #300873

26/10/2005

0

Boa Tarde,

Eu tenho um listbox e gostaria de pegar tudo que tem no list box e salvar na tabela....

um exemplo :
evento on create do form.

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(´Select ClienteCad From Cliente´);
ADOQuery1.Close;
ADOQuery1.Open;

while not ADOQuery1.Eof do
begin
   listbox1.Items.Add(Adoquery1.FieldByName(´ClienteCad´).AsString);
   ADOQuery1.Next;
end;



ou seja quando ele cria o form ele carrega o que tem no banco de dados.... e no evento on close do form eu queria que ele salva-se no banco de dados o que tiver no listbox1 ( se tiver em branco o listbox deve ser removido os registros da tabela e quando estiver com informacoes ele salva) pois quando eu abrir de novo quero que já traga o que tem na tabela...


se voces puderem me ajudar... isso é algo de extrema urgencia... obrigado desde já :P

abraços

Fernando cunha


Fernando_cunha

Fernando_cunha

Responder

Posts

27/10/2005

Fx|hand

Mesmo eskema, só q vc faiz ao contrario agora, faiz o loop com a list...

só q ha um grande problema com issu !!!!

se vc for ´Re adicionar´ os registros, tudo bem... tipo...

Var
  cnt: Integer;
Begin
  For Cnt := 0 to Pred(ListBox1.Count) do begin
    ADOQuery1.SQL.Clear; 
    ADOQuery1.SQL.Add(´Insert into Cliente´)
    ADOQuery1.SQL.Add(´(ClienteCad)´)
    ADOQuery1.SQL.Add(´Values´)
    ADOQuery1.SQL.Add(´(´´´ + ListBox1.Items[cnt] + ´´´)´)
    ADOQuery1.ExecSQL;
  end;
end;


só q issu, só se os dados estiverem vazios, por exemplo...
quando vc ´Carrega´ os dados da tabela pra list, fica normal, se vc for fechar ele vai salvar isso tudo dinovo no BD....

tem 2 jeitos... vc trabalhar por index, fazer um loop na list, e ir salvando registro por registro por index... tipo... dah um ´Select ClienteCad from Cliente´ e em cada registro ir fazendo a alteração....
só q ai tbm tem um problema, se o usuarios excluir algum ´nome´ da listbox vai dah pau....

Solução:
Vc poderia antes de salvar todos os dados dinovo no banco de dados, remover todos os registros na tabela, e se vc tiver mais campos... poderia fazer uma TStringList q trabalha-se paralelamente com a listbox...

tipo.. realmente trazer todos os dados da tabela, só q o campo ClienteCad para a ListBox, e uma (Ou mais) TStrings (q saum listbox mais são variaveis!) com todos os campos, e depois ir comparando.. (com os index claro!)

e quando o usuario remover algum item da ListBox, vc remove tbm das variaveis... e na hora de carregar dinovo na tabela vc passa os items da TStrings(para os outros campos) e o da ListBox para o campo ClienteCad.


Responder

Gostei + 0

27/10/2005

Fx|hand

Simplificando q ficou mto complicado... (mais complikei do q ajudei !!)

faça uma ´Tabela Virtual´.. com variaveis... e depois apague todos os registros do DB, e re-salve ao OnClose do Form... =)


Responder

Gostei + 0

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

Aceitar