Определение, использует ли параметр “параметрические усилители” с помощью отражения в C#?

Параметр, подобный [Forms]![SurveyRegister_frm]![SurveyID], автоматически не оценивается автоматически, если вы открываете набор записей в VBA.

Используйте эту функцию:

Public Sub Eval_Params(QD As DAO.QueryDef)

On Error GoTo Eval_Params_Err

    Dim par As DAO.Parameter

    For Each par In QD.Parameters
        ' This is the key line: Eval "evaluates" the form field and gets the value
        par.Value = Eval(par.Name)
    Next par

Eval_Params_Exit:
    On Error Resume Next
    Exit Sub

Eval_Params_Err:
    MsgBox Err.Description, vbExclamation, "Runtime-Error " & Err.Number & " in Eval_Params"
    Resume Eval_Params_Exit

End Sub

с объектом QueryDef, подобным этому :

Dim QD As QueryDef
Dim RS As Recordset

Set QD = DB.QueryDefs("UnitRec_Qry")
Call EVal_Params(QD)
Set RS = QD.OpenRecordset(dbOpenDynaset)

Кроме того, вы можете запустить его с помощью SQL в коде VBA, перемещая параметр за пределами строки SQL:

Set rs = CurrentDb.OpenRecordset("SELECT UnitRecommend_tbl.URecID, UnitRecommend_tbl.Spara," _
& " UnitRecommend_tbl.Rec, UnitRecommend_tbl.SvyID" _
& " FROM UnitRecommend_tbl" _
& " WHERE ((UnitRecommend_tbl.SvyID) = " & [Forms]![SurveyRegister_frm]![SurveyID] & ")" & _
& " ORDER BY UnitRecommend_tbl.Spara;", dbOpenDynaset)
24
задан Mehrdad Afshari 9 March 2009 в 19:41
поделиться

2 ответа

Проверьте на существование [ParamArrayAttribute] на нем.

параметр с params всегда будет последним параметром.

35
ответ дан Mehrdad Afshari 16 October 2019 в 08:10
поделиться

Проверьте ParameterInfo, если ParamArrayAttribute был применен к нему:

static bool IsParams(ParameterInfo param)
{
    return param.GetCustomAttributes(typeof (ParamArrayAttribute), false).Length > 0;
}
18
ответ дан CMS 16 October 2019 в 08:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: