|
|
|
| Голову сломал. Очень долго пытался разобраться сам, но видимо во всем существует предел. Помогите разобраться.
Пытаюсь открыть таблицу в ДБ для чтения через DAO. Не открывает. Думал что-то в инструкции SQL напутал - купил книжку, прочитал. Вроде бы все правильно. Почему пишет ошибку "Объект ... не найден ядром БД... проверьте правильность имени и пути"?
Option Compare Database
Option Explicit
Public Function MadeString() As String
Dim rst As DAO.Recordset
Dim Str As String
Dim FullStr As String
Dim StrNum As Byte
Dim strSQL As String
strSQL = "SELECT ОтгрузкаПодробности.Продукция FROM ОтгрузкаПодробности WHERE Номер_накладной = [Forms]![Отгрузка]![Номер накладной];"
'сылка на текущую базу данных.
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenTable)
'переходим к первой записи.
FullStr = Empty
StrNum = 1
With rst
.MoveLast 'Заполнение набора записями
.MoveFirst 'Возврат в начало
Do Until .EOF
Str = ![Продукция]
FullStr = FullStr & StrNum & ") " & Str & "; "
StrNum = StrNum + 1
.MoveNext
Loop
.Close
End With
Set rst = Nothing
End Function
|
На выделенной строчке выдает ошибку "объект ... не найден..."
База не разделена. В базе таблица "ОтгрузкаПодробности" а в ней поле "Продукция" точно есть. Функцию запускаю из формы "Отгрузка" по нажатию кнопки.
Попытался прикрепить полностью базу на slil.ru - почему-то не получилось.Пробовал и сжимать и просто целую - никак.
Подскажите кто чем может, что делать с OpenRecordset, и если это "глюк" Acceess, как победить?
Заранее благодарен всем откликнувшимся.
С уважением Glebozzz. | |
|
| |
|
|
|
| попробуй так
если Номер_накладной числовое значение, то
strSQL = "SELECT ОтгрузкаПодробности.Продукция FROM ОтгрузкаПодробности WHERE Номер_накладной = " & [Forms]![Отгрузка]![Номер накладной]
|
иначе заключи значение в апострофы
strSQL = "SELECT ОтгрузкаПодробности.Продукция FROM ОтгрузкаПодробности WHERE Номер_накладной = '" & [Forms]![Отгрузка]![Номер накладной] & "'"
|
| |
|
| |
|
|
|
| Спасибо огромное все пошло.
А к чему вообще эти апострофы?
хотя, в общем не суть - главное - работает!!! | |
|
| |
|
|
|
| >>хотя, в общем не суть - главное - работает!!!
если честно, то после такой фразы, обычно, отпадает охота обяснять "программисту" что-либо еще.
| |
|
| |
|
|
|
| Ребята, не обижайтесь ради бога. Не всегда получается письменно изложить что думаешь, никого при этом не обидев.
Я так понимаю, здесь и все не от хорошей жизни вопросы задают. Только когда очень надо, а ума своего не хватает.
Если нет желания с придурками общаться - ну подскажите книжку умную по DAO или ADO. Книжки - они не обидчивые.
ГлазастыйМышь - вам - спасибо огромное. | |
|
| |
|
|
|
| в данном конкретном случае DAO или ADO не причем
речь идет о синтаксисе построения выражений и правилах их оформления.
еще более конкретно приведение типа данных | |
|
| |
|
|
|
| Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenTable)
В вашем случае dbOpenTable - аргумент неправильный. Это в случае, если открывается родная таблица (не прилинкованная) и указывается ее имя.
В остальных случаях dbOpenDynaset, или (если только прочитать данные, как в вашем примере, или набор записей заведомо необновляемый, например - с группировками) dbOpenSnapshot, или (если делать только .MoveNext) dbOpenForwardOnly.
DAO сам проверяет допустимый тип, но лучше сразу сделать правильно. | |
|
| |
|
|
|
| Ребята, спасибо. То, что dbOpenTable - неправильно я "допер" сам. Все действительно работает. Что характерно - нормально работает даже если второй аргумент в OpenRecordset просто опустить.
Всем спасибо огромное.
Тема закрыта. | |
|
| |