Código:
var
i : integer;
begin
i := 0;
// Si Fields[0].FieldName = 'Indice' (supongamos)
// entonces no entra y te va a regresar que existe i = 0
//mala rutina
while (i <= Table1.Fields.Count - 1) and (Table1.Fields[i].FieldName = 'fax') do
inc(i);
if i > Table1.Fields.Count - 1 then
ShowMessage('no existe')
else
ShowMessage('existe');
end;
Bueno la idea es la siguiente que tengas otra TTable que llame a la tabla
que llama fDatamodulo.tbproveedor pero sin campos persistentes, (supongamos que
la tabla se llama proveedor.db) puedes tener una ttable que se llame tbLibre y
a la hora que quieras probar eso entonces :
Código:
Function SeEncuentraCampo : Boolean;
Var
I : Integer;
Begin
Result := False;
fDatamodulo.tbLibre.Close //por si esta abierta por algun lado
fDatamodulo.tbLibre.TableName := 'proveedor.db';
fDatamodulo.tbLibre.Open;
While (I <= fDatamodulo.tbLibre.Fields.Count-1) And (Not Result) Do
If fDatamodulo.tbLibre.Fields[i].FieldName = 'fax' Then
Result := True
Else
Inc(I);
fDatamodulo.tbLibre.Close;
End;
Ahora si vas a usar esto para varias tablas solo hay que hacer unas pequeñas
modificaciones a lo anterior :
Código:
Function SeEncuentraCampo(NomTab,Campo : String) : Boolean;
Var
I : Integer;
Begin
Result := False;
fDatamodulo.tbLibre.Close //por si esta abierta por algun lado
fDatamodulo.tbLibre.TableName := NomTab;
fDatamodulo.tbLibre.Open;
While (I <= fDatamodulo.tbLibre.Fields.Count-1) And (Not Result) Do
If fDatamodulo.tbLibre.Fields[i].FieldName = Campo Then
Result := True
Else
Inc(I);
fDatamodulo.tbLibre.Close;
End;
entonces ya en el procedimiento grande
Código:
if SeEncuentraCampo('proveedor.db','fax') then
Begin
fDatamodulo.tbproveedor.open;
.
.
end
Else
ShowMessage('No existe el campillo');
Saludos desde Puebla Mexico
[email protected]