Tabela Virtual e mostrar os dados no DBGrid
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***
Curtidas 0
Respostas
Frederico Brigatte***
14/05/2013
Estou usando ADO, poderia usar um ClientDataSet junto?
GOSTEI 0
Landerson Santos
14/05/2013
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.
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.
GOSTEI 0
Landerson Santos
14/05/2013
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.
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.
GOSTEI 0
Frederico Brigatte***
14/05/2013
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.
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.
GOSTEI 0
Frederico Brigatte***
14/05/2013
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?
GOSTEI 0
Frederico Brigatte***
14/05/2013
Fiz o seguinte, aqui gravo na tabela virtual:
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.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;
GOSTEI 0
Frederico Brigatte***
14/05/2013
Como varrer os dados da tabela virtual e gravar na física?
Estou fazendo assim, mas só está pegando o primeiro valor.
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.
GOSTEI 0
Frederico Brigatte***
14/05/2013
Fiz assim e deu certo, só que tem um problema:
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.
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.
GOSTEI 0