![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Could not convert variant of type (Null) into type (String) [D7]
Lexa © (2005-06-08 21:41:00)Имеется ADOConnection, связанная с ним ADOTable, с которой связана DataSource, на которую ссылается DBGrid. После выполнения
ADOConnection.open();
ADOTable.open;
во второрой строке возникает ошибка "Project XXXX.exe raised exception class EVariantTypeCastError with message 'Could not convert variant of type (Null) into type (String)'. Process stoped". Причем после нажатия на F9 работа продолжается вполне нормально, DBGrid правильно отображает необходимые данные. В чем может быть дело???
alares (2005-06-16 11:31:00) [1]Lexa, та же беда :( только я к dbf подключаюсь. Если сделать так:
try
ADOConnection.Open;
ADOTable.Open;
except
on EVariantTypeCastError do;
- все работает.
Lexa (2005-06-12 21:54:00) [2]И всё же в чем может быть дело?? Киньте хотябы ссылочку на пример или толковую статью по работе с базами Access через ADO в Delphi.
Anatoly Podgoretsky (2005-06-09 16:13:00) [3]Lexa (09.06.05 15:56) [12]
Теперь тоже самое, но в отдельном проекте.
Lexa (2005-06-09 15:56:00) [4]Итак, в подробностях:
Имеется форма, на ней ADOTable1, в свойствах которого прописана ConnectionString, указана таблица в базе, которую нужно читать. Затем имеется DataSource1 в свойствах которого параметр DataSet определён как ADOTable1. Так-же имеется DBGrid в свойстве которого DataSource прописано DataSource1. Имеется процедураprocedure TfrmMain.FormCreate(Sender: TObject);
begin
ADOTable1.Open;
end;
После запуска программы получаем вышеупомянутое сообщение. После повторного нажатия F9 программа продолжает работу, и DBGrid верно отображает необходимые данные. Если это не "всё на автьомате", то извините.
Anatoly Podgoretsky (2005-06-09 14:33:00) [5]Плохиш © (09.06.05 14:10) [10]
Не т.ч, а т.е.
Плохиш (2005-06-09 14:10:00) [6]>Lexa (09.06.05 13:24) [7]
>Там же всё на автомате, установлены связи и всё.
Где "всё на автомате" таких проблем не возникает. Т.ч. врёшь.
КиТаЯц (2005-06-09 14:00:00) [7]>Плохиш © (09.06.05 13:16) [6]
Да.
Или:
Edit1.text:= VarToStr(...)
Lexa (2005-06-09 13:33:00) [8]Попробовал использовать для таблицы, где все данные числовые, ошибка всёравно возникает.
Lexa (2005-06-09 13:24:00) [9]>Плохиш
А где его использовать? Там же всё на автомате, установлены связи и всё.
Плохиш (2005-06-09 13:16:00) [10]>Lexa (09.06.05 10:29) [4]
Для чтения значений текстовых полей используй явное преобразование .AsString
bon (2005-06-09 13:05:00) [11]А чем показуешь DataSource?
Lexa (2005-06-09 10:29:00) [12]У меня бд Access. Что я что то с настройками напутал я и сам понимаю, а какие именно настройки? Приследуется цель чтения некоторых таблиц из БД, если для этого можно обойтись меньшим числом компонентов, то подскажите , пожалуйста, как. При отладке по F7 ошибка возникает в строке ADOTable.open, значит напутал именно в его свойствах.
>С другой стороны, если приложение не упало, значит есть >обработка try ... except
Такой обработки в тексте программы нет.
ЮЮ (2005-06-09 05:25:00) [13]>Причем после нажатия на F9 работа продолжается вполне нормально
Следует нажимать F8(F7) чтобы оставаться в коде обработчмка, где возникло исключение или посмотреть стэк вызовов. Другими словами, отлаживать программу надо.
С другой стороны, если приложение не упало, значит есть обработка try ... except. Если в твоем коде, то можно избежать лишнего exception, если в глубинах VCL - смириться
Anatoly Podgoretsky (2005-06-08 23:08:00) [14]Да у него напутано в программе.
ANB (2005-06-08 22:58:00) [15]Чего то ты намутил с настройками. Либо строки коннекта, либо в настройках поля. Кстати, а БД какая ? Я только что над ораклом поизгалялся твоим способом - ну не ругается на Null.