link10500 link10501 link10502 link10503 link10504 link10505 link10506 link10507 link10508 link10509 link10510 link10511 link10512 link10513 link10514 link10515 link10516 link10517 link10518 link10519 link10520 link10521 link10522 link10523 link10524 link10525 link10526 link10527 link10528 link10529 link10530 link10531 link10532 link10533 link10534 link10535 link10536 link10537 link10538 link10539 link10540 link10541 link10542 link10543 link10544 link10545 link10546 link10547 link10548 link10549 link10550 link10551 link10552 link10553 link10554 link10555 link10556 link10557 link10558 link10559 link10560 link10561 link10562 link10563 link10564 link10565 link10566 link10567 link10568 link10569 link10570 link10571 link10572 link10573 link10574 link10575 link10576 link10577 link10578 link10579 link10580 link10581 link10582 link10583 link10584 link10585 link10586 link10587 link10588 link10589 link10590 link10591 link10592 link10593 link10594 link10595 link10596 link10597 link10598 link10599 link10600 link10601 link10602 link10603 link10604 link10605 link10606 link10607 link10608 link10609 link10610 link10611 link10612 link10613 link10614 link10615 link10616 link10617 link10618 link10619 link10620 link10621 link10622 link10623 link10624 link10625 link10626 link10627 link10628 link10629 link10630 link10631 link10632 link10633 link10634 link10635 link10636 link10637 link10638 link10639
C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Глюк, непонятный
** 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


Не зарегистрирован







Душевно! Все поехало! Как гора с плеч свалилась!

Вернуться в Работа с базами данных в C++Builder