Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

icq: 118024746
По умолчанию

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

Код:

 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
Репутация: 10
По умолчанию

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

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

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

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

мне как-то подобное понадобилось, набросал такую функцию, можете попытаться воспользоваться ей:
Код:

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
Репутация: 10
По умолчанию

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
Репутация: 10
По умолчанию

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
тип поля в 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 22:32


19:05.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru