Couldnt find installable ISAM \ Unrecognized database format

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

Couldnt find installable ISAM \ Unrecognized database format

Сообщение Наглец » 05.02.2009 (Чт) 13:52

Необходимо написать программу работающую с уже существующей базой данных.
При открытии базы через обьект Data происходит ошибка "Couldn't find installable ISAM"
Открываю базу следующим образом:

Private Sub Form_Load()
Dim DBLocation as string
DBLocation = App.Path & "\HISTORY.DBF"
Data1.DatabaseName = DBLocation
End Sub

Изпробовал многие способы решения этой проблемы предлогаемые в интернете и на вашем сайте, а именно:
1 - Проверил совпадает ли версия Визарда с версией файла msvbvm60.dll (Совпадает, непомогло)
2 - Установил Jet 4.0 SP8 (Непомогло)
3 - Скачал MDAC 2.8 RTM (При установке пишет: "Несовместим с данной версией Windows. Все его средства в настоящее время являются частью операционной системы Windows.")

Уже на протяжении двух дней мучаю интернет в поисках решения проблемы. А время то идет, заказ на программу висит и медленными но уверенными шагами переходит в разряд "Просроченых"
Последний раз редактировалось Наглец 06.02.2009 (Пт) 14:04, всего редактировалось 1 раз.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Re: Couldn't find installable ISAM

Сообщение RayShade » 05.02.2009 (Чт) 14:42

Что за база, что за Виндовс?
Как вариант - неверная строка connStr, нет прав на открыть файл базы, ошибка в имени файла базы. Нет драйвера нужной версии. Невозможно определить, какой версии драйвер нужен, и в connStr это не написано.
Вариантов короче масса.
I don't understand. Sorry.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Couldn't find installable ISAM

Сообщение Денис » 05.02.2009 (Чт) 15:01

Надо знать, с помощью какой СУБД был создан DBF. Скачать и установить соответствующий драйвер. Для проверки открыть файл какой-нибудь прогой типа xBaseView
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Наглец
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 05.02.2009 (Чт) 12:30

Re: Couldn't find installable ISAM

Сообщение Наглец » 05.02.2009 (Чт) 15:06

База неизвестно какая, предположительно FoxPro как определить незнаю. Windows ХР SP3.
Права на открытие файла базы должны быть т.к. Visual Basic запускаю с учетки администратора.
Ошибки в имени и пути к файлу базы данных нету.
Драйвера перепробовал все что есть в Visual Basic на всех выдает такую ошибку кроме Access дров, на них пишет: "Unrecognized database format" Самим же Access'ом эта база открывается нормально.

Если это поможет могу скинуть файл базы данных.
Что это за строка connStr и как узнать верная ли она?

Наглец
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 05.02.2009 (Чт) 12:30

Re: Couldn't find installable ISAM

Сообщение Наглец » 05.02.2009 (Чт) 15:18

Всю информацию что нашел в Database Viewer Editor об этой базе данных, это то что она FoxPro. Как узнать версию?
Database Viewer Editor насколько я понял при работе с этой базой использует MS.Jet.OLEDB.4.0.
Т.к. внизу есть строчка {xBase & MS.Jet.OLEDB.4.0 for dBase} FoxPro Lenght:243 Fields:12 Code Page:0(1251) Collate:Machine 1-67 N(10,0)

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Couldn't find installable ISAM

Сообщение Денис » 05.02.2009 (Чт) 15:29

ну все. теперь осталось разобраться с наличием драйвера foxpro на машине и с корректной строкой подключения.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Наглец
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 05.02.2009 (Чт) 12:30

Re: Couldn't find installable ISAM

Сообщение Наглец » 05.02.2009 (Чт) 15:42

Я думаю что драйвера для FoxPro на машине есть ибо ставил Jet 4.0 SP8. А вот что вы имеете в виду говоря о "строке подключения" я не совсем понимаю.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Re: Couldn't find installable ISAM

Сообщение RayShade » 05.02.2009 (Чт) 15:53

Connection String. Это то что для сокращения называю connStr :) Строка, описывающая параметры подключения к базе.
I don't understand. Sorry.

Наглец
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 05.02.2009 (Чт) 12:30

Re: Couldn't find installable ISAM

Сообщение Наглец » 05.02.2009 (Чт) 16:45

Как она выглядит и где её найти? :roll:

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: Couldn't find installable ISAM

Сообщение dr.MIG » 05.02.2009 (Чт) 18:26

Salus populi suprema lex

Наглец
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 05.02.2009 (Чт) 12:30

Re: Couldn't find installable ISAM

Сообщение Наглец » 06.02.2009 (Пт) 10:01

Нипанятна :roll: Ткните носом пажалст где поподробней о ней написано, гуглил - ненашел...
[Viper] :: Для начала устное предупреждение: на этом форуме приветствуется грамотность, и не приветствуется олбанский!

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: Couldn't find installable ISAM

Сообщение dr.MIG » 06.02.2009 (Пт) 10:25

:roll:
Если поискать по форуму даже одно слово "Connection", то найдётся много примеров, из которых станет понятно что такое ConnectionString и как использовать строку взятую отсюда.
Salus populi suprema lex

Наглец
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 05.02.2009 (Чт) 12:30

Re: Couldn't find installable ISAM

Сообщение Наглец » 06.02.2009 (Пт) 12:19

У меня получилось такое подключение:

Private cn As adodb.Connection
Private rs As adodb.Recordset

Private Sub Form_Activate()
Dim cmd As String
sql As String
Dim cn As adodb.Connection
Dim rs As adodb.Recordset

cmd = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\VB98;Extended Properties=dBASE IV;User ID=Admin;Password=;"
Set cn = New adodb.Connection
cn.ConnectionString = cmd
cn.Open
End Sub

При старте опять же выдает ошибку "Couldn't find installable ISAM" затем ошибку на строчке "sql As String" - "Compile error: Statement invalid outside Type block"

Способ подключения слизал отсюда - http://www.intuit.ru/department/pl/vb/4/5.html

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: Couldn't find installable ISAM

Сообщение dr.MIG » 06.02.2009 (Пт) 12:53

Dim sql As String

У меня при таком способе подключения подобная ошибка не возникает:
dbf.jpg
Вот что получается
dbf.jpg (35 Кб) Просмотров: 2267


Однако, почему-то отображается только одна запись. При использовании строки подключения Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:\folder; подобного не наблюдается, отображаются все записи.
Salus populi suprema lex

Наглец
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 05.02.2009 (Чт) 12:30

Re: Couldn't find installable ISAM

Сообщение Наглец » 06.02.2009 (Пт) 13:52

Подправил код, теперь он стал таким:

Dim dbTest As Database
Private cn As ADODB.Connection
Private rs As ADODB.Recordset

Private Sub Form_Activate()
Dim cmd As String
Dim sql As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

cmd = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\VB98;Extended Properties=dBASE IV;User ID=Admin;Password=;"
Set cn = New ADODB.Connection
cn.ConnectionString = cmd
cn.Open
End Sub

Private Sub Form_Load()
Dim sDBLocation As String
sDBLocation = App.Path & "\HISTORY.DBF"
Set dbTest = OpenDatabase(sDBLocation)
End Sub

При старте выдает ошибку "Run-time error 3343: Unrecognized database format"
Ясно что ругается на "Непризнанный формат базы данных" но почему..?
Установил SP 6 - непомогло... Мне кажется я код подключения неправильно написал, помогите с кодом пожалуйста, для меня это темный лес...

Наглец
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 05.02.2009 (Чт) 12:30

Re: Couldnt find installable ISAM \ Unrecognized database format

Сообщение Наглец » 06.02.2009 (Пт) 16:58

Начнем попорядочку...

Private cn As ADODB.Connection
'cn - насколько я понял, переменная отвечающая за метод подключения к базе данных
Private rs As ADODB.Recordset
'rs - переменная которая будет "окном" в нашу базу. Т.е. в неё перенесется вся наша база, так?

Private Sub Form_Activate()
Dim cmd As String
'совершенно непонятно зачем нужна переменная cmd, она как бы служит посредником между методом подключения к 'базе и переменной cn, отсюда вопрос - А зачем?
Dim cn As adodb.Connection
Dim rs As adodb.Recordset

cmd = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\VB98;Extended Properties=dBASE IV;User ID=Admin;Password=;"
'Присваиваем переменной cmd метод подключения к базе "Provider=Microsoft.Jet.OLEDB.4.0" - драйвер который пудет 'использоваться при подключении к базе, "Data Source=D:\VB98" - несовсем понятна эта строчка, в этой директории 'должен лежать драйвер к этой базе или сама база? "Extended Properties=dBASE IV" - совершенно неясно зачем это.
'"User ID=Admin;Password=;" - имя и пароль для доступа к базе, а зачем? Вроде никто незапароливал базу.
Set cn = New adodb.Connection
'эта строчка неочень понятна
cn.ConnectionString = cmd
'присваеваем метод подключения к переменной cn из переменной cmd
cn.Open
'подключаемся к басе
End Sub

При использовании вышенаписанного кода, программа тихо спокойно запускается, ни на что не ругается... Это значит что она успешно получила доступ к базе..? У cn.State значение равно 1.

dr.MIG Все таки лучше использовать эту строчку подключения - cmd = "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:\folder;" Тогда зачем нужна эта директория - "Dbq=c:\folder;" и что в ней должно лежать?

Напишите пожалуйста как забить базу в переменную rs и как в дальнейшем её использовать. Желательно с пояснениями, чтобы не тупо вставить код в программу, а понять как это все работает :roll:

Наглец
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 05.02.2009 (Чт) 12:30

Re: Couldnt find installable ISAM \ Unrecognized database format

Сообщение Наглец » 06.02.2009 (Пт) 17:56

Ааа! Все работает, сам до всего догадался :D
http://www.sharemania.ru/0265837

Огромное спасибо: RayShade, Денис, dr.MIG


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 40

    TopList