Главная страница
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.48 MB
Время: 0.041 c
15-1170457040
DillerXX
2007-02-03 01:57
2007.02.25
Подскажите с анимацией.


4-1151045297
novill
2006-06-23 10:48
2007.02.25
Не могу остановить свой сервис


9-1144849395
Yegorchic
2006-04-12 17:43
2007.02.25
GLMaterialLibrary и FreeForm ы


2-1170457963
acorables
2007-02-03 02:12
2007.02.25
Передача данных(массива) через DLL.


2-1170429405
dzuev
2007-02-02 18:16
2007.02.25
пишу в lpt-порт а получается абракадабра.