Fórum Como gravar registros que estão sendo mostrados em um cxgrid na forma de um checkbox #421780

16/08/2012

0

Olá delphianos!!!!

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

Marcos Morais

Responder

Posts

16/08/2012

William

Colega assim de inicio sem conhecer sua aplicação e seu banco de dados, imagino que no evento OnClick do botão atualizar vc terá que montar loop para percorrer os componentes TCheckBox e verificar quais estão marcados, simultaneamente vc edita os registros.

Responder

Gostei + 0

17/08/2012

Marcos Morais

Olá, valeu pela indicação... mais continuo perdido. uso firebird 2.5 + ibquery como acesso aos dados
Responder

Gostei + 0

17/08/2012

William

Acredito q vc desenhe esses checkbox em tempo de execução, conforme o Grid é preenchido certo?
Responder

Gostei + 0

17/08/2012

Silvio Costa

Bom dia Marcos,
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
Responder

Gostei + 0

23/08/2012

Marcos Morais

Olá delphianos, bom dia a todos

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;
Responder

Gostei + 0

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

Aceitar