CheckListBox - salvar itens checados no cds
olá, ja olhei todas as dicas aqui do forum sobre o assunto, e mesmo assim nao consegui resolver meu impasse que creio, seja simples aos amigos mais atentos.
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:
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!
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
Curtidas 0
Respostas
Adriano Santos
01/04/2007
olá, ja olhei todas as dicas aqui do forum sobre o assunto, e mesmo assim nao consegui resolver meu impasse que creio, seja simples aos amigos mais atentos.
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:
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!
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
Mahdak
01/04/2007
bah que vergonha cara, quanto mais velho, mais caduco... :oops:
valeu adriano, deu certo aqui
valeu adriano, deu certo aqui
GOSTEI 0
Adriano Santos
01/04/2007
bah que vergonha cara, quanto mais velho, mais caduco... :oops:
valeu adriano, deu certo aqui
Que isso, kkk, eu tb viajo direto...acho que tô ficando véio tb.
Abs
GOSTEI 0