主题:表单数据的保存问题
sdn193551
[专家分:10] 发布于 2010-02-15 10:09:00
[size=4]假定表单上的表GRID的数据源为ab.dbf,对表GRID的字段进行了编辑处理(如赋值、计算、修改....),我发现有一些计算能够反映(保存)在数据源ab表上,有些则没有。我希望对表的处理能反映(保存)到数据源ab表上,请教各位老师应该怎么做?如果做一个保存命令按钮,哪代码如何?[/size]
最后更新于:2010-02-17 16:40:00
回复列表 (共17个回复)
11 楼
妙计山人 [专家分:130] 发布于 2010-02-23 16:53:00
非常简单的问题,楼主为何弄得如此复杂?不知以下步骤能否满足楼主心愿?
一、创建表单;
二、将数据表直接拖进表单;
三、修饰表单;
四、编写计算用的过程代码,最后附上“Thisform.Refresh”。
12 楼
sdn193551 [专家分:10] 发布于 2010-02-24 09:54:00
[size=4]妙计山人老师:
你提供的方法比较笼统,我理解这是以.dbf表为数据源建立表单的一般方法。控件grid上的表,可以和数据源表.dbf完全相同,也可以不同,因为可以在grid上增加一些字段。如果是后一种情况,这时,'......最后附上“Thisform.Refresh”。'不可能把grid上的数据保存到数据源.dbf中。请问,如何将GRID的内容保存到另一个.dbf表中?
多多指教!
[/size]
13 楼
wzxc [专家分:9440] 发布于 2010-02-24 10:53:00
[quote][size=4]妙计山人老师:
因为可以在grid上增加一些字段。如果是后一种情况,这时,'......最后附上“Thisform.Refresh”。'不可能把grid上的数据保存到数据源.dbf中。请问,如何将GRID的内容保存到另一个.dbf表中?
[/size][/quote]
Grid 表格是以行和列显示数据,类似于 “浏览”窗口外观的容器对象,包含 Column 对象的容器对象,Column 可以包含 Header 对象和控件。RecordSource 属性为表格指定一个记录源, 一般是某个临时表的别名,或某张表的名称。然后可以通过设置列的 ControlSource 属性指定各列的内容。表格列数ColumnCount 可以《=表字段数。如果反过来,》字段数,我试验了一下,它重复显示字段内容。所以对你上述的非常费解。如何增加的字段?如果这个字段是数据源的表其中一个字段,表格列ControlSource 属性又绑定了这个字段,又怎么“[i][u]不可能把grid上的数据保存到数据源.dbf中[/u][/i]”?!
14 楼
妙计山人 [专家分:130] 发布于 2010-02-24 15:43:00
楼主的问题确实有些费解。如果是两个不同的表,不妨利用“Locate”或“循环”语句予以赋值。
15 楼
sdn193551 [专家分:10] 发布于 2010-02-25 10:08:00
[size=4]wzxc、妙计山人两位老师:[/size]
我可能没有说明白,使你们觉得“非常费解”,再举一个例子吧。假设数据库中有一个表一abc.dbf,以它为数据源制作一个表单Grid1
表一abc.dbf
货品名称 货品型号 直径 长度 库存支数
园棒 KTS3 22.0 330 21
园棒 KTS3B 23.0 330 88
园棒 KTS3 24.0 330 54
园棒 KTS3B 25.0 330 5
园棒 KTS4 3.0 60 150
园棒 KTS4 3.0 300 -20
园棒 KTS4 3.0 330 100
Grid1
货品名称 货品型号 直径 长度 库存支数 库存金额
园棒 KTS3 22.0 330 21 4200
园棒 KTS3B 23.0 330 88 184800
园棒 KTS3 24.0 330 54 11880
园棒 KTS3B 25.0 330 5 1150
园棒 KTS4 3.0 60 150 4500
园棒 KTS4 3.0 300 -20 -3000
园棒 KTS4 3.0 330 100 16000
表单Grid1显示的数据与表一abc.dbf有点不同,增加了一个字段“库存金额”。它的値是由计算得到的(=库存支数*单价,单价是货品型号、直径、长度字段变量的函数)。增加字段的方法是利用Grid1的AddColumn属性,代码如下:
WITH THISFORM.Grid1
.AddColumn(6) && 在5列处创建一列,原来的列往后移动
.Columns(THISFORM.Grid1.ColumnCount).Name = "NewColumn" &&指定列名字
.NewColumn.ControlSource = "kczs.sum_exp_5*rkyz_1(kczs.货品型号,kczs.直径,kczs.长度,0.64,0.63)" &&指定列的数据源
.NewColumn.Header1.Caption = "库存金额" &&指定列的标题
ENDWITH
代码可以放在init事件中。
[color=FF00FF]可见Grid1的数据源不是单一的,它的字段数目比数据源abc.dbf多!用thisform.grid1.refresh 方法不能将Grid1的内容都保存到abc.dbf中。
[/color]
我现在的问题是,如何将Grid1显示的内容保存到另一个.dbf表中?
不知道我说清楚了没有,请两位老师指教!
16 楼
妙计山人 [专家分:130] 发布于 2010-02-25 11:41:00
是否有意在将问题弄复杂化了,若在abc.dbf中增加一个“库存金额”字段有何不妥?楼主如执意要坚持自己的观点,那么不妨在退出表单时利用“Do While Not Eof() ... End Do”循环语句强制赋值,当然二个表的名称应该不同才对,但最终还得要在abc.dbf中增加一个“库存金额”字段才行。
17 楼
wzxc [专家分:9440] 发布于 2010-02-25 11:53:00
建议楼主改用视图
我来回复