Итак, будучи новичком в доступе и только используя VBA в Excel, вплоть до того, как несколько месяцев назад у меня было довольно много команд, я абсолютно не знаю, как использовать / правильно писать синтаксис.
Проблема: Iиметь сохраненный запрос (qry_ExcelExport), который на данный момент просто:
SELECT '*' FROM tbl_Contacts
Что я хочу сделать, это использовать VBA, чтобы добавить / изменить предложение WHERE на основе элемента управления пользовательской формы.
Что-то вроде:
If me.txt_Flag = "DP Delegate" then 'WHERE [DP-DEL] = True' (or = -1)
Elseif me.txt_Flag = "DP Sponsor" then 'WHERE [DP-SPON] = True' (or = -1)
и так далее.(Я понимаю, что приведенный выше синтаксис неверен на 100%, это именно то, чего я надеюсь достичь)
Используя мощь интернета, мне удалось найти этот код:
‘To change the Where clause in a saved query
Dim qdf as QueryDef
Dim db as Database
Set db = CurrentDB
Set qdf = db.QueryDefs("YourQueryName")
qdf.SQL = ReplaceWhereClause(qdf.SQL, strYourNewWhereClause)
set qdf = Nothing
set db = Nothing
Public Function ReplaceWhereClause(strSQL As Variant, strNewWHERE As Variant)
On Error GoTo Error_Handler
‘This subroutine accepts a valid SQL string and Where clause, and
‘returns the same SQL statement with the original Where clause (if any)
‘replaced by the passed in Where clause.
‘
‘INPUT:
‘ strSQL valid SQL string to change
‘OUTPUT:
‘ strNewWHERE New WHERE clause to insert into SQL statement
‘
Dim strSELECT As String, strWhere As String
Dim strOrderBy As String, strGROUPBY As String, strHAVING As String
Call ParseSQL(strSQL, strSELECT, strWhere, strOrderBy, _
strGROUPBY, strHAVING)
ReplaceWhereClause = strSELECT &""& strNewWHERE &""_
& strGROUPBY &""& strHAVING &""& strOrderBy
Exit_Procedure:
Exit Function
Error_Handler:
MsgBox (Err.Number & ": " & Err.Description)
Resume Exit_Procedure
End Function
И эта первая строка ... эта самая первая строка «Чтобы изменить предложение Where в сохраненном запросе» указывает, что это ТОЧНО то, что мне нужно.
Но здесь нет пошагового или пошагового руководства.руководство для начинающих, чтобы понять этот код, синтаксис или, что более важно, как связать его с элементом управления формой, и это не тот, который я когда-либо использовал или слышал раньше.
РЕДАКТИРОВАТЬ: сохраненный запрос qry_ExcelExportиспользуется в функции экспорта данных
Call exportTable("qry_ExportExcel")
Куда я звоню
Public Sub exportTable(tName As String)
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, tName, saveFileAs, True
End Sub
Мне нужна возможность изменить местоположение, чтобы при экспорте оно включало это условие, как вв тот момент, когда нет предложения WHERE, поэтому экспорт просто берет все данные.