Tabela temporária dinamica
22/02/2013
0
Isso é possível?
Qual é a melhor maneira?
Desde já lhe agradeço pela atenção.
Leandroptu
Post 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
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...
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...
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.
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 ?
Clique aqui para fazer login e interagir na Comunidade :)