Salvar o que tem no list Box
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.
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
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
Curtidas 0
Respostas
Fx|hand
26/10/2005
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...
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.
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.
GOSTEI 0
Fx|hand
26/10/2005
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... =)
faça uma ´Tabela Virtual´.. com variaveis... e depois apague todos os registros do DB, e re-salve ao OnClose do Form... =)
GOSTEI 0