2015-01-22 4 views
0

Я пытаюсь получить querydef, чтобы изменить его код SQL, создав строку SQL, а затем применив ее, используя значение поля из dbo_lookups. Таблица dbo_lookups содержит список всех строк SQL, то есть strSQLByDepartment и т. Д.Доступ к VBA Set QueryDef.SQL для строки из имени поля

Когда он добирается до строки qrydef.SQL = rst! DataOut1 Я получаю ошибку 3129 недопустимый SQL-код, это потому, что он пытается изменить querydefs sql-код, чтобы сказать strSQLByDepartment, а не фактический код SQL, который я уже объявил, есть ли в любом случае, я могу заставить его обновить код SQL, используя то, что у меня есть? помогите, если это имеет смысл?

Set db = CurrentDb 
Set qrydef = db.QueryDefs("Query1") 
Set qrydef2 = db.QueryDefs("Query2") 

strSQLByDepartment = "SELECT * " & _ 
"FROM Table1;" 
strSQLByDepartment2 = "SELECT * " & _ 
"FROM Table2;" 

strSQLByP = "SELECT * " & _ 
"FROM Table3;" 
strSQLByP2 = "SELECT * " & _ 
"FROM Table4;" 

Dim rst As DAO.Recordset 
strLookups = "SELECT dbo_Lookups.Type, dbo_Lookups.DataIn, dbo_Lookups.DataOut1, dbo_Lookups.DataOut2 " & _ 
"FROM dbo_Lookups " & _ 
"WHERE (((dbo_Lookups.Type) = 'JobValueTypes')) " & _ 
"ORDER BY dbo_Lookups.DataIn;" 

Set rst = CurrentDb.OpenRecordset(strLookups) 

Do Until rst.EOF = True 
    If Me.Report= rst!DataIn Then 
     qrydef.SQL = rst!DataOut1 
     qrydef2.SQL = rst!DataOut2 
    Else 
    End If 
    rst.MoveNext 
Loop 
+0

Может быть хорошая идеей, чтобы проверить, что отдается в 'первого! DataOut1' и' RST ! DataOut2' – PaulFrancis

ответ

0

Вы должны использовать Option Explicit и объявлять строковую переменные типа строки

см Create Passthough Query

Смежные вопросы