Criar Tabela no Interbase em tempo de execução

23/02/2003

0

Pessoal tenho a seguinte necessidade:

tenho uma peça que está cadastrada na tabela de peça da seguinte forma

cod_Peca_Mont. Cod_Peca_Forn. Cod_Forn. Custo
102030 22222 10 10,00
102030 33333 20 20,00
102030 44444 30 30,00
102030 55555 40 40,00

Ou seja tenho código da montadora que é fornecida por vários fornecedores

depois tenho a tabela Fornecedor da seguinte forma:

Cod_Forn. Nome_Forn.
10 joão
20 pedro
30 Mário
40 Antonio

Agora preciso mostrar isto da seguinte forma em um Grid

Cód. Peca Nome_peca João Pedro Mário Antonio
102030 Freio 10,00 20,00 30,00 40,00




Se alguém puder me ajudar eu agradeço


Anonymous

Anonymous

Responder

Posts

23/02/2003

Dor_poa

Criar um arquivo em tempo de execução é relativamente simples, você tem que criar uma instância do objeto TTable, esse objeto(de uma lida no Help TTable e suas propriedades e metodos) tem um método de criação e um de Criar tabela.

Depois disso é só definir as propriedades da nova tabela:

DatabaseName := ´c:\lista´;
TableName := ´Produtos.dbf´;
TableType := ttDbase;
os campos da tabela:

Add(´codigo´, ftString,7, false);
Add(´Nome´, ftString, 45, false);
e os índices:

Add(´prod1´, ´codigo´, []);
Add(´prod2´, ´Fornecedor´, []);
com todos os dados devidamente setados:

CreateTable;
Procedure TMainForm.Inicializa;
var
Table1 : TTable;
begin
{ Criar componente TTable }
Table1 := TTable.create(Application);
{ Definições de Campos e criação do arquivo }
with Table1 do
begin
DatabaseName := ´c:\lista´;
TableName := ´Produtos.dbf´;
TableType := ttDbase;
with FieldDefs do
begin
Clear;
Add(´codigo´, ftString,7, false);
Add(´Nome´, ftString, 45, false);
Add(´Fornecedor´, ftString, 5,false );
Add(´Custo´, ftCurrency, 0, false );
Add(´Venda´, ftCurrency, 0, false );
end;
with IndexDefs do
begin
Clear;
Add(´prod1´, ´codigo´, []);
Add(´prod2´, ´Fornecedor´, []);
end;
CreateTable;
end;
end;
Utilizando o tipo ftCurrency, formato de valores do sistema financeiro, o Delphi cria um campo Dbase com N,20,4


Responder

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

Aceitar