Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];

Вниз

Логические поля в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.043 c
3-1164974166
Patrick
2006-12-01 14:56
2007.02.25
Нетрадиционный параметр


11-1149072986
GMax
2006-05-31 14:56
2007.02.25
ScrollBox глючит


2-1170752418
Medved_
2007-02-06 12:00
2007.02.25
MDI


15-1170200828
hmmm
2007-01-31 02:47
2007.02.25
google


15-1169584912
Елена
2007-01-23 23:41
2007.02.25
Работа. Требуется программист delphi





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский