Tabela temporária dinamica
Bom dia, Pessoal. Estou necessitando de desenvolver o processo de geração de tabelas temporárias, ou seja a minha ideia é centralizar todo o processo de geração das tabelas com os respectivos registros em uma Unit e no ambiente de geração de relatório (Rave Report ou Quick Report)e consulta (DBGrid) eu somente direcionar o DataSource.
Isso é possível?
Qual é a melhor maneira?
Desde já lhe agradeço pela atenção.
Isso é possível?
Qual é a melhor maneira?
Desde já lhe agradeço pela atenção.
Leandroptu
Curtidas 0
Melhor post
Leandroptu
22/02/2013
vamos la:
primeiramente, vamos entender o que vc entende como TABELA TEMPORARIA DINAMICA:
digite um codigo onde vc montaria uma 'tabela temporaria dinamica' do seu ponto de vista para entendermos e começarmos a te ajudar, pq na net tem muitos tipos diferentes de exemplos 'dinamicos', vamos ver como vc trabalhar e partir dai.
primeiramente, vamos entender o que vc entende como TABELA TEMPORARIA DINAMICA:
digite um codigo onde vc montaria uma 'tabela temporaria dinamica' do seu ponto de vista para entendermos e começarmos a te ajudar, pq na net tem muitos tipos diferentes de exemplos 'dinamicos', vamos ver como vc trabalhar e partir dai.
Obrigado por responder, neste codigo abaixo está tratando somente uma tabela 'Produto', a ideia é tratar varias tabelas onde será defindo por paramentro no momento da criação. Vê se entende o codigo. Obrigado.
unit UTabTemp;
interface
uses
Dialogs, Windows, SysUtils, Classes, Messages, Forms, Variants, DB, DBClient;
type
TPesquisa = class(TObject)
public
DSFormas: TDataSource;
CDSFormas: TClientDataSet;
constructor Create;
destructor Destroy; Override;
function Pesquisar(): Integer;
end;
implementation
{ TPesquisa }
uses Udm;
constructor TPesquisa.Create;
begin
try
CDSFormas := TClientDataSet.Create(nil);
CDSFormas.FieldDefs.add('codigo',ftInteger);
CDSFormas.FieldDefs.add('descricao',ftString,20);
CDSFormas.ProviderName := 'teste';
CDSFormas.CreateDataSet;
DSFormas := TDataSource.Create(nil);
DSFormas.DataSet := CDSFormas;
except on E: Exception do
ShowMessage( E.Message );
end;
end;
destructor TPesquisa.Destroy;
begin
DSFormas.Free;
CDSFormas.Free;
inherited;
end;
function TPesquisa.Pesquisar(): Integer;
var sFormaCliente : string;
begin
CDSFormas.Close;
CDSFormas.CreateDataSet;
CDSFormas.IndexFieldNames:= 'codigo';
CDSFormas.Open;
if dm.IBTransaction.Active then
dm.IBTransaction.Commit;
dm.IBTransaction.StartTransaction;
try
try
with dm.QProduto do
begin
close;
sql.Clear;
sql.Text:= 'SELECT CODIGO, DESCRICAO FROM PRODUTOS';
open;
while not eof do
begin
begin
CDSFormas.Append;
CDSFormas.FieldByName('codigo').AsInteger := fieldbyname('codigo').AsInteger;
CDSFormas.FieldByName('descricao').AsString := fieldbyname('descricao').AsString;
CDSFormas.Post;
end;
next;
end;
end;
dm.IBTransaction.Commit;
except
dm.IBTransaction.Rollback;
showmessage('erro ao buscar PRODUTOS');
end;
finally
dm.QConsulta.close;
CDSFormas.First;
end;
end;
end.
GOSTEI 1
Mais Respostas
Alessandro Folk
22/02/2013
é possível sim!
vai dar trabalho mais é possivel! hehe
você terá que criar funções de banco para cada consulta e dentro desta função você terá que alimentar a tabela temporária com os valores e ID do registro! para devolver a sua tela para efetuar a busca!
outras formas seria com a utilização de view, alimentando um ClientDataSet em tempo de execução...
vai dar trabalho mais é possivel! hehe
você terá que criar funções de banco para cada consulta e dentro desta função você terá que alimentar a tabela temporária com os valores e ID do registro! para devolver a sua tela para efetuar a busca!
outras formas seria com a utilização de view, alimentando um ClientDataSet em tempo de execução...
GOSTEI 0
Leandroptu
22/02/2013
é possível sim!
vai dar trabalho mais é possivel! hehe
você terá que criar funções de banco para cada consulta e dentro desta função você terá que alimentar a tabela temporária com os valores e ID do registro! para devolver a sua tela para efetuar a busca!
outras formas seria com a utilização de view, alimentando um ClientDataSet em tempo de execução...
vai dar trabalho mais é possivel! hehe
você terá que criar funções de banco para cada consulta e dentro desta função você terá que alimentar a tabela temporária com os valores e ID do registro! para devolver a sua tela para efetuar a busca!
outras formas seria com a utilização de view, alimentando um ClientDataSet em tempo de execução...
Alessandro, obrigado por responder. Como que ficaria essa opção:
outras formas seria com a utilização de view, alimentando um ClientDataSet em tempo de execução...
GOSTEI 0
Danilo Emanuel
22/02/2013
vamos la:
primeiramente, vamos entender o que vc entende como TABELA TEMPORARIA DINAMICA:
digite um codigo onde vc montaria uma 'tabela temporaria dinamica' do seu ponto de vista para entendermos e começarmos a te ajudar, pq na net tem muitos tipos diferentes de exemplos 'dinamicos', vamos ver como vc trabalhar e partir dai.
primeiramente, vamos entender o que vc entende como TABELA TEMPORARIA DINAMICA:
digite um codigo onde vc montaria uma 'tabela temporaria dinamica' do seu ponto de vista para entendermos e começarmos a te ajudar, pq na net tem muitos tipos diferentes de exemplos 'dinamicos', vamos ver como vc trabalhar e partir dai.
GOSTEI 0
Danilo Emanuel
22/02/2013
pq vc nao faz diferente: cria uma classe para cada tabela vc pode instanciar e manipular, e usando atributos vc pode sim criar dinamicamente os CDS inclusive populá-los e até configurar as gris com base nessa classe.
Ex:
assim, no método que seria responsável pela criação dinâmica dos cds, vc pasaria a classe no caso TCliente... acho que fica mais fácil pra manutenção, concorda ?
Ex:
unit Cliente;
interface
type
TCliente = class
private
ID: Integer;
NOME: String;
INSCRICAO_ESTADUAL: String;
DATA_CADASTRO: Date;
published
property Id: Integer read ID write ID;
property IE: String read INSCRICAO_ESTADUAL write INSCRICAO_ESTADUAL;
property DataCadastro: Date read DATA_CADASTRO write DATA_CADASTRO;
end;
implementation
end.
assim, no método que seria responsável pela criação dinâmica dos cds, vc pasaria a classe no caso TCliente... acho que fica mais fácil pra manutenção, concorda ?
GOSTEI 0
Leandroptu
22/02/2013
Obrigado irei fazer uns testes.
GOSTEI 0