Не определяется база данных

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

Не определяется база данных

Сообщение MikeGerg » 09.08.2007 (Чт) 12:20

Проблема следующего плана.
Программа писалась очень давно на VB4, VB5, VB6 под ОС Windows 2000. При попытке запустить её в VB6 под Windows XP возникает ошибка (последующее зацикливание) после следующего кода:

Private Sub Form_Load()
Dim rs1 As DAO.Recordset
Dim i As Integer, j As Integer
On Error Resume Next
Set db = Workspaces(0).OpenDatabase(App.Path & "NameDB.mdb")
Set RS = db.OpenRecordset("Staff", dbOpenDynaset)
Set rs1 = db.OpenRecordset("User rights")

If rs1.RecordCount Then
rs1.MoveLast
ReDim Rights(rs1.RecordCount, 14)
rs1.MoveFirst
Do Until rs1.EOF
i = i + 1
For j = 1 To 14
Rights(i, j) = Trim(rs1.Fields(j - 1).Value)
Next j
rs1.MoveNext
Loop
End If

Не определяется база данных. Т.е. после строки
Set db = Workspaces(0).OpenDatabase(App.Path & "NameDB.mdb")
значение db – “nothing”. Ну и соответственно все проблемы после.
На Windows 2000 всё проходит без проблем.

Вопрос: в чём фишка и как её устранить?
MITCHEL

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 09.08.2007 (Чт) 12:38

Set db = Workspaces(0).OpenDatabase(App.Path & "\NameDB.mdb")

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 09.08.2007 (Чт) 13:14

Да и On Error Resume Next не очень хорошо использовать при загрузке формы...

zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Сообщение zHackLeX » 09.08.2007 (Чт) 13:28

В общем случае

Код: Выделить всё

Set db = Workspaces(0).OpenDatabase(App.Path & iif(Right(App.path,1)="\","","\" & "NameDB.mdb") )


(ну это так, до кучи)
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)

shady
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 09.11.2005 (Ср) 11:03

Сообщение shady » 09.08.2007 (Чт) 15:15

MSDN писал(а):Returns or sets the current path
До папки -- без завершающего слеша.

MikeGerg
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 04.08.2007 (Сб) 11:56

Сообщение MikeGerg » 12.08.2007 (Вс) 8:58

Большое спасибо, только дело не в пути.
Путь прописан корректно и при запуске на платформе W2000 всё идёт без проблем!
Какая то проблема с XP.
В References помимо прочего подключены Microsoft DAO 2.5/3.0 Compatibility Library, Microsoft ActiveX Data Objects 2.0 Library и Microsoft ActiveX Data Objects Recordset 2.8 Library (именно в таком порядке). Где-то когда-то читал, что могут возникать конфликты при неявном объявлении объектов типа Recordset и Database. Но не помню где и что конкретно.
Очень нужна помощь или подсказка!
С уважением!
MITCHEL

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

Сообщение GSerg » 12.08.2007 (Вс) 18:37

при запуске на платформе W2000 всё идёт без проблем!

Видать потому, что на платформе W2000 программа установлена в корень диска?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

MikeGerg
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 04.08.2007 (Сб) 11:56

Сообщение MikeGerg » 13.08.2007 (Пн) 8:13

Во всех случаях проект запускается с USB Flash Drive.
MITCHEL

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 13.08.2007 (Пн) 8:49

MikeGerg, может быть на платформе W2000 установлены Jet и MDAC, а на другом компе нет? Установить не пробовал?

И насчет слеша тебе правильно все говорят: если программа установлена в корне диска, то App.Path будет со слешем в конце, в противном случае слеша не будет.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

MikeGerg
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 04.08.2007 (Сб) 11:56

Сообщение MikeGerg » 13.08.2007 (Пн) 9:07

Путь:
...OpenDatabase(App.Path & "\b\dbARM_SV.mdb")
Да и потом, при наличии ошбки не стартовала бы в 2000.
А на счёт Jet и MDAC если можно по подробнее?
MITCHEL

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 13.08.2007 (Пн) 9:15

MikeGerg писал(а):Путь:
...OpenDatabase(App.Path & "\b\dbARM_SV.mdb")
Да и потом, при наличии ошбки не стартовала бы в 2000.

И все-таки лучше приучить себя писать изначально правильно.
MikeGerg писал(а):А на счёт Jet и MDAC если можно по подробнее?

Можно:
http://bbs.vbstreets.ru/viewtopic.php?t=30412
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

MikeGerg
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 04.08.2007 (Сб) 11:56

Сообщение MikeGerg » 13.08.2007 (Пн) 12:06

Мои бдагодарности и признательность всем!
В ссылках заменил Microsoft DAO 2.5/3.0 Compatibility Library на Microsoft DAO 2.5/3.51 Compatibility Library и всё пошло.

Отдельная благодарность за Jet и MDAC!

С уважением!
MITCHEL


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

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

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

    TopList