Fórum CheckListBox - salvar itens checados no cds #339732
01/04/2007
0
preciso apenas resgatar o valor de cada item checado no CheckListBox, fazer uma consulta em uma tabela cujo parâmetro é o item resgatado atual, e salvar o resultado da consulta em um ClientDataSet.
atualmente fasso o seguinte:
DM.Conexao.Open; try for i := 0 to CLB.Items.Count -1 do begin if CLB.Checked[i]=true then // faz consulta na tabela usando como parametro o item checado que foi resgatado do clb with DM.cdsEmprUG do begin Close; CommandText := ´select * from empr_ug where unidade = ´ + QuotedStr(CLB.Items.Strings[i]); Open; end; // insere o resultado da consulta no cds cdsUG.insert; cdsUGID.AsInteger := DM.cdsEmprUGID.AsInteger; cdsUG.Post; end; finally DM.Conexao.Close; end;
nenhum erro ocorre com a rotina acima, porem se eu tiver 5 itens no CheckListBox, e só o primeiro estiver checado, ele irá inserir 5 vezes o valor do item checado... se nada estiver checado ele insere 5 vezes o valor zero no cds
isso deve estar ocorrendo por que coloquei a instrução para inserir no cds dentro do laço ´for´, deve haver um jeito mais indicado de realizar essa operação, alguém se habilita em me ajudar?
abraços!
Mahdak
Curtir tópico
+ 0Posts
01/04/2007
Adriano Santos
DM.Conexao.Open; try for i := 0 to CLB.Items.Count -1 do begin if CLB.Checked[i]=true then // faz consulta na tabela usando como parametro o item checado que foi resgatado do clb with DM.cdsEmprUG do begin Close; CommandText := ´select * from empr_ug where unidade = ´ + QuotedStr(CLB.Items.Strings[i]); Open; end; // insere o resultado da consulta no cds cdsUG.insert; cdsUGID.AsInteger := DM.cdsEmprUGID.AsInteger; cdsUG.Post; end; finally DM.Conexao.Close; end;
Se entendi bem basta colocar um begin...end na instrução IF; assim ele só vai inserir se o item ´I´ estiver checado, caso contrário não faz nada.
DM.Conexao.Open; try for i := 0 to CLB.Items.Count -1 do begin if CLB.Checked[I] then begin //faz consulta na tabela usando como parametro o item checado que foi resgatado do clb with DM.cdsEmprUG do begin Close; CommandText := ´select * from empr_ug where unidade = ´ + QuotedStr(CLB.Items.Strings[i]); Open; end; //insere o resultado da consulta no cds cdsUG.insert; cdsUGID.AsInteger := DM.cdsEmprUGID.AsInteger; cdsUG.Post; end; end; finally DM.Conexao.Close; end;
Gostei + 0
02/04/2007
Mahdak
valeu adriano, deu certo aqui
Gostei + 0
02/04/2007
Adriano Santos
Que isso, kkk, eu tb viajo direto...acho que tô ficando véio tb.
Abs
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)