Добрый день!
Прощу прощения за ещё один вопрос, но тут происходит что-то для меня совсем непонятное.
Пишу код для вставки данных в таблицу, служащую источником комбобокса.
Private Sub Список_NotInList(NewData As String, Response As Integer) Dim cnn As New ADODB.Connection Dim bytOtvet As Byte
Dim strSQL As String Set cnn = CurrentProject.Connection bytOtvet = MsgBox("Ввести новые данные?", vbYesNo + vbExclamation)
If bytOtvet = vbYes Then strSQL = "INSERT INTO Таблица.[Код ТТ] VALUES ('" & _ NewData & "')" Debug.Print strSQL cnn.Execute strSQL Response = acDataErrAdded ElseIf byrResponse = vbNo Then Response = acDataErrContinue Me![Код ТТ].Undo End If
End Sub
Пишет ошибку, что файл "...My Documents/Таблица.mdb" не найден. Т. е. Jet или что там, работающее с SQL, видит в названии таблицы имя файла, причём прописывание строки подключения ни отдельной строкой, ни в выражении SQL дела не меняют (!!!!!!!!!). Ситуация повторяется уже во второй форме (причём в разных базах). Может, не подключена какая-то библиотека? Но какая?
Ответов нигде найти не могу, извините, если повторяюсь.
Да, в других случаях SQL в коде работает нормально, да и c CurrentProject проблем не было. Спасибо.
1. Вообще CurrentProject.Connection без проверки не используют (по крайней мере это верно для adp проектов). Выход такой, надо проверить наличие данных в этой переменной, если там нет ничего, то создать новое соединение (открыть его). Можно сделать этот объект глобальным, т.е. при открытии формы открыть, а при закрытии закрыть 2. Анализ кода. Dim cnn As New ADODB.Connection Set cnn = CurrentProject.Connection New выделяет дополнительное место в памяти для класса, а нам нужна ссылка, память уже выделена в CurrentProject.Connection. Все не так просто, лучше создать новое соединение см. пункт 1
1. Вообще CurrentProject.Connection без проверки не используют (по крайней мере это верно для adp проектов). Выход такой, надо проверить наличие данных в этой переменной, если там нет ничего, то создать новое соединение (открыть его). Можно сделать этот объект глобальным, т.е. при открытии формы открыть, а при закрытии закрыть
2. Анализ кода. Dim cnn As New ADODB.Connection Set cnn = CurrentProject.Connection New выделяет дополнительное место в памяти для класса, а нам нужна ссылка, память уже выделена в CurrentProject.Connection. Все не так просто, лучше создать новое соединение см. пункт 1