Текущий архив: 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.047 c