DAO - AbsolutePosition ошибка!!!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
~Виктор~
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 29.01.2007 (Пн) 15:53
Откуда: Албания

DAO - AbsolutePosition ошибка!!!

Сообщение ~Виктор~ » 29.01.2007 (Пн) 16:06

Пишу примерно так:

....
Public Транспорт As Recordset

PathProgram = App.Path

dbname = PathProgram & "\База.mdb"

tabname1 = "Транспорт"

Set crb = CreateWorkspace("", "admin", "", dbUseJet)
Set db = crb.OpenDatabase(dbname)
Set Транспорт = db.OpenRecordset(tabname1, dbOpenTable)

...

Транспорт.AbsolutePosition = 1


Вот на .AbsolutePosition и начинаются проблемы.
Программа сообщает об ошибке:
Операция не поддерживается для объектов этого типа

А мне пазарез нужно устоновливать текущую запись в БД в Абсолютную позицию.
Как с этим бороца?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 29.01.2007 (Пн) 16:37

Значит Транспорт не ест Recordset. Возможно проблема в отсутствии OPtion Explicit
Весь мир матрица, а мы в нем потоки байтов!

~Виктор~
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 29.01.2007 (Пн) 15:53
Откуда: Албания

Сообщение ~Виктор~ » 29.01.2007 (Пн) 16:48

Попадробней пожалуйсто, OPtion Explicit что это и как осуществить его присудствие?

Транспорт есть Recordset я это обьявил в самом начале проге так:

Public Транспорт As Recordset

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

Сообщение GSerg » 29.01.2007 (Пн) 21:51

~Виктор~, если русский язык для тебя не родной, укажи в профиле, откуда ты.
А рекордсет dbTable и не должен позиционироваться. Кури маны.
Справка, которую надо читать, писал(а):You can use the AbsolutePosition property to position the current record pointer to a specific record based on its ordinal position in a dynaset- or snapshot-type Recordset object.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

~Виктор~
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 29.01.2007 (Пн) 15:53
Откуда: Албания

Сообщение ~Виктор~ » 30.01.2007 (Вт) 8:25

GSerg

Справка, которую надо читать, писал(а):
Вы можете использовать собственность AbsolutePosition, чтобы спозиционировать текущий указатель записи на специфической записи базировавшейся на своей порядковой позиции в dynaset- или кадре-типе Recordset объекта

И что? здесь сказано что в Recordset она должна работать.
У меня как раз Recordset'ы и используются...
Эта справка которую надо читать, никакой ясности не внесла.

Может как то по другому нужно открывать базу?
Объясните пожалуста как.

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

Сообщение alibek » 30.01.2007 (Вт) 8:55

Ты открываешь рекордсет, как dbOpenTable. К нему AbsolutePosition неприменим (странно правда, почему). Открывай как dpOpenDynaset или dbOpenSnapshot. Если уж ты перевел, мог бы прочитать внимательнее.
Кроме того, советую указывать библиотеку при декларации объектных переменных, т.е. пиши Public Транспорт As DAO.Recordset.
Lasciate ogni speranza, voi ch'entrate.

~Виктор~
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 29.01.2007 (Пн) 15:53
Откуда: Албания

Сообщение ~Виктор~ » 30.01.2007 (Вт) 10:51

alibek

Спасибо за разъяснение, но после того как я загружаю базу

Set Транспорт = db.OpenRecordset(tabname1, dbOpenDynaset)

либо

Set Транспорт = db.OpenRecordset(tabname1, dbOpenSnapshot)

загружается только первая запись, т.е. в Транспорт получается только одна запись, а не вся база.

Как загрузить всю базу?

Я делаю так:

Set crb = CreateWorkspace("", "admin", "", dbUseJet)
Set db = crb.OpenDatabase(dbname)
Set Транспорт = db.OpenRecordset(tabname1, dbOpenSnapshot)

может что то в самом начале неверно у меня, типа не CreateWorkspace нужно использовать. Тогда что?

Помогите!

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

Сообщение alibek » 30.01.2007 (Вт) 11:56

Этого не может быть.
Как ты определяешь, что загружается только первая запись?
Lasciate ogni speranza, voi ch'entrate.

~Виктор~
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 29.01.2007 (Пн) 15:53
Откуда: Албания

Сообщение ~Виктор~ » 30.01.2007 (Вт) 13:02

alibek Определял я следующим оброзом

Транспорт.RecordCount

у меня он равнялсо 1

Но я понял свою ошибку: перед использованием .RecordCount необходимо устоновить указатель в конец базы т.е.

Транспорт.MoveLast

а уж затем юзать

Транспорт.RecordCount

После этого фсё палучилос. Агромное тебе программисткое спасибо!!!


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: AhrefsBot, Google-бот, The trick и гости: 3

    TopList