IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   HELP !!! разучился программировать (https://www.imho.ws/showthread.php?t=103957)

Alex Dark 22.05.2006 07:55

HELP !!! разучился программировать
 
Доброго времени суток всем
Не брал access в руки очень давно.
Стоит офис ХР, раньше писал на 97
Проблемма
Не могу открыть готовую таблицу для дальнейшей обработки

вот пример
Dim Db
Dim R As Recordset
Set Db = CurrentDb
Set R = Db.openrecordset("Движение")
или
Set R = Db.openrecordset("select * from Движение")

LightImage 22.05.2006 15:02

Хотелось бы сразу уточнить, что имеется в виду:
Цитата:

Alex Dark:
Не могу открыть
В коде ошибок нет. Рискну предположить, что в проекте нет ссылки на библиотеку DAO; в этом случае нужно открыть Visual Basic (нажав Alt+F11 в Access), войти в меню Tools|References, и там поставить галочку напротив "Microsoft DAO 3.6 Object Library"

Alex Dark 22.05.2006 16:25

точно
не стаяла галочка. Решпект.

Кстати, я пробовал на разных машинах, везде одно и то же.
И еще, там библиотека dao 3.51. Наверное смысла нет включать и ее?

PS
И еще... Почему у меня помощь то на русском выйдет, а в основном на английском. Может ему где почесать надо?

и еще
почему при выполнении
Set R = Db.openrecordset("select * from Движение Where id=" & параметр)
выдает Слишком мало параметров, требуется хотябы 1 ??? :mad:
При этом, если ему дописываешь ..., dbOpenTable, dbReadOnly) при выполнении говорит что объект (далее строка моего запроса) не найден ядром базы данных и т.д.
проверял, запрос написан правильно
Уже чуствую себя идиотом :молись:

LightImage 23.05.2006 09:01

DAO нужно включать только одну, да их две сразу (допустим 3.6 и 3.51) включить всё равно не получится, это же одна библиотека, просто версии разные. DAO 3.6 будет достаточно.
Помощь в Офисе 2002 вся такая, мне не известно что можно сделать чтобы это исправить.
Про "слишком мало параметров" снова слишком мало информации. Что такое "Движение" -- таблица или запрос? Что такое "параметр" -- переменная, константа? Какой у неё тип и значение? Какие поля есть в таблице, какой у них тип?
Для проверки я создал таблицу "Движение" с полями Id (длинное целое) и Txt (текстовое). Вот такой код работает без проблем:
Код:

Dim Db As Database
Dim R As Recordset
Dim параметр
    Set Db = CurrentDb
    параметр = 1
    Set R = Db.OpenRecordset("select * from Движение Where id=" & параметр)


Alex Dark 24.05.2006 13:31

Во блин мелкософт набородил огород.
Цитата:

LightImage:
Про "слишком мало параметров" снова слишком мало информации.
у меня все было так же как и у тебя
Dim Db As Database
Dim R As Recordset
Dim параметр
Set Db = CurrentDb
параметр = 1
Set R = Db.OpenRecordset("select * from Движение Where id=" & параметр)

"Движение" это таблица. Проверял в построителе запросов - все работает. Причем копировал запрос через отладчик, а не набирал вручную.

Нашел другой выход
убрал в строке "Dim R As Recordset" As Recordset
все заработало. Шаманство какое-то
Вобщем-то огульными путями проблему решил, прогу написал, все работает. :idontnow: Непонятности только раздражают

LightImage 24.05.2006 16:43

Это у тебя наверно в ссылках подключена библиотека "Microsoft ActiveX Data Objects". Отключи её, она скорее всего тебе не нужна, или пиши "Dim R As DAO.Recordset". Как включать/отключать библиотеки, см. выше

Alex Dark 25.05.2006 06:36

Цитата:

LightImage:
наверно в ссылках подключена библиотека "Microsoft ActiveX Data Objects".
Ну блин, в натуре шаман...

Кстати о птичках, я в кишках у него не лазил, ни чего не перенастраивал. Понадобился access - просто установил и все. Комп новый. Как же так получилось что у меня подключено всё наоборот? Хотя вопрос наверное не к тебе, а к дяде Билу.

А еще бы я хотел у него спросить, почему у меня помощь только в accesse (пока только) выдается кракозяблами вместо русских букв (там где она есть, все таки есть русская помощь)

LightImage 25.05.2006 08:24

Цитата:

Alex Dark:
выдается кракозяблами вместо русских букв
По этому поводу попробуй в ключе реестра "HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage\1252" поставь "c_1251.nls", да и заодно в "HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage\1250" то же самое напиши. После этих изменений возможно надо будет перезагрузиться.

UriF 13.06.2006 21:19

не Recordset, а DAO.Recordset, т.к. ADO также имеет Recordset object (не помню то ли OLEDB.Recordset, то ли ADO.Recordset) вот они и конфликтуют. Думаю, что в Office 2002 по умолчанию в references стоит ADO, а не DAO

по поводу того, что отключать или нет ADO, то это большой вопрос, т.к. Microsoft официально DAO не поддерживает, хотя внутри спрятал DAO for compatibility, так что будет еще тот букет... (часть кода на DAO, часть на ADO). Кроме того надо еще проверить конфликты, если нес-ко пользователей. Я переводил front-end Access97 (DAO) на front-end VB6(disconnected ADO)/back-end Access97. Так пока они не вырубили все старые системы, на новой не всегда происходил Insert/Update, хотя не было ни единой ошибки


Часовой пояс GMT +4, время: 14:20.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.