Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2012, 22:04   #1
BukTop2009
Пользователь
 
Регистрация: 16.06.2011
Сообщений: 55
По умолчанию Узнать тип поля

Как узнать тип поля в DBGrid, данные получаю из ADO Connection.
No smoking!
BukTop2009 вне форума Ответить с цитированием
Старый 25.10.2012, 22:53   #2
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

dbgrid.columns[..].field.datatype
xoodoo вне форума Ответить с цитированием
Старый 25.10.2012, 23:00   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Код:
 Dbgrid1.DataSource.DataSet.FieldByName(Имя поля).DataType
Даст тип поля. Один из следующих:
Цитата:
Value Description

ftUnknown Unknown or undetermined
ftString Character or string field
ftSmallint 16-bit integer field
ftInteger 32-bit integer field
ftWord 16-bit unsigned integer field
ftBoolean Boolean field
ftFloat Floating-point numeric field
ftCurrency Money field
ftBCD Binary-Coded Decimal field that can be converted to Currency type without a loss of precision.
ftDate Date field
ftTime Time field
ftDateTime Date and time field
ftBytes Fixed number of bytes (binary storage)

ftVarBytes Variable number of bytes (binary storage)
ftAutoInc Auto-incrementing 32-bit integer counter field
ftBlob Binary Large OBject field
ftMemo Text memo field
ftGraphic Bitmap field
ftFmtMemo Formatted text memo field
ftParadoxOle Paradox OLE field
ftDBaseOle dBASE OLE field
ftTypedBinary Typed binary field
ftCursor Output cursor from an Oracle stored procedure (TParam only)
ftFixedChar Fixed character field
ftWideString Wide string field
ftLargeint Large integer field

ftADT Abstract Data Type field
ftArray Array field
ftReference REF field
ftDataSet DataSet field
ftOraBlob BLOB fields in Oracle 8 tables
ftOraClob CLOB fields in Oracle 8 tables
ftVariant Data of unknown or undetermined type
ftInterface References to interfaces (IUnknown)
ftIDispatch References to IDispatch interfaces
ftGuid globally unique identifier (GUID) values
ftTimeStamp Date and time field accessed through dbExpress
ftFMTBcd Binary-Coded Decimal field that is too large for ftBCD.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.10.2012, 23:25   #4
BukTop2009
Пользователь
 
Регистрация: 16.06.2011
Сообщений: 55
По умолчанию

Stilet Снова здравствуй

Где отобразится тип данных?

Цитата:
Edit3.Text:=(Dbgrid1.DataSource.Dat aSet.FieldByName('Дата_регистрации' ).DataType);
Не работает мой вариант
No smoking!
BukTop2009 вне форума Ответить с цитированием
Старый 26.10.2012, 00:03   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

так не скомпилируется, типы данных разные, нельзя строке присваивать совсем даже не строку..

мне как-то подобное понадобилось, набросал такую функцию, можете попытаться воспользоваться ей:
Код:
function ShowTypeField( const curTField : TFieldType) : string;
begin
 case curTField 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';
    ftAutoInc: Result := 'ftAutoInc';
    ftBlob: Result := 'ftBlob';
    ftMemo: Result := 'ftMemo';
    ftGraphic: Result := 'ftGraphic';
    ftFmtMemo: Result := 'ftFmtMemo';
    ftParadoxOle: Result := 'ftParadoxOle';
    ftDBaseOle: Result := 'ftDBaseOle';
    ftTypedBinary: Result := 'ftTypedBinary';
    ftCursor: Result := 'ftCursor';
    ftFixedChar: Result := 'ftFixedChar';
    ftWideString: Result := 'ftWideString';
    ftLargeInt: Result := 'ftLargeInt';
    ftADT: Result := 'ftADT';
    ftArray: Result := 'ftArray';
    ftReference: Result := 'ftReference';
    ftDataSet: Result := 'ftDataSet';
    ftOraBlob: Result := 'ftOraBlob';
    ftOraClob: Result := 'ftOraClob';
    ftVariant: Result := 'ftVariant';
    ftInterface: Result := 'ftInterface';
    ftIDispatch: Result := 'ftIDispatch';
    ftGuid: Result := 'ftGuid';
  end;
end;
использовать так:
Код:
Edit3.Text:= ShowTypeField(Dbgrid1.DataSource.DataSet.FieldByName('Дата_регистрации' ).DataType);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.10.2012, 00:13   #6
BukTop2009
Пользователь
 
Регистрация: 16.06.2011
Сообщений: 55
По умолчанию

Serge_Bliznykov
Заслуженный модератор, я записал вашу функцию, уж очень необходимо воспользоваться, создание программы застряло на нём:

Цитата:
procedure TForm1.Button7Click(Sender: TObject);
begin

function ShowTypeField(const curTField:TFieldType): string;
begin
case curTField of
ftUnknown: Result := 'ftUnknown';
....
ftGuid: Result := 'ftGuid';
end;
end;

ADOQuery1.Insert;
ADOQuery1.FieldByName('Оплата').AsI nteger:=1500;
ADOQuery1.FieldByName('Login').AsSt ring:=(Edit1.Text);
ADOQuery1.FieldByName('Password').A sString:=(Edit2.Text);
Edit3.Text:=ShowTypeField(Dbgrid1.D ataSource.DataSet.FieldByName('Дата _регистрации').DataType);
if (Edit1.Text='') or (Edit2.Text='') or (Edit3.Text='') then
MessageDlg('Данные не внесены либо внесены некорректно', mtError,[mbOk],0);
end;
Мне в глобальном прописать ShowTypeField? Т.К. ругается на присутсвие.
No smoking!
BukTop2009 вне форума Ответить с цитированием
Старый 26.10.2012, 00:25   #7
BukTop2009
Пользователь
 
Регистрация: 16.06.2011
Сообщений: 55
По умолчанию

Прошу прощения туплю. Функцию не там вписал. Но в Edit3 не отображается ничего. Тыкаю все варианты не хочет выявляться. Сейчас попробую Label отдельный вписать для него
No smoking!
BukTop2009 вне форума Ответить с цитированием
Старый 26.10.2012, 00:29   #8
BukTop2009
Пользователь
 
Регистрация: 16.06.2011
Сообщений: 55
По умолчанию

Serge_Bliznykov спасибо Ваш вариант помог мне!
No smoking!
BukTop2009 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
тип поля в clientdataset iliili БД в Delphi 5 31.08.2010 20:51
установив тип поля G (Graphic) Steil Общие вопросы Delphi 1 25.05.2010 09:20
тип поля логический TAK Microsoft Office Access 1 19.05.2010 21:19
Тип поля! ro_ma Microsoft Office Access 4 20.11.2009 21:32