Fórum Como gravar registros que estão sendo mostrados em um cxgrid na forma de um checkbox #421780
16/08/2012
0
Moços e moças estou quebrando a cabeça mais ainda não conseguir resolver uma questão aqui. É o seguinte tenho um CxGrid mostrando dados de uma agenda para um determinado operador. até tudo certinho o sistema trás e mostra de maneira correta os dados.
mostra os valores de DATA, HORA, COMPROMISSO e EFETUADO que é o campo que é mostrado como checkbox.
Bom tudo certinho e tal, mais o problema surge quando seleciono o checkbox do registro que quero, ai tenho a opção de um botão chamado ATUALIZAR que tem a função de gravar no banco, no campo EFETUADO o valor T=True, mais não tenho a minima ideia de como percorreer no cxgrid e ver quais os registros foram selecionados no checkbox e gravar a informação no banco através do botão ATUALIZAR.
Alguém ai pode dar uma ajudinha.
Desde já agradeço a atenção e a paciência.
Att,
Marcos Aurélio
Marcos Morais
Curtir tópico
+ 0Posts
16/08/2012
William
Gostei + 0
17/08/2012
Marcos Morais
Gostei + 0
17/08/2012
William
Gostei + 0
17/08/2012
Silvio Costa
Ainda sou estagiario, então não tenho a experiência de vocês, mas tem um caso aqui no serviço que é usado, vou tentar ser claro.
Aqui carregamos a informação num clientDataSet. Temos o checkbox na cxGrid, na propriedade do checkbox no delphi foi setado o valuechecked como 0 e ValueUnchecked como 1 (0 - não selecionado e 1 selecionado), então quando descarregamos o ClientDataSet e fazemos essa verificação.
Ex:
clientdataset1.First;
clientdataset1.Filtered := False;
while not clientdataset1.Eof do
begin
if (clientdataset1processado.AsInteger = 1)
begin
with queryatualiza do
begin
ParamByName('realizado').AsInteger := clientdataset1processado.AsInteger;
ExecSQL;
end;
end;
clientdataset1.next
end;
Espero ter ajudado, pois falta experiência e às vezes não consigo ser claro.
Abcss
Gostei + 0
23/08/2012
Marcos Morais
Quero agradecer a ajuda de todos que me retornaram para que eu pudesse resolver minha demanda e
em especial ao Silvio Cesar que clariou minhas meus caminhos para que eu fizesse funcionar
a rotina do jeitinho que eu queria.
Abaixo o código que usei e que está funcionando direitinho aqui:
CdsAgenda.First;
CdsAgenda.Filtered := False;
while not CdsAgenda.Eof do
begin
if (CdsAgendaEFETUADO.AsString = 'T') then
begin
with IBSQL1 do
begin
Close;
SQL.Clear;
SQL.Add('update agenda set efetuado = :efetuado');
SQL.Add('where ordem = :ordem');
ParamByName('ordem').AsInteger := CdsAgendaORDEM.AsInteger;
ParamByName('efetuado').AsString := CdsAgendaEFETUADO.AsString;
ExecQuery;
end;
end;
CdsAgenda.Next;
end;
CdsAgenda.Close;
ExibeHorarios;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)