Office中国论坛/Access中国论坛

标题: 怎样才能使绑定数据源的主子窗体只有按保存打印后才保存数据 [打印本页]

作者: lymin    时间: 2010-12-31 14:28
标题: 怎样才能使绑定数据源的主子窗体只有按保存打印后才保存数据
怎样才能使绑定数据源的主子窗体只有按保存打印后才保存数据?
我作一装箱标签打印系统,现已完成了大部分,遇到一个问题,我的标签内容输入界面是由一主、子窗体构成,并且主子窗体都绑定有表数据源的,由“装箱时间”和“单号”二个字段链接主子窗体,我现在想只有在按了“保存打印标签”按钮后才保存主子窗体输入的数据,要怎么做呢?(注意:这二个窗体都是绑定数据源的)[attach]44544[/attach]。请指教!
作者: tz-chf    时间: 2010-12-31 14:31
换种思路,保存打印后做个标记。
作者: lymin    时间: 2010-12-31 14:35
tz-chf 发表于 2010-12-31 14:31
换种思路,保存打印后做个标记。

你误解了我的意思,我的意思是只有按了保存打印后才保存数据,而绑定数据表的窗体不管你按没按保存,他都自动保存了数据。
作者: zyp    时间: 2010-12-31 17:07
用非绑定记录源的窗体,在"保存打印"按钮的单击事件中加入新增记录的SQL 代码:
insert into 表名 (字段1,字段2......字段n) values (值1,值2......值n)
注意:在引用窗体控件中的值时,如果对应字段的字符型的,用 '"& 控件名 &"', 如果是数字型的,用 "& 控件名 &"
也就是字符型的要加单引号
作者: aslxt    时间: 2010-12-31 17:38
lymin 发表于 2010-12-31 14:35
你误解了我的意思,我的意思是只有按了保存打印后才保存数据,而绑定数据表的窗体不管你按没按保存,他都 ...

是啊,绑定数据表默认是自动保存的,不过有一个事件
Private Sub Form_BeforeUpdate(Cancel As Integer)
     ‘判断是否打印,如果打印过,就保存,否则提示,然后处理是否保存
End Sub
作者: lymin    时间: 2010-12-31 18:19
zyp 发表于 2010-12-31 17:07
用非绑定记录源的窗体,在"保存打印"按钮的单击事件中加入新增记录的SQL 代码:
insert into 表名 (字段1,字 ...

我这个是主窗体结合子窗体的呢?[attach]44548[/attach]
作者: LJB    时间: 2010-12-31 21:05
从图中看,应该子表中会有多条记录,建议用临时表,打印时用追加查询应该可以搞定!
作者: lymin    时间: 2010-12-31 22:41
LJB 发表于 2010-12-31 21:05
从图中看,应该子表中会有多条记录,建议用临时表,打印时用追加查询应该可以搞定!

是不是对于绑定源的窗体只有这种方法了吗?
作者: iamee    时间: 2011-1-1 00:23
tz-chf已经给了正解了啊,做个标记最省事最合理

作者: lymin    时间: 2011-1-1 14:47
LJB 发表于 2010-12-31 21:05
从图中看,应该子表中会有多条记录,建议用临时表,打印时用追加查询应该可以搞定!

我照你的方法用临时表,但每次删除临时表的时候,就会出现控件内容显示“#已删除的”这个问题,如图.要怎么解决呢?[attach]44550[/attach]
作者: koutx    时间: 2011-1-1 15:00
DoCmd.Runsql "DELETE 临时表.* FROM 临时表"
Me.Requery
作者: todaynew    时间: 2011-1-1 15:25
lymin 发表于 2010-12-31 14:28
怎样才能使绑定数据源的主子窗体只有按保存打印后才保存数据?
我作一装箱标签打印系统,现已完成了大部分 ...

可用Undo是对窗体或控件的修改失效,就你的问题来说应该在卸载窗体事件中用Undo来解决问题。如何来判断是否应该使数据失效呢?可以采用两个方式,其一是在窗体模块中设一个逻辑型公共变量,点击保存按钮将该变量值修改为Ture。卸载时变量如果为Ture,则不做Undo。其二是点击保存按钮时改变按钮的标签Caption,卸载时通过判断按钮的Caption来决定是否做Undo。


作者: tz-chf    时间: 2011-1-1 19:25
版主也不妥,进入子窗体主记录已经保存了,如何undo
作者: 软件下载    时间: 2011-1-1 20:22
窗体绑定记录源没事,你把窗体中各控件的控件来源设置为空就行了
作者: tz-chf    时间: 2011-1-1 22:51
很简单的事情怎么弄得这么复杂!打印过的数据在主表加一个标志字段,那么没做过标志的记录就当它不存在好了。
作者: sxb2007    时间: 2011-1-2 14:53
我现在想只有在按了“保存打印标签”按钮后才保存主子窗体输入的数据,要怎么做呢?(注意:这二个窗体都是绑定数据源的

按你的要求,要求的是主、子窗体,以我的经验只有二个办法,


按你原来的方法用绑定表及进行处理,很麻烦的。因为当你进入子窗体时,主窗的数据已经被保存了,如果你硬要这么做到,也是可以行的,我原来也做过,不过代码量及烦所度很大,不如用非绑定ADO+控件,处理起来简单顺手。

我用两个方法供参考
一个是用临时表处理子窗体数据,主窗体用半绑定的方法进行处理方可达到要求。


方法二是:
主子窗体都不绑定,主窗体的数据在单击保存时,用ADO写入到主表中
子窗体的数据用 表格控件处理,只用你在单击保存时,方可用ADO把 表格控件 里的数据写入到子表中。

以上两个方法都可以



作者: tz-chf    时间: 2011-1-2 20:40
非绑定窗体要做成绑定窗体左下角的记录条的效果也不容易。
作者: hannanrenjie    时间: 2015-6-15 17:31
好复杂!




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