Alterar campo no dbf ??? Urgência Urgentíssima!!!

Delphi

31/03/2003

Minha gente,

Alguem por aí sabe como alterar um campo num dbf via código ???

Exemplo :

campo - tamanho 4 p/ :
campo - tamanho 5

Muito obrigado por qualquer dica


JcL. :cry:


Anonymous

Anonymous

Curtidas 0

Respostas

Dor_poa

Dor_poa

31/03/2003

Olha Eu criei funções para isto.. funciona
Add_Field(´C:\´, ´TABELA´,´CAMPO´, ´250´ ,´Char´) ;


Function TPrincipal.UPCASE(WORD : String) : String ;
Var AUX : Array[0..100] OF CHAR ;
Begin
StrPCopy(AUX,WORD) ;
UpCase := STRPAS(STRUPPER(AUX)) ;
End ;

Procedure TPrincipal.Add_Field(DB, Tabela, Campo, Tam, Tipo : String) ;
Var
My_SQL : TQuery ;
My_Table : TTable ;
Clausula : String ;
Cont_F,
N_Fields, t : Integer ;
Begin
// If (Copy(tabela,0 ,Length(tabela)-3)) = Tabela then
tabela := TABELA+´.Db´;

My_SQL := TQuery.Create(Application) ;
My_Table := TTable.Create(Application) ;
My_SQL.DataBaseName := DB ;

My_Table.DatabaseName := DB ;
My_Table.TableName := tabela;
My_Table.TableType := ttParadox ;
My_Table.Active := True ;
My_Table.IndexDefs.UpDate ;
N_Fields := My_Table.FieldCount ;
My_Table.Active := False ;

{Verificar se o campo solicitado já existe}
For Cont_F := 0 To N_Fields - 1 Do
Begin
If UpCase(My_Table.FieldDefs.Items[CONT_F].Name) = UpCase(Campo) Then
begin
exit;
end;
End ;

My_SQL.SQL.Clear;
Clausula := ´Alter Table ´´´ + DB + Tabela + ´´´ Add ´ + Campo ;
If (Tipo = ´Char´) OR (Tipo = ´Memo´) or (Tipo = ´Bytes´) Then
Clausula := Clausula + ´ ´ + Tipo + ´(´ + Tam + ´)´
Else
Clausula := Clausula + ´ ´ + Tipo ;
My_SQL.SQL.Add(Clausula) ;
try
My_SQL.ExecSQL ;
Except LancaLogErro(´ADD_FIELD ´, Tabela + ´ Campo: ´ + campo + ´ - Comando não reconhecido´);
END;
My_SQL.Destroy ;
My_Table.Destroy ;
Exit;
// End ;

End ;


GOSTEI 0
POSTAR