Office中国论坛/Access中国论坛

标题: 最大问题求助:查询计算过多打开太慢怎样才能提高速度 [打印本页]

作者: hljthzbc    时间: 2010-7-7 11:01
标题: 最大问题求助:查询计算过多打开太慢怎样才能提高速度
本帖最后由 hljthzbc 于 2010-7-7 20:05 编辑

1.查询计算过多是打开慢的原因,可是怎样能解决呢.难道ACCESS数据开发就这样吗?我也试着分项做几个查询后再组合也不行.怎么这样难阿.
谁还能帮解决一下.并告之原因
   2.另外谁帮我看看为什么子窗体加不到主窗体上,是什么原因呢.怎样解决.帮我处理一下.[attach]42594[/attach]
作者: liwen    时间: 2010-7-7 13:42
对于计算过多的查询,可以使用ADO或DAO等计算后,生成新的表来处理,或者在表中直接加入相关字段,在保存或更新时更新这些相关字段亦可。
作者: hljthzbc    时间: 2010-7-7 13:55
谢谢版主的回贴.
    可是你说的ADO或DAO我不会.也考虑过加入相关字段,但做了几回也是不行,版主有办法根据我的附件改做一下我按此学做.否则我没有别的办法了
作者: hljthzbc    时间: 2010-7-7 20:13
查询计算过多是-大问题了,可是我不会别的办法,版主和有会的人快帮忙改做一下吗.在这样先祝福版主和大家好运多多.
作者: hljthzbc    时间: 2010-7-8 12:55
版主快来帮助呀
作者: hljthzbc    时间: 2010-7-8 22:11
怎么此贴成了冷贴了.那位版主-帮助解决一下呀
作者: hljthzbc    时间: 2010-7-10 09:13
怎么此贴成了冷贴了.那位版主-帮助解决一下呀

作者: liwen    时间: 2010-7-10 12:10
Sub 生成新表()
Dim conn As New ADODB.Connection
Set conn = CurrentProject.Connection
   Dim RST As New ADODB.Recordset
   Dim SQL As String
'   Dim cat As New ADOX.Catalog
'   Dim cmd As New ADODB.Command
  Dim rst1 As New ADODB.Recordset
'   cat.ActiveConnection = conn
SQL = "DELETE 查询结果.* FROM 查询结果"
DoCmd.RunSQL SQL
sq = 0
sclj = 0
xslj = 0
qmkc = 0

     RST.Open "交叉表", conn, adOpenKeyset, adLockOptimistic
     rst1.Open "查询结果", conn, adOpenKeyset, adLockOptimistic
     
     Do While Not RST.EOF
If cpid = RST("产品ID") Then
If ldid = RST("年度ID") Then
sclj = sclj + Nz(RST("生产"))
xslj = xslj + Nz(RST("销售"))
kc = qq + sclj - xslj
Else
qq = kc
sclj = Nz(RST("生产"))
xslj = Nz(RST("销售"))
End If
Else
qq = RST("期初库存")
sclj = Nz(RST("生产"))
xslj = Nz(RST("销售"))
kc = qq + sclj - xslj
End If
rst1.AddNew
rst1("年度ID") = RST("年度ID")
rst1("月份ID") = RST("月份ID")
rst1("产品ID") = RST("产品ID")

rst1("生产") = RST("生产")
rst1("销售") = RST("销售")
rst1("前期") = qq
rst1("生产累计") = sclj
rst1("销售累计") = xslj
rst1("库存") = kc
rst1.Update
   
cpid = RST("产品ID")
ldid = RST("年度ID")
yfid = RST("月份ID")
     RST.MoveNext
     Loop
     rst1.Update
  End Sub

'先按相应的字段做一个“查询结果”表,其它字段请自己补齐
作者: hljthzbc    时间: 2010-7-10 12:53
谢谢版主的回贴.
  可是怎样生成新表呀,你的附件没有内容,我不会生成新表,我用生成表查询提示不允许有多个自动编号.我取消了也不行呀
是先做窗体在生成吗
作者: hljthzbc    时间: 2010-7-10 14:08
本帖最后由 hljthzbc 于 2010-7-10 20:24 编辑

生成新表做完了.可是怎样在把原表随时更新呀.我在窗体上需要查看数据时怎样更新用按钮吗,
作者: hljthzbc    时间: 2010-7-10 14:35

   版主写的代码我不明白用途.用在哪里.
    我也做好了更新.可是在窗体上怎样才能随时更新
作者: bujiu02    时间: 2010-7-10 14:56
kanbudong ,zenmenban
作者: hljthzbc    时间: 2010-7-10 15:04
版主写的代码我不明白用途.用在哪里.
    我也做好了更新.可是在窗体上怎样才能随时更新呢
作者: liwen    时间: 2010-7-10 15:18
在必要更新时,一般想查看"查询结果"表时即调用代码进行更新,可以使用更新按钮,或在相应的事件中随时进行更新都可,如窗体打开时,或相关的表更新后,在乎你的使用频度和程序的运行效率,太频繁的更新也会影响程序的运行速度的.
作者: hljthzbc    时间: 2010-7-10 15:32
还是不明白,帮我做的更新窗体和按钮吧.我不知怎样调用你写的代码.
作者: hljthzbc    时间: 2010-7-10 16:15
怎样用按钮调用你写的代码.我不会.还得烦劳版主了
作者: hljthzbc    时间: 2010-7-13 17:24
代码在窗体中调用的数据与在生成表查询中的数据不一致.请liwen版主在帮我写出错在那了,其它数据我已经补齐了





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3