Ver Mensaje Individual
  #4  
Antiguo 23-08-2003
sanxpue sanxpue is offline
Miembro
 
Registrado: jul 2003
Posts: 196
Reputación: 23
sanxpue Va por buen camino

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]
Responder Con Cita