Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Detectar Tipo De Campo (https://www.clubdelphi.com/foros/showthread.php?t=63295)

MaMu 07-02-2009 20:36:05

Detectar Tipo De Campo
 
Quiero detectar el tipo de campo de una tabla de mySQL, pero esta funcion que hice no me funciona:

Código Delphi [-]
 
function GetTipoCampoSQL(oQry : TZQuery; Index: Integer) : String;
var TipoField: TFieldDef;
begin
  TipoField := oQry.FieldDefs.Items[Index];
  case TipoField.DataType of
    ftUnknown:     result := 'ftUnknown';
    ftString:      result := 'ftString';
    ftSmallint:    result := 'ftSmallint';
    ftInteger:     result := 'ftInteger';
    ftWord:        result := 'ftWord';
    ftBoolean:     result := 'ftBoolean';
    ftFloat:       result := 'ftFloat';
    ftCurrency:    result := 'ftCurrency';
    ftBCD:         result := 'ftBCD';
    ftDate:        result := 'ftDate';
    ftTime:        result := 'ftTime';
    ftDateTime:    result := 'ftDateTime';
    ftBytes:       result := 'ftBytes';
    ftVarBytes:    result := 'ftVarBytes';
    ftBlob:        result := 'ftBlob';
    ftMemo:        result := 'ftMemo';
    ftGraphic:     result := 'ftGraphic';
  end;
end;

Cuales son los FieldDef de mySQL ???

Al González 08-02-2009 02:09:37

¡Hola!

Cita:

Empezado por MaMu (Mensaje 337416)
Quiero detectar el tipo de campo de una tabla de mySQL, pero esta funcion que hice no me funciona:...Cuales son los FieldDef de mySQL ???

No dices por qué no te funciona. Tampoco está claro por qué quieres que la función devuelva un String. Pero me he tomado la libertad de modificarla, para usar la propiedad Fields en lugar de FieldDefs, además de que sirva con cualquier conjunto de datos (no sólo TZQuery ;)):
Código Delphi [-]
Uses
  TypInfo;

Function GetTipoCampo (DataSet :TDataSet; Index :Integer) :String;
Begin
  Result := GetEnumName (TypeInfo (TFieldType),
    Integer (DataSet.Fields [Index].DataType));
End;
Claro, funcionará siempre y cuando el conjunto de datos ya tenga objetos campo (TField) en su interior.

La propiedad FieldDefs viene heredada desde la clase TDataSet para todos los componentes derivados (conjuntos de datos como TZQuery, TADOTable, TIBDataSet, etc.). Depende de cómo se use el conjunto de datos, la propiedad FieldDefs podría no estar inicializada.

Espero te sirva.

Al González. :)


La franja horaria es GMT +2. Ahora son las 18:31:07.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi