Fórum Tabela temporária dinamica #435260
22/02/2013
0
Isso é possível?
Qual é a melhor maneira?
Desde já lhe agradeço pela atenção.
Leandroptu
Curtir tópico
+ 0Post mais votado
22/02/2013
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.
Leandroptu
Gostei + 1
Mais Posts
22/02/2013
Alessandro Folk
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
22/02/2013
Leandroptu
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
22/02/2013
Danilo Emanuel
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
22/02/2013
Danilo Emanuel
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
22/02/2013
Leandroptu
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)