数据表动态加载和查询中参数值的丢失

时间:2018-02-08 15:51:58

标签: vba ms-access access-vba

我在MS Access 2016中有一个数据表表单,我通过VBA代码设置动态源代码如下

->add('citta', EntityType::class,array(
        'class'=>Comuni::class,
        'query_builder'=>function(ComuniRepository $comuniRepository){
            return $comuniRepository->createQueryBuilder('cr')
            //if you want a specific query
            //then you should use dql functions like the lines below
            ->where('cr.selezionaCAP = :someParameter')
            ->setParameter('someParameter', $someParameter)
            ->orderBy('cr.selezionaCAP', 'ASC');
        },
        'attr'=>array(
            'placeholder'=>'Inserisci qui la città...'
        ),
        'label'=>'Città:'
    ))

如您所见,数据是通过参数化查询Dim dbs As DAO.Database Dim qdf As DAO.QueryDef Set dbs = CurrentDb Set qdf = CurrentDb.QueryDefs("qry_GetSumEmployeesHoursByPeriodAndProject") qdf.Parameters("projectID") = IIf(ProjectID = -1, Null, ProjectID) qdf.Parameters("periodID") = IIf(PeriodID = -1, Null, PeriodID) Set Me.Recorset = qdf.OpenRecordset() qdf.Close dbs.Close Set qdf = Nothing Set dbs = Nothing 加载的,它需要2个参数:

qry_GetSumEmployeesHoursByPeriodAndProject

最初,当表单加载时,一切都很好,但每当我点击列标题进行排序或过滤时,表单都会从同一个查询PARAMETERS periodID Long = NULL, projectID Long = NULL; SELECT ... 加载,但不会应用参数{ {1}}和qry_GetSumEmployeesHoursByPeriodAndProject,因此它的值为periodID

如何防止这种情况发生?也许要抓住表格' "分类"甚至以某种方式将其应用于查询,但我无法找到该事件何时以及如何被触发。

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

您可以将参数放在表单上,​​而不是在代码中指定它们。

任何恰好打开的表单都可以,因为您可以将它们设置为隐藏文本框,这样您就可以确定参数值不仅可用于查询,还可用于数据库的任何其他部分同样。

您可以参考其他地方的“参数控制”:

Forms!YourFormName.YourTextboxName

更多信息: