Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 试图通过删除DLookUp-Access 2007来提高性能_Ms Access_Ms Access 2007 - Fatal编程技术网

Ms access 试图通过删除DLookUp-Access 2007来提高性能

Ms access 试图通过删除DLookUp-Access 2007来提高性能,ms-access,ms-access-2007,Ms Access,Ms Access 2007,有没有人能给我一些建议,告诉我这里应该使用什么样的方法 -编辑 我有一个表单中与用户“风险地址”相关的字段,我有一个复选框,用于更新这些字段中的值,如果选中该复选框,则会将“联系人”详细信息从表tblInsPersDet加载到这些字段中。 如果未选中该复选框,用户可以输入新的详细信息 我在选中复选框时运行下面的子例程。为了得到字段值,我正在使用Dlookup,但我认为这是低效的?因为它每次都查询数据库/表 Public Sub sameAsContact(frm As Form) frm.ri

有没有人能给我一些建议,告诉我这里应该使用什么样的方法

-编辑

我有一个表单中与用户“风险地址”相关的字段,我有一个复选框,用于更新这些字段中的值,如果选中该复选框,则会将“联系人”详细信息从表tblInsPersDet加载到这些字段中。 如果未选中该复选框,用户可以输入新的详细信息

我在选中复选框时运行下面的子例程。为了得到字段值,我正在使用Dlookup,但我认为这是低效的?因为它每次都查询数据库/表

Public Sub sameAsContact(frm As Form)

frm.riskAddress1 = DLookup("[add1]", "tblInsPersDet", "[ID] =" & frm.insuredId)
frm.riskAddress2 = DLookup("[add2]", "tblInsPersDet", "[ID] =" & frm.insuredId)
frm.riskAddress3 = DLookup("[add3]", "tblInsPersDet", "[ID] =" & frm.insuredId)
frm.riskAddress4 = DLookup("[add4]", "tblInsPersDet", "[ID] =" & frm.insuredId)
frm.riskAddress5 = DLookup("[add5]", "tblInsPersDet", "[ID] =" & frm.insuredId)
frm.cmbRiskCountry = DLookup("[country]", "tblInsPersDet", "[ID] =" & frm.insuredId)
frm.riskDstToProp = DLookup("[distToProp]", "tblInsPersDet", "[ID] =" & frm.insuredId)
frm.riskInsCompany = DLookup("[insCompany]", "tblInsPersDet", "[ID] =" & frm.insuredId)
frm.riskPolNo = DLookup("[polNo]", "tblInsPersDet", "[ID] =" & frm.insuredId)
frm.riskBldSi = DLookup("[bldSi]", "tblInsPersDet", "[ID] =" & frm.insuredId)
frm.riskContSi = DLookup("[contSi]", "tblInsPersDet", "[ID] =" & frm.insuredId)
frm.riskExcess = DLookup("[excess]", "tblInsPersDet", "[ID] =" & frm.insuredId)
frm.riskOgLinkMort = DLookup("[linkMort]", "tblInsPersDet", "[ID] =" & frm.insuredId)
frm.riskOgAddOn = DLookup("[addOn]", "tblInsPersDet", "[ID] =" & frm.insuredId)

End Sub
有没有办法一次查询数据库?谁能给我一个指针,告诉我从所需记录中获取数据的更合适的方法

提前谢谢你的帮助 干杯
Noel

您应该使用一个子表单,该表单将InsureId作为链接主字段,将ID作为链接子字段

重新编辑注释

我仍然相信您可以使用子窗体。如果勾选该复选框,请选择子窗体的相关记录:

Me.MySubformControlName.Form.RecordSource="Select * From tblInsPersDet Where ID=" _
 & Me.txtinsuredId 
或者将一个值填充到一个隐藏的或可见的字段中,称为txtsuredd

如果未选中该复选框,则可以移动到子窗体中的新记录

重新编辑注2

如果必须使用类似于DlookUp的内容,请使用记录集:

 Set rs=CurrentDB.OpenRecordset("Select * From tblInsPersDet Where ID=" _
 & Me.txtinsuredId)

 For each fld in rs.Fields
    frm("txt" & fld.name)=fld
 Next

或者差不多。

出于好奇,你为什么把所有的问题都放到社区维基上?你不支持吗?!这不是让很多人编辑问题吗?这不是通常的事情,这意味着你不会从一个好问题的投票中获益,但这取决于你。如果结果是一个更好的问题,可能有更好的答案,那就值得权衡。尽管如此,还是为这个建议干杯。顺便说一句,声誉>=2000的任何人都可以编辑其他人的帖子,无论该帖子是否是社区维基。嗨,Remou,我编辑了我的问题,因为我不相信我完全清楚复选框实现了什么。我认为我不能在这种情况下使用子表单?我仍然认为子表单是您需要的解决方案。我现在了解了该解决方案的工作原理。时间限制可能会使它难以实现,就我看来,我需要按照目前的组织方式重新构建数据库。但我肯定看到了这将是如何有效的。在这种情况下,记录集解决方案对我来说可能更有效,我们将研究这一点,因为它看起来将继续下去。为它的价值干杯,您似乎真的在与Access中的所有自然方法进行斗争,但也可能是因为您的表设计完全错误——信息不足,所以您在这条船上。