Alterar Tabela Paradox em Delphi
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.
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.
Ylton
Curtidas 0
Respostas
Helderjr
03/12/2003
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;
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;
GOSTEI 0
Rafael Heise
03/12/2003
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...
ALTER TABLE TABELA ADD COLUMN CAMPO INTEGER/VARCHAR(10)/DATE/TIME/DECIMAL
o que você quiser.. olhe no help para mais detalhes...
GOSTEI 0
Ylton
03/12/2003
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...
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...
GOSTEI 0