link5822 link5823 link5824 link5825 link5826 link5827 link5828 link5829 link5830 link5831 link5832 link5833 link5834 link5835 link5836 link5837 link5838 link5839 link5840 link5841 link5842 link5843 link5844 link5845 link5846 link5847 link5848 link5849 link5850 link5851 link5852 link5853 link5854 link5855 link5856 link5857 link5858 link5859 link5860 link5861 link5862 link5863 link5864 link5865 link5866 link5867 link5868 link5869 link5870 link5871 link5872 link5873 link5874 link5875 link5876 link5877 link5878 link5879 link5880 link5881 link5882 link5883 link5884 link5885 link5886 link5887 link5888 link5889 link5890 link5891 link5892 link5893 link5894 link5895 link5896 link5897 link5898 link5899 link5900 link5901 link5902 link5903 link5904 link5905 link5906 link5907 link5908 link5909 link5910 link5911 link5912 link5913 link5914 link5915 link5916 link5917 link5918 link5919 link5920 link5921 link5922 link5923 link5924 link5925 link5926 link5927 link5928 link5929 link5930 link5931 link5932 link5933 link5934 link5935 link5936 link5937 link5938 link5939 link5940 link5941 link5942 link5943 link5944 link5945 link5946 link5947 link5948 link5949 link5950 link5951 link5952 link5953 link5954 link5955 link5956 link5957 link5958 link5959 link5960 link5961 link5962 link5963
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