gpt4 book ai didi

ms-access - Access 2000 表单通过网络加载很慢

转载 作者:行者123 更新时间:2023-12-03 08:21:46 24 4
gpt4 key购买 nike

我有一个位于对等网络上的 Access 2000 数据库。 (所有计算机都通过以太网 100 连接到一个简单的 4 端口交换机)
数据库设计有后端和前端。
有 2 个用户通过网络连接到后端。当后端位于她的计算机上时,一位用户直接连接到后端。
所有计算机的规范都相当低,只有 500 兆或 1 兆的内存

我有一个表格,frmInvoice,它基于“tblInvoice”表,该表大约有 60,000 条记录。还有链接到“tblInvoice”的表“tblInvoiceProducts”。表“tblInvoiceProducts”中大约有 150,000 条记录。

当我在承载后端的计算机上打开表单“frmInvoice”时,表单打开得非常快。但是,如果我在另一台计算机上打开该表单,则打开速度会很慢。但是,一旦打开,记录导航就会很快。

我认为问题是当表单打开时,Access 打开整个表并且所有记录都可以 Access 。我在这个假设中正确吗?

我需要纠正这个问题并欢迎所有建议。

我将安装 D-Link DNS-323 2-Bay 网络存储机箱并将后端数据库存储在此,因为这将提高安全性/数据保护。

提前致谢

最佳答案

“我认为问题在于,当打开表单时,Access 会打开整个表并且所有记录都可以 Access 。我的这个假设是否正确?”

我敢打赌你是绝对正确的。

如果打开表单的属性表,选择“数据”选项卡,然后查看“记录源”的值,是否看到其中一个表的名称?

或者没有 WHERE 子句的查询,比如“SELECT * FROM tblInvoice;”?

如果您对其中任何一个问题的回答是肯定的,Access 将不得不通过网络从表格中提取每条记录。

所以,不要那样做 ! :-) 良好性能的关键是将表单的记录源限制为合理的行子集。

选择一些在您的情况下有意义的标准,也许是发票日期,然后构建一个将该标准合并到其 WHERE 子句中的查询。该标准基于索引字段 --- 如果您的表在该字段上还没有索引,请添加索引。您可以通过在查询设计器中创建一个新查询来进行试验……也许 SQL View 如下所示:

SELECT Invoice_ID, Customer_ID, invoice_date
FROM tblInvoice
WHERE invoice_date = Date();

这将仅检索 invoice_date 与今天的日期匹配的行。

(如果您已经加载了表单,将所有行下拉到本地缓存中,您将无法获得该查询速度的真实指示。最好在没有首先加载的情况下从新的 Access session 中测试查询表格。)

那么然后给用户一个方法来选择不同的invoice_date。例如,名为 txtSelectDate 的文本框控件。在该控件的 After Update 事件中,您可以编写一个更新的 SELECT 语句,将其应用为表单的记录源。
Private Sub txtSelectDate_AfterUpdate()
Dim strSql As String
If Len(Me.txtSelectDate & "") > 0 Then
strSql = "SELECT Invoice_ID, Customer_ID, invoice_date" & vbCrLf & _
"FROM tblInvoice" & vbCrLf & _
"WHERE invoice_date = " & Format(Me.txtSelectDate, "\#yyyy-m-d\#")
Debug.Print strSql
Me.RecordSource = strSql
End If
End Sub

Debug.Print 行将在即时窗口中打印 SELECT 语句,因此如果出现任何问题,您可以查看已完成的语句,并将其复制并粘贴到新查询的 SQL View 中进行测试。更改记录源属性会自动导致 Access 重新查询数据源。您可以在文本框的 Before Update 事件中验证用户的输入,以确保它是一个有效的日期。

另一种可能性是让表单首先加载一个不可编辑的虚拟记录( 1 )。然后仅在用户选择invoice_date 后才显示记录。为此,您可以使用以下内容作为表单的记录源:
SELECT TOP 1 Null AS Invoice_ID, Null AS Customer_ID, Null AS invoice_date
FROM tblInvoice;

关于ms-access - Access 2000 表单通过网络加载很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6401409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com