Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка / 8 сообщений из 8, страница 1 из 1
29.08.2004, 19:27
    #32670268
Nwest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка
Подскажите что значите следующие ОБЪЕКТ MBD не найден ядром базы данных Microsoft Jet Проверьте существование файла и правильность имени и пути. база эта существует и создаётся программно а при обращении к ней выдаёт ошибку. Обращение производится через DAO
...
Рейтинг: 0 / 0
29.08.2004, 19:35
    #32670272
МаксимВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка
покажи код
...
Рейтинг: 0 / 0
29.08.2004, 19:59
    #32670286
Nwest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка
Создание БАЗЫ

Private Sub cmdCreate_Click()
'создаем объектные переменые для объектов
Dim dbWorkspace As Workspace
Dim dbDatabase As Database
Dim dbTableDef As TableDef
Dim dbName As Field
Dim dbNumber As Field
'создаем объекты DAO
Set dbWorkspace = DBEngine.Workspaces(0)
Set dbDatabase = dbWorkspace.CreateDatabase( _
"C:\BAZA.DBF", dbLangGeneral)
Set dbTableDef = dbDatabase.CreateTableDef("baza")
Set dbt = dbTableDef.CreateField("t", dbText)
Set dbp = dbTableDef.CreateField("p", dbText)
'определяем свойства полей
dbt.Size = 30
dbp.Size = 30
'добавляем каждый объект-поле к его объекту-таблице
dbTableDef.Fields.Append dbp
dbTableDef.Fields.Append dbt
'добавляем каждый объект-таблицу к его объекту - базе данных
dbDatabase.TableDefs.Append dbTableDef
'закрываем сформированную базу данных
dbDatabase.Close
End Sub

Option Explicit

'создаем объектные переменые для объектов
Dim dbWorkspace As Workspace
Dim dbDatabase As Database
Dim dbTable As Recordset
Dim dbName As Field
Dim dbNumber As Field

Private Sub cmdNext_Click()
'переходим к слудующей записи, только если текущая не пуста
If txtt.Text <> "" And txtp.Text <> "" Then
'сохраняем все изменения, внесенные в текущую запись
UpdateRecord
'переходим к следующей записи
dbTable.MoveNext
'формируем новую запись, если это конец таблицы
If dbTable.EOF Then NewRecord
'отображем данные из записи
DisplayFields
End If
txtt.SetFocus
End Sub

Private Sub cmdPrevious_Click()
'сохраняем все изменения, внесенные в текущую запись
UpdateRecord
'переходим к следующей записи
dbTable.MovePrevious
'выход за первую запись недопустим
If dbTable.BOF Then dbTable.MoveNext
'отображем данные из записи
DisplayFields
'сохраняем фокус на текстовом поле txtName
txtt.SetFocus
End Sub

Private Sub Form_Load()
'создаем объекты DAO
Set dbWorkspace = DBEngine.Workspaces(0)
'если нужно, измените путь к базе данных
Set dbDatabase = dbWorkspace.OpenDatabase( _
"C:\BAZA.DBF")
Set dbTable = dbDatabase.OpenRecordset("BAZA", dbOpenTable)
'если база данных совсем новая, используем особую обработку
If dbTable.BOF And dbTable.EOF Then NewRecord
'начинаем с первой записи
dbTable.MoveFirst
'отображаем ее данные
DisplayFields
End Sub

Private Sub NewRecord()
'добавляем новую запись
dbTable.AddNew
'втавляем пробел в каждое поле
dbTable!t = " "
dbTable!p = " "
'обновляем базу данных
dbTable.Update
'переходим к этой записи
dbTable.MoveLast
End Sub

Private Sub UpdateRecord()
'готовим таблицу к редактированию
dbTable.Edit
'копируем содержимое текстовых полей
'в соответсвующие поля записи
dbTable!Name = txtt.Text
dbTable!Number = txtp.Text
'обновляем базу данных
dbTable.Update
End Sub

Private Sub DisplayFields()
'отображем содержимое полей записи
'в текстовых полях на форме
txtt.Text = dbTable!t
txtp.Text = dbTable!p
End Sub
...
Рейтинг: 0 / 0
29.08.2004, 20:55
    #32670301
МаксимВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка
В строке:
Код: plaintext
Set dbDatabase = dbWorkspace.OpenDatabase("C:\BAZA.DBF")
Должно быть имя базы данных или имя источника данных ODBC, а не имя таблицы. Т.е. если бы ты работал с БД Access, то две строки выглядели бы примерно так:
Код: plaintext
1.
    Set dbDatabase = dbWorkspace.OpenDatabase("c:\DB1.MDB")
    Set dbTable = dbDatabase.OpenRecordset("Table1", dbOpenTable)
У тебя я смотрю dbf-файлы. Если это база данных VFP, то наверное код будет так:
Код: plaintext
1.
    Set dbDatabase = dbWorkspace.OpenDatabase("c:\DB1.DBС")
    Set dbTable = dbDatabase.OpenRecordset("Table1", dbOpenTable)
...
Рейтинг: 0 / 0
29.08.2004, 21:02
    #32670303
МаксимВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка
Пример из MSDN как открывать БД с помощью DAO 3.51:

OpenDatabase Method Example

This example uses the OpenDatabase method to open one Microsoft Jet database and two Microsoft Jet-connected ODBC databases.

Sub OpenDatabaseX()

Dim wrkJet As Workspace
Dim dbsNorthwind As Database
Dim dbsPubs As Database
Dim dbsPubs2 As Database
Dim dbsLoop As Database
Dim prpLoop As Property

' Create Microsoft Jet Workspace object.
Set wrkJet = CreateWorkspace("", "admin", "", dbUseJet)

' Open Database object from saved Microsoft Jet database
' for exclusive use.
MsgBox "Opening Northwind..."
Set dbsNorthwind = wrkJet.OpenDatabase("Northwind.mdb", _
True)

' Open read-only Database object based on information in
' the connect string.
MsgBox "Opening pubs..."
Set dbsPubs = wrkJet.OpenDatabase("Publishers", _
dbDriverNoPrompt, True, _
"ODBC;DATABASE=pubs;UID=sa;PWD=;DSN=Publishers")

' Open read-only Database object by entering only the
' missing information in the ODBC Driver Manager dialog
' box.
MsgBox "Opening second copy of pubs..."
Set dbsPubs2 = wrkJet.OpenDatabase("Publishers", _
dbDriverCompleteRequired, True, _
"ODBC;DATABASE=pubs;DSN=Publishers;")

' Enumerate the Databases collection.
For Each dbsLoop In wrkJet.Databases
Debug.Print "Database properties for " & _
dbsLoop.Name & ":"

On Error Resume Next
' Enumerate the Properties collection of each Database
' object.
For Each prpLoop In dbsLoop.Properties
If prpLoop.Name = "Connection" Then
' Property actually returns a Connection object.
Debug.Print " Connection[.Name] = " & _
dbsLoop.Connection.Name
Else
Debug.Print " " & prpLoop.Name & " = " & _
prpLoop
End If
Next prpLoop
On Error GoTo 0

Next dbsLoop

dbsNorthwind.Close
dbsPubs.Close
dbsPubs2.Close
wrkJet.Close

End Sub
...
Рейтинг: 0 / 0
29.08.2004, 21:12
    #32670308
МаксимВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка
Попробуй так, должно работать
Код: plaintext
1.
2.
 ' вместо имени БД укажи путь к каталогу, где лежат DBF-файлы  
Set dbDatabase = dbWorkspace.OpenDatabase( "C:\", True, False, "FoxPro 2.5;")
Set dbTable = dbDatabase.OpenRecordset("BAZA", dbOpenTable)
...
Рейтинг: 0 / 0
29.08.2004, 22:22
    #32670341
МаксимВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка
Попробовал я на своем ящике свои предложения, с DAO 3.51 не работает.
Есть другой вариант с DAO 3.6. У себя проверил - работает.
1. Создай источник даннных ODBC:
имя - "BAZA";
драйвер - выбери dBase Driver или Visual FoxPro(не знаю какие у тебя таблицы);
укажи каталог, где лежат DBF файлы(если драйвер Visual FoxPro, то Datebase type установи Free Table directory)
2. Ну и в коде тогда будет так:
Код: plaintext
1.
    Set dbDatabase = dbWorkspace.OpenDatabase("", True, False, "ODBC;DSN=BAZA;")
    Set dbTable = dbDatabase.OpenRecordset("baza")
Я с DAO вообще не работаю. Только с ADO и тебе советую.
...
Рейтинг: 0 / 0
31.08.2004, 10:34
    #32672665
Nwest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка
Спасибо работает!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]