powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка
8 сообщений из 8, страница 1 из 1
Ошибка
    #32670268
Nwest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите что значите следующие ОБЪЕКТ MBD не найден ядром базы данных Microsoft Jet Проверьте существование файла и правильность имени и пути. база эта существует и создаётся программно а при обращении к ней выдаёт ошибку. Обращение производится через DAO
...
Рейтинг: 0 / 0
Ошибка
    #32670272
МаксимВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
покажи код
...
Рейтинг: 0 / 0
Ошибка
    #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
Ошибка
    #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
Ошибка
    #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
Ошибка
    #32670308
МаксимВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй так, должно работать
Код: plaintext
1.
2.
 ' вместо имени БД укажи путь к каталогу, где лежат DBF-файлы  
Set dbDatabase = dbWorkspace.OpenDatabase( "C:\", True, False, "FoxPro 2.5;")
Set dbTable = dbDatabase.OpenRecordset("BAZA", dbOpenTable)
...
Рейтинг: 0 / 0
Ошибка
    #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
Ошибка
    #32672665
Nwest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо работает!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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