Fórum Tabela Virtual e mostrar os dados no DBGrid #442813

14/05/2013

0

Como posso fazer um tabela virtual só pra armazenar dados em execução, mostrar num DBGrid e mandar para outra física no click do grid? Eu to usando Access.
Frederico Brigatte***

Frederico Brigatte***

Responder

Posts

14/05/2013

Frederico Brigatte***

Estou usando ADO, poderia usar um ClientDataSet junto?
Responder

Gostei + 0

14/05/2013

Landerson Santos

Frederico bom dia.
Poderia ser mais específico no processo desejado?

O primeiro entendimento, você poderia usar um clientdataset e ficar salvando e apagando seu conteúdo enquanto executa a aplicação.

Na verdade precisamos saber ao certo o que deseja realmente fazer.
Responder

Gostei + 0

14/05/2013

Landerson Santos

Frederico bom dia.
Poderia ser mais específico no processo desejado?

O primeiro entendimento, você poderia usar um clientdataset e ficar salvando e apagando seu conteúdo enquanto executa a aplicação.

Na verdade precisamos saber ao certo o que deseja realmente fazer.
Responder

Gostei + 0

14/05/2013

Frederico Brigatte***

Ok, vou explicar. Estou usando MainMenu com ActionList. Estou gravando numa tabela Acao no Access os campos:

Action - Texto
Action_Nome - Texto
Permissao - Não

Gostaria de gravar numa tabela virtual esses campos sem ter que gravar na tabela Acao. O que eu quero gravar é os campos que o perfil X terá acesso, faria a gravação física na Tabela Permissoes Access dos campos que clicar no DBGrid que seriam os dados da tabela temporária. Só que tem um detalhe, quando clico no grid, ele grava na tabela Permissao o campo Permissao assim: Onde está N grava S e vice-versa.
Responder

Gostei + 0

14/05/2013

Frederico Brigatte***

Por padrão, está gravando na tabela Acao no campo Permissao 'N'. Atualmente ele está invertendo os valores qdo gravo, de S-N e de N-S. Ai tenho que ir na tabela Permissão e mudar os valores. Como poderia fazer isso uma única vez? Ou seja, já gravar a permissão que tem que ser?
Responder

Gostei + 0

14/05/2013

Frederico Brigatte***

Fiz o seguinte, aqui gravo na tabela virtual:

  DM.Cds.CreateDataSet;
  DM.Cds.Open;
  if DM.Cds.RecordCount = 0 then
     for i := 0 to FPrincipal.ComponentCount - 1 do
         if FPrincipal.Components[i] is taction then
         begin
            DM.Cds.insert;
            DM.CdsAction.value := taction(fprincipal.Components[i]).caption;
            DM.CdsAction_nome.value := taction(fprincipal.Components[i]).name;
            DM.CdsPermissao.value := 'N';
         end;


Como que faço o inverso, da virtual para física? Estou usando ADO. Fiz assim mas não ta varrendo a tabela, fica só no for e insert:
  DM.Acoes.Open;
  if DM.Acoes.RecordCount = 0 then
     for i := 0 to DM.Cds.FieldCount -1 do
            DM.Acoes.insert;
            DM.AcoesAction.value := varCdsClone.FieldByName(DM.Cds.Fields[i].FieldName).Value;
            DM.AcoesAction_nome.value := DM.CdsAction_nome.value;
            DM.AcoesPermissao.value := DM.CdsPermissao.value;
            DM.Acoes.Post;
     DM.Acoes.close;
     DM.Acoes.Open;
Responder

Gostei + 0

14/05/2013

Frederico Brigatte***

Como varrer os dados da tabela virtual e gravar na física?

  DM.Acoes.Open;
  if DM.Acoes.RecordCount = 0 then
     for i := 0 to DM.Cds.RecordCount - 1 do
     begin
            DM.Acoes.insert;
            DM.AcoesAction.value :=  DM.Cds.fieldbyname('Action').AsString;
            DM.AcoesAction_nome.value := DM.Cds.fieldbyname('Action_Nome').AsString;
            DM.AcoesPermissao.value := DM.Cds.fieldbyname('Permissao').AsString;
            DM.Acoes.Post;
     end;
     DM.Acoes.close;
     DM.Acoes.Open;


Estou fazendo assim, mas só está pegando o primeiro valor.
Responder

Gostei + 0

14/05/2013

Frederico Brigatte***

Fiz assim e deu certo, só que tem um problema:

  DM.Acoes.Open;
//  if DM.Acoes.RecordCount = 0 then

     DM.Cds.First;
     while not DM.Cds.eof do
     //for i := 0 to DM.Cds.RecordCount - 1 do
     begin
            DM.Acoes.insert;
            DM.AcoesAction.value :=  DM.Cds.fieldbyname('Action').AsString;
            DM.AcoesAction_nome.value := DM.Cds.fieldbyname('Action_Nome').AsString;
            DM.AcoesPermissao.value := DM.Cds.fieldbyname('Permissao').AsString;
            DM.Acoes.Post;
            DM.Cds.Next;
     end;
     DM.Acoes.close;
     DM.Acoes.Open;


No campo Permissão na tabela virtual está padrão N. Se gravar na tabela física, vai gravar como padrão N. Gostaria de já poder gravar na tabela física o valor correto, ou seja, S ou N, de acordo com o acesso.
Responder

Gostei + 0

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

Aceitar