Alterar Tabela Paradox em Delphi

03/12/2003

1

Boa tarde a todos,

Estou com um problema. Preciso alterar a estrutura de uma tabela Paradox pelo Delphi. A Tabela que eu preciso alterar contém dados e não pode ser excluída.

Alguém sabe como adicionar um campo a mais pelo FieldDefs.Add sem usar o CreateTable no final (afinal ele apaga toda a tabela antiga) ?

Obrigado a todos.


Responder

Posts

03/12/2003

Helderjr

Ylton

Veja a procedure abaixo, eu utilizo assim para criar novos campos.

procedure Reorganiza;
var Filtro, Campo : String;
n : integer;
begin
// Crie uma copia do arquivo original
Filtro := ´Select * from Clientes´;
Tabela.Close;
Query.Sql.Clear;
Query.Sql.Add( Filtro );
Query.Open; // Você criará um Query com todos os dados
// Apague os arquivos velhos .db .px .xg? .yg?
// Crie novamente sua tabela com a nova estrutura.
while not Dm1.QrReo.Eof do
begin
Try
Tabela.Append;
for n := 1 to Query.FieldCount - 1 do
begin
Campo := Query.Fields[n].FieldName;
Tabela.FieldByName(Campo).Value := Query.FieldByName(Campo).Value;
end;
Tabela.Post;
finally;
Query.Next
end;
end;
Tabela.First;
end
Query.Close;
Query.Sql.Clear;
end;


Responder

03/12/2003

Rafael Heise

Voc~e pode fazer executar via SQL
ALTER TABLE TABELA ADD COLUMN CAMPO INTEGER/VARCHAR(10)/DATE/TIME/DECIMAL

o que você quiser.. olhe no help para mais detalhes...


Responder

04/12/2003

Ylton

Realmente,

Eu pesquisei diversas formas para fazer isso, analisei todos os métodos do FieldDefs (pois o projeto atual já utiliza FieldDefs) mas testando via SQL pelo SQL Explorer, eu consigo fazer tudo (ou quase tudo) que eu faço em um banco de dados relacional, mas no Paradox.

Vou utiizar uma Query e efetuar um ExecSQL



Você pode fazer executar via SQL
ALTER TABLE TABELA ADD COLUMN CAMPO INTEGER/VARCHAR(10)/DATE/TIME/DECIMAL

o que você quiser.. olhe no help para mais detalhes...



Responder