Странности с ADO!!!

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Andrew Sherd
Новичок
Новичок
Аватара пользователя
 
Сообщения: 42
Зарегистрирован: 10.05.2004 (Пн) 0:18
Откуда: Санкт-Петербург

Странности с ADO!!!

Сообщение Andrew Sherd » 13.10.2004 (Ср) 0:54

Не знаю, что случилось. Возможно ошибка в корявости моих рук, но:

есть два эл. управления adoQ и adoA. Они привязаны к одной бд, но к разным таблицам Questions и Answers соответственно. Фишка в след.


Код: Выделить всё
iCountQ = adoQ.Recordset.RecordCount
iCountA = adoA.Recordset.RecordCount


Так вот - первая команда выполняется правильно и выдает 4ре записи, а на второй выскакивает Run-time error 91: Object Variable or With block variable not set. В чем проблема.... две же абсолютно одинаковые строчки?!?!?
:shock:
Маленькие хитрости: Если золотую рыбку положить на сковородку, количество желаний увеличивается да 50!!!

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 13.10.2004 (Ср) 8:41

Задача:
2 переменные А и Б

Какая из них Nothing?

Что до того то было?!?!??!
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.10.2004 (Ср) 10:35

Один из рекордсетов не открыт или уже закрыт.
Lasciate ogni speranza, voi ch'entrate.

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 13.10.2004 (Ср) 10:48

А именно - второй.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.10.2004 (Ср) 11:09

И не закрыт, а не существует. Был бы закрыт, он бы так и сказал :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.10.2004 (Ср) 11:11

"-- Раз коробка квадратная, значит внутри что-то круглое
-- Раз круглое, значит оранжевое
-- Раз оранжевое, значит апельсин
...
-- Васька, верни корову!"
:)
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.10.2004 (Ср) 12:07

alibek, :thumright:
:-)
Изображение

Andrew Sherd
Новичок
Новичок
Аватара пользователя
 
Сообщения: 42
Зарегистрирован: 10.05.2004 (Пн) 0:18
Откуда: Санкт-Петербург

Сообщение Andrew Sherd » 13.10.2004 (Ср) 22:41

Хм.... ну про Nothing и про корову - это, конечно, душевно.
Всем спасибо за ответы:

Кривость была моя, а причина (т.к. я в проге пользовался ocx, а не классом) была в привязке к какому-нить эл-ту. Первая таблица была привязана к TextBox, и после привязке 2ой табл. заработало все нормально, но... мне теперь интересно - дальше то по программе все нормально работало и без привязки второй табл. все данные считывались! =)
А так - всем спасибо :D
Маленькие хитрости: Если золотую рыбку положить на сковородку, количество желаний увеличивается да 50!!!

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 14.10.2004 (Чт) 10:01

Видимо, VB при первой привязке ADODC к какому-то контролу отркрывает свою коннекцию к базе. Потом уже использует открытую.

Вообще, если программа не тестовая, в которой надо просто посмотреть, как что работает, а достаточно серьезная, то советую пользоваться объектами ADO - Connection и Recordset. А чуть позжее тебе может понадобиться и объект Command. Тех, кто привязывается к ADODC обычно можно привязать и к рекордсету (это я про контролы разные :) ). В случае, когда нужен все-таки ADODC, можно и его инициализировать уже открытым рекордсетом. Пользуясь объектами ADO ты сам контролируешь, сколько и какие коннекции отрыты, какие они имеют свойства. В случае использования напрямую ADODC контроля над коннекциями у тебя нет.

Как открыть коннекцию самому, читай MSDN или поищи по форуму по ключевым словам ADO, Connection, Recordset. Тут их много обсуждаем.
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Dzhon
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 236
Зарегистрирован: 09.12.2003 (Вт) 13:30
Откуда: Россия, Омск

Сообщение Dzhon » 17.10.2004 (Вс) 7:28

И еще в пользу использования ADO а не контрола ADODC:
При использовании ADO открываешь один Connection к базе и спАкойно на нем работаешь независимо от количества контролов и операций с БД, а в случае с ADODC то сколько у тебя ADODC cтолько и открытых Connection к БД соотственно лишний расход ресурсов и загрузка сети. :wink:


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 1

    TopList  
cron