回 帖 发 新 帖 刷新版面

主题:表单数据的保存问题

[size=4]假定表单上的表GRID的数据源为ab.dbf,对表GRID的字段进行了编辑处理(如赋值、计算、修改....),我发现有一些计算能够反映(保存)在数据源ab表上,有些则没有。我希望对表的处理能反映(保存)到数据源ab表上,请教各位老师应该怎么做?如果做一个保存命令按钮,哪代码如何?[/size]

回复列表 (共17个回复)

11 楼

非常简单的问题,楼主为何弄得如此复杂?不知以下步骤能否满足楼主心愿?
一、创建表单;
二、将数据表直接拖进表单;
三、修饰表单;
四、编写计算用的过程代码,最后附上“Thisform.Refresh”。

12 楼

[size=4]妙计山人老师:
   你提供的方法比较笼统,我理解这是以.dbf表为数据源建立表单的一般方法。控件grid上的表,可以和数据源表.dbf完全相同,也可以不同,因为可以在grid上增加一些字段。如果是后一种情况,这时,'......最后附上“Thisform.Refresh”。'不可能把grid上的数据保存到数据源.dbf中。请问,如何将GRID的内容保存到另一个.dbf表中?
   多多指教!
[/size]

13 楼

[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 楼

楼主的问题确实有些费解。如果是两个不同的表,不妨利用“Locate”或“循环”语句予以赋值。

15 楼

[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 楼

是否有意在将问题弄复杂化了,若在abc.dbf中增加一个“库存金额”字段有何不妥?楼主如执意要坚持自己的观点,那么不妨在退出表单时利用“Do While Not Eof()  ... End Do”循环语句强制赋值,当然二个表的名称应该不同才对,但最终还得要在abc.dbf中增加一个“库存金额”字段才行。

17 楼

建议楼主改用视图

我来回复

您尚未登录,请登录后再回复。点此登录或注册