Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.25;
Скачать: CL | DM;

Вниз

Логические поля в MySQL и Delphi   Найти похожие ветки 

 
DmitryNekl   (2006-12-05 16:56) [0]

Уважаемые мастера!

Делаю интерфейс для редактирования данных в базе MySQL. Путем анализа типов данных в MySQL-таблице в run-time создаю форму для редактирования:


     if (ADODataSet.Fields.Fields[i] is TBooleanField) then
       CreateDBCheckBox(Form, DataSource, Top, ADODataSet.Fields.Fields[i]);
     if (ADODataSet.Fields.Fields[i] is TAutoIncField) then
       CreateDBEdit(Form, DataSource, Top, ADODataSet.Fields.Fields[i])
     else
       if (ADODataSet.Fields.Fields[i] is TSmallIntField) then
         CreateDBEdit(Form, DataSource, Top, ADODataSet.Fields.Fields[i])
       else
         if (ADODataSet.Fields.Fields[i] is TWordField) then
           CreateDBEdit(Form, DataSource, Top, ADODataSet.Fields.Fields[i])
         else
           if (ADODataSet.Fields.Fields[i] is TIntegerField) then
             CreateDBEdit(Form, DataSource, Top, ADODataSet.Fields.Fields[i]);


и т.д. - в зависимости от типов данных в таблице создаются разные компоненты на форме (текст - DBMemo, числа или varchar - DBEdit и т.д.)

Затык случился с логическими данными. В MySQL есть bool (определен как tinyint(1)). Delphi такое определяет как целое, и создает DBEdit вместо DBCheckBox.

Как записать условие, чтобы по типу tinyint(1) создавалось DBCheckBox?


 
clickmaker ©   (2006-12-05 17:03) [1]

может TField.Size проверить?


 
DmitryNekl   (2006-12-05 17:17) [2]

Посмотрел... для числовых полей TField.Size равен 0.


 
DmitryNekl   (2006-12-05 17:20) [3]

Не знаю... DataSize для целых=4, для этого цело-логического=2. Но насколько это надежно?


 
DmitryNekl   (2006-12-05 17:25) [4]

Сделал вывод DBCheckBox по условию DataSize=2 и тип - целый... по ADODataSet.Post получил "EDatabaseError": "True" is not valid integer value for field...

Как же с этим бороться-то, а? :)


 
clickmaker ©   (2006-12-05 17:27) [5]

не уверен, но что если попробовать BOOL вместо tinyint(1)?


 
DmitryNekl   (2006-12-05 17:29) [6]

Я и ставлю bool (использую phpMyAdmin). В момент редактирования поля ставлю bool, в запросе на изменение структуры таблицы отображается bool, а после изменения структуры автоматически появляется вместо bool tinyint(1) :(


 
DmitryNekl   (2006-12-05 17:48) [7]

Разобрался...
Если кому-нибудь поможет -
   DBCheckBox.ValueChecked:="1";
   DBCheckBox.ValueUnChecked:="0";



Страницы: 1 вся ветка

Текущий архив: 2007.02.25;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.044 c
15-1170457040
DillerXX
2007-02-03 01:57
2007.02.25
Подскажите с анимацией.


4-1160804337
dreamse
2006-10-14 09:38
2007.02.25
SafeMode


6-1157482660
_Sergey_
2006-09-05 22:57
2007.02.25
Логика работы сокетов


9-1144843652
NightLord
2006-04-12 16:07
2007.02.25
Формулы


2-1170926132
kilop
2007-02-08 12:15
2007.02.25
как сделать так чтобы при запуске форма появлялась в центре





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский