** avtoritet |
Отправлено: 16.09.2004, 13:28 |
|
Не зарегистрирован
|
Помогите, делема! БД парадокс. Значит кидаю TEdit, кнопку ну и все что нужно для отображеня данных табицы. НАжимаешь на кнопку и должно в TEDIT отобразить значение поля типа Alpha. НО выдает ошибку ели поле БД пустое. Что-то вроде — Не могу конвертнуть NULL в String.
Кто знает решение — отпишитесь если не лень! |
|
AVC |
Отправлено: 16.09.2004, 13:59 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Мда, действительно дилема. Я не могу даже повторить вашу ошибку.
На форме TTable, TDataSource, TDBGrid (для простого контроля) TEdit, TDBEdit и кнопка. BCDEMOS таблица country.pd поле Name. Все связи настроены. Добавляю пустую запись и становлюсь на нее. кнопка делает
CODE |
TField *fld = tbl->FindField("Name");
if (!fld) return;
Edit1->Text = fld->AsString;
|
Ни Edit, ни DBEdit не ругаются.
Вы уверены, что правильно поняли сообщение об ошибке?
|
|
** avtoritet |
Отправлено: 16.09.2004, 15:01 |
|
Не зарегистрирован
|
For AVC:
У меня такая строка ругается:
frmFilm->edtGod->Text =QRY->Fields->FieldByNumber(3)->Value;
Ошибка: Not convert type (NULL) for (String).-На пямять пишу, но суть изложил.
попробовал как ты через TFIeld — тоже ругается, причем так же.
На форме: TQuery, TDataSource, TUpdate, TDBGrid ...
Кстати, ругается тогда, когда ячейка пуста. Будь там значение — все ОК |
|
AVC |
Отправлено: 16.09.2004, 15:29 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
У нас разница не в Field а в следующем:
я пишу AsString
вы Value
сообщение об ошибке вполне закономерно.
Если хотите использовать Value задавайте явное преобразование
frmFilm->edtGod->Text = AnsiString(QRY->Fields->FieldByNumber(3)->Value); |
|
** avtoritet |
Отправлено: 16.09.2004, 15:45 |
|
Не зарегистрирован
|
Сделал через преобразование в AnsiString — тажа история! Ты у себя пробовал? У меня уже бошка трещит от этого глюка! |
|
Guest |
Отправлено: 16.09.2004, 16:03 |
|
Не зарегистрирован
|
Виноват, поторопился. Конечно не сработает (по той же причине).
Поставьте AsString и не парьтесь.
или
CODE |
Variant v = QRY->Fields->FieldByNumber(3)->Value->Value;
AnsiString str;
if (v.Type() == varString) str = v.AsType(varString);
else if (v.Type() == varBoolean) str = (bool(v))? AnsiString("True") : AnsiString("False");
// ...
else str = "";
frmFilm->edtGod->Text = str;
| |
|
** avtoritet |
Отправлено: 17.09.2004, 12:41 |
|
Не зарегистрирован
|
Душевно! Все поехало! Как гора с плеч свалилась! |
|