Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка при открытии Recordset'а ADO / 11 сообщений из 11, страница 1 из 1
22.12.2006, 12:34
    #34218511
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при открытии Recordset'а ADO
Привет всем.
Проблема в следующем, в программе при открытии recordset'а (ADO) выходит ошибка (Method 'Open' of object '_Recordset' failed), открывается запрос, хотя этот же запрос в самом MS Access открывается нормально
Чувствую что ошибка в запросе, но где именно не знаю, может это какие то примочки ADO?
Помогите кто чем может.
Запрос следующий (понимаю что он не слишком удобен для восприятия но мне нужен именно этот запрос)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        strSQL = "SELECT TblReferencesWorkers.ID AS ID, TblReferencesWorkers.Name1 AS Name1, TblReferencesWorkers.Name2 AS Name2, TblReferencesWorkers.Name3 AS Name3, TblReferencesWorkers.BirthDate AS BirthDate, TblReferencesWorkers.Address AS Address," & vbCrLf & _
                "TblReferencesWorkers.PassportSeries AS PassportSeries, TblReferencesWorkers.PassportNumber AS PassportNumber, TblReferencesWorkers.PassportIssuedBy AS PassportIssuedBy, TblReferencesWorkers.PassportDate AS PassportDate," & vbCrLf & _
                "TblReferencesPost.Post AS Post, TblReferencesSections.Section AS [Section], TblReferencesWorkers.TakeOnDate AS TakeOnDate, TblReferencesWorkers.DischargeDate AS DischargeDate," & vbCrLf & _
                "TblReferencesWorkers.LongServiceValues AS LongServiceValues, TblReferencesLongService.LongService AS LongService, TblReferencesRank.Rank AS Rank, TblReferencesUp.Post AS Up, TblReferencesWorkerType.WorkerType AS WorkerType, TblReferencesWorkers.AlimonyPercent AS AlimonyPercent," & vbCrLf & _
                "TblReferencesWorkers.MonthlySalary AS MonthlySalary, TblUsers.Status AS Status, TblUsers.UserLogin AS UserLogin" & vbCrLf & _
                "FROM TblUsers INNER JOIN (TblUserSessions INNER JOIN (TblReferencesWorkerType INNER JOIN (TblReferencesUp INNER JOIN (TblReferencesSections INNER JOIN (TblReferencesRank INNER JOIN (TblReferencesPost INNER JOIN (TblReferencesLongService INNER JOIN TblReferencesWorkers ON TblReferencesLongService.ID = TblReferencesWorkers.LongServiceID) ON TblReferencesPost.ID = TblReferencesWorkers.PostID) ON TblReferencesRank.ID = TblReferencesWorkers.RankID) ON TblReferencesSections.ID = TblReferencesWorkers.SectionID) ON TblReferencesUp.ID = TblReferencesWorkers.UpID) ON TblReferencesWorkerType.ID = TblReferencesWorkers.WorkerTypeID) ON TblUserSessions.ID = TblReferencesWorkers.LastAccessSessionID) ON TblUsers.ID = TblUserSessions.UserID" & vbCrLf & _
                "WHERE (TblReferencesSections.ID = " & lngCurrentSectionID & ")" & vbCrLf & _
                "ORDER BY TblReferencesWorkers.Name1, TblReferencesWorkers.Name2"
        If rstSearchWorkers.State <>  0  Then rstSearchWorkers.Close
        rstSearchWorkers.Open strSQL, objADOSystemCnn, adOpenKeyset, adLockReadOnly
Пробовал запросы попроще, например
Код: plaintext
SELECT * FROM TblReferencesWorkers
Нормально работает, при вышеуказанном запросе не работает
...
Рейтинг: 0 / 0
22.12.2006, 12:45
    #34218558
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при открытии Recordset'а ADO
Чтобы не возникало всяких невнятных ошибок, такие запросы лучше хранить в самом аксессе.
...
Рейтинг: 0 / 0
22.12.2006, 13:07
    #34218657
Dima Dihtyar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при открытии Recordset'а ADO
Совет, данный выше - дельный. Так и делаю. Сохрани в БД энтот запрос и попробуй его "Select * From [твой запрос];" Чую я, что не пойдет. Если пойдет, то все что надо. У меня были подобные проблемы.. причем на грани мистики. Акцесс2000 нормально выполнял запрос, а ХР загибался. Еще один момент.. попробуй убрать "Order by" и воспользоваться Recordset.sort ...
Успехов.
...
Рейтинг: 0 / 0
22.12.2006, 13:13
    #34218686
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при открытии Recordset'а ADO
UserLogin ПРОБЕЛ " & vbCrLf & _
...
TblUserSessions.UserID ПРОБЕЛ " & vbCrLf & _
"WHERE (TblReferencesSections.ID = " & lngCurrentSectionID & ") ПРОБЕЛ " & vbCrLf & _
...
Рейтинг: 0 / 0
22.12.2006, 13:14
    #34218692
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при открытии Recordset'а ADO
А если кто-то оттуда удалит?
Прочитал что это обычно из-за того что в запросе используется зарезервированное слово, и говорится что нужно обвести скобками это слово, и всё будем ок.
http://support.microsoft.com/kb/238243
я попробовал все поля обвести этими скобками не получилось все равно такая же ошибка
...
Рейтинг: 0 / 0
22.12.2006, 13:40
    #34218781
Dima Dihtyar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при открытии Recordset'а ADO
Сделай как говорит Konst_One
...
Рейтинг: 0 / 0
22.12.2006, 14:02
    #34218852
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при открытии Recordset'а ADO
просто мистика какая-то, после того как поставил фигурные скобки на поля, попробовал поставить скобки и на сами наименования таблиц, все нормально заработало, чтобы определить из-за какого названия таблицы ошибка выходит, удалил скобки из имени каждой таблицы поочередно и запускал прогу и так до конца, т.е. пришел к первому состоянию без никаких скобок кроме Section, и теперь все нормально работает, ниичего не понял
без пробелов, где посоветовал Konst One, хм... да...
ладно посмотрю что дальше будет.
Но всё равно спасибо всем принимавшим участие!
...
Рейтинг: 0 / 0
22.12.2006, 14:16
    #34218906
Dima Dihtyar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при открытии Recordset'а ADO
Я писал выше про мистику Акцосса 2000 и ХР.. я тогда неделю убил на энту детективную историю, но в отличии от тебя, так причину и не нашел.. может попробовать как ты? хехе..
...
Рейтинг: 0 / 0
25.12.2006, 06:28
    #34221613
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при открытии Recordset'а ADO
пробуй всё может быть ;)
...
Рейтинг: 0 / 0
25.12.2006, 09:07
    #34221722
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при открытии Recordset'а ADO
orunbekпросто мистика какая-то, после того как поставил фигурные скобки на поля, попробовал поставить скобки и на сами наименования таблиц, все нормально заработало, чтобы определить из-за какого названия таблицы ошибка выходит, удалил скобки из имени каждой таблицы поочередно и запускал прогу и так до конца, т.е. пришел к первому состоянию без никаких скобок кроме Section, и теперь все нормально работает, ниичего не понял
без пробелов, где посоветовал Konst One, хм... да...
ладно посмотрю что дальше будет.
Но всё равно спасибо всем принимавшим участие!

зарезервированные слова [Section] и [ID]
...
Рейтинг: 0 / 0
25.12.2006, 10:45
    #34221880
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при открытии Recordset'а ADO
Насчет Section понятно, а ID у меня без фигурных скобок стоят, и запрос работает
Вот конечный вариант
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
        strSQL = "SELECT TblReferencesWorkers.ID AS ID, TblReferencesWorkers.Name1 AS Name1, TblReferencesWorkers.Name2 AS Name2, TblReferencesWorkers.Name3 AS Name3, TblReferencesWorkers.BirthDate AS BirthDate, TblReferencesWorkers.Address AS Address," & vbCrLf & _
                "TblReferencesWorkers.PassportSeries AS PassportSeries, TblReferencesWorkers.PassportNumber AS PassportNumber, TblReferencesWorkers.PassportIssuedBy AS PassportIssuedBy, TblReferencesWorkers.PassportDate AS PassportDate," & vbCrLf & _
                "TblReferencesPost.Post AS Post, TblReferencesSections.[Section] AS [Section], TblReferencesWorkers.TakeOnDate AS TakeOnDate, TblReferencesWorkers.DischargeDate AS DischargeDate," & vbCrLf & _
                "TblReferencesWorkers.LongServiceValues AS LongServiceValues, TblReferencesLongService.LongService AS LongService, TblReferencesRank.Rank AS Rank, TblReferencesUp.Post AS Up, TblReferencesWorkerType.WorkerType AS WorkerType, TblReferencesWorkers.AlimonyPercent AS AlimonyPercent," & vbCrLf & _
                "TblReferencesWorkers.MonthlySalary AS MonthlySalary, TblUsers.Status AS Status, TblUsers.UserLogin AS UserLogin" & vbCrLf & _
                "FROM TblUsers INNER JOIN (TblUserSessions INNER JOIN (TblReferencesWorkerType INNER JOIN (TblReferencesUp INNER JOIN (TblReferencesSections INNER JOIN (TblReferencesRank INNER JOIN (TblReferencesPost INNER JOIN (TblReferencesLongService INNER JOIN TblReferencesWorkers ON TblReferencesLongService.ID = TblReferencesWorkers.LongServiceID) ON TblReferencesPost.ID = TblReferencesWorkers.PostID) ON TblReferencesRank.ID = TblReferencesWorkers.RankID) ON TblReferencesSections.ID = TblReferencesWorkers.SectionID) ON TblReferencesUp.ID = TblReferencesWorkers.UpID) ON TblReferencesWorkerType.ID = TblReferencesWorkers.WorkerTypeID) ON TblUserSessions.ID = TblReferencesWorkers.LastAccessSessionID) ON TblUsers.ID = TblUserSessions.UserID" & vbCrLf & _
                "WHERE (TblReferencesSections.ID = " & lngCurrentSectionID & ")" & vbCrLf & _
                "ORDER BY TblReferencesWorkers.Name1, TblReferencesWorkers.Name2;"
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка при открытии Recordset'а ADO / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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