Alterar campo no dbf ??? Urgência Urgentíssima!!!
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:
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
Curtidas 0
Respostas
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 ;
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