Office中国论坛/Access中国论坛

标题: 求助解决:生成表查询后的更新和调用问题 [打印本页]

作者: hljthzbc    时间: 2010-7-10 21:12
标题: 求助解决:生成表查询后的更新和调用问题
版主和大家好:
      我做的生产表查询后怎么在窗体更新和调用它呢.我做的附件-按钮一按全部删除了,而不能在更新成新表了.版主帮助看看怎样解决此问题.

作者: tmtony    时间: 2010-7-10 22:31
因为你里面有一句代码出错了,
qq = RST("前期")  把这行代码 注释掉,再执行就可以了
因为 在你的交叉表中 没有"前期"这个字段,所以出错了
作者: hljthzbc    时间: 2010-7-10 22:44
删除可以了,问题是我想在窗体把生成查询表更新显示在本窗体上呀
作者: tmtony    时间: 2010-7-10 23:49
再刷新一下窗体,使用me.requery  如果是子窗体  me.子窗体控件.form.requery
作者: hljthzbc    时间: 2010-7-11 00:46
本帖最后由 hljthzbc 于 2010-7-11 00:53 编辑

版主好:我不会写代码:
可是liwen版主没有把代码写全呀,谁在再帮我把字段写全吧:还有几个字段没有写上.调用不出来.
  
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 产销表W.* FROM 产销表W"
DoCmd.RunSQL SQL
sq = 0
sclj = 0
xslj = 0
qmkc = 0

     RST.Open "交叉表", conn, adOpenKeyset, adLockOptimistic
     rst1.Open "产销表W", 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

'先按相应的字段做一个“查询结果”表,其它字段请自己补齐
Private Sub Form_Load()
'Me.Requery
Me.产销表W子窗体.Form.Requery

End Sub

我想实现的就是在窗体本身可以自由的更新数据.目前只能把数据删除.可是生成还不行.
那位版主帮助实现这两个要求.在此首先谢谢liwen自主.一并也谢谢给予指点的各位大师了
[attach]42628[/attach]


作者: hljthzbc    时间: 2010-7-11 09:45
版主和大家快来帮帮忙吧
作者: hljthzbc    时间: 2010-7-11 17:54
版主和大家快来帮帮忙吧
作者: hljthzbc    时间: 2010-7-11 21:06
怎么一天也没有一个版主帮助看看呢

作者: thwsl    时间: 2010-7-12 11:57
今天版主都看足球去了吧,没有人回贴
作者: thwsl    时间: 2010-7-13 09:06
希望今天能有那位版主来帮忙解决一下问题
作者: liwen    时间: 2010-7-17 10:51
最基本的方法就是一个字段一个字段的赋值补全就行了
RST1(“某字段“)=RST(”某字段“)
关键问题是要理解代码的含义!
作者: hljthzbc    时间: 2010-7-17 11:21
数据我补齐了,可是在窗体上更新生成表.数据就不对了[attach]42730[/attach]
作者: hljthzbc    时间: 2010-7-19 09:11
今天那位版主来帮忙解决问题呀
作者: 410119287    时间: 2010-7-19 15:07
版主和大家好:
      我做的生产表查询后怎么在窗体上更新和调用它呢.我做的附件-按钮一按就全部删除了,而 ...
hljthzbc 发表于 2010-7-10 21:12

我的这个方式你看看。
作者: hljthzbc    时间: 2010-7-19 17:19
谢谢楼上的帮忙.你可以按我的代码改吗
作者: 410119287    时间: 2010-7-19 20:04
回复 hljthzbc 的帖子
上面的附件已经提供给思路了。
第一步运行的是查询语句,就是直接调用查询来进行管理的。
第二步删除“产销表W”数据表中的内容,是为了给后面的数据写入作准备。
第三步就是运行查询2新建立的“产销表中间表”的内容写入更新到“产销表W”数据表。
   说明:就是DoCmd.RunSQL”SQL语句”来做的。
第四步就是DoCmd.RunSQL "drop table 产销表中间表"-----删除”产销表中间表“过渡表。
第五步就是更新列表框。显示新数据。


   
作者: 410119287    时间: 2010-7-19 20:08
DoCmd.RunSQL”SQL语句”
这个语句可以建立查询时候设计视图做好后在以SQL视图查看显示出代码。然后复制这SQL语句,贴在SQL语句双引号。就可以免除了写代码的麻烦了。这个我是自己摸索出来的经验。
因为我也记不住一堆蝌蚪啊。头晕。
大部分SQL语句可以用这个方法得到。而且用这个方法得到的语句比你自己的增删改得到的数据时百分百得正确。
作者: 410119287    时间: 2010-7-19 20:15
做好这些最后一步就是在第一步的最前面。也就是把“查询2”生成表查询变成SQL语句。
DoCmd.RunSQL”SQL语句”
把SQL语句替换成用SQL视图查询得到的代码即可。
为什么这个时候这样写呢?那是因为这步最关键。你可以先选择查询保存看运行结果是否正确。如果正确了就马上更改为生成表查询。然后就按SQL视图查询取得代码。替换SQL语句就完成了这个代码写入得工作。

转变为MDE格式后。因为没有查询的中介。最终版本做好无论怎么更新,永远不会出错。
作者: hljthzbc    时间: 2010-7-19 21:29
楼上说的办法实际就是调用查询2的生成表,这样生成的过程如果数据还多的好就太慢了,我想就是能按原代码改进,这个代码是个计算过程.帮我改的老师.改了一半,累计数据,前期数据,库存数据.没有改对,但是它运行的非常快.楼上可以试试.就知道了
作者: hljthzbc    时间: 2010-7-20 16:23
附件窗体中的代码计算错误,窗体数据与查询生成表的数据不一致
谁可以按附件窗体中的代码改正错误,因为这个窗体更新数据非常快
作者: hljthzbc    时间: 2010-7-21 10:42
怎么全部发实例,帮我解决一下这个贴子上的问题
作者: hljthzbc    时间: 2010-7-22 21:44
此贴又一天没有人理会.版主就来好好看看,帮助解决一下
作者: liwen    时间: 2010-7-23 11:37
需要自己多分析原因。

作者: hljthzbc    时间: 2010-7-23 12:37
  谢谢楼上老师的回贴修改,可是还有一处数据不对
我看了窗体上的更新.与在查询中的更新数据还差--期未库存与期初数据还是不一样.我也改了多次,可是不懂代码,所以也没有成功
作者: hljthzbc    时间: 2010-7-23 12:48
老师在计算中减去的是当月数,而不是当月的累计.所以数据不对.---
而我又不知那条是累计代码呀
作者: hljthzbc    时间: 2010-7-23 13:07
本帖最后由 hljthzbc 于 2010-7-23 13:16 编辑

那条是累计代码呀  
这张是更新窗体上的数据,库存数据与结转的数据也不一样

[attach]42787[/attach]


这张图片是生成表查询中的数据

[attach]42787[/attach]

作者: hljthzbc    时间: 2010-7-23 13:51
谢谢老师的帮助,我根据老师的代码改动了一下数据正确了
,再次谢谢老师的帮忙.没有你,我是永远也做不出来的

此贴已经解决.谢谢大家和版主这些天的关注和帮忙




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