编程论坛's Archiver

gdyuer 发表于 2007-5-25 09:52

[求助]不能正确保存数据,请指点一下如下代码哪有问题?

这是“保存”按钮里的代码<br>long row<br>row=dw_1.getrow()<br>if dw_1.dataobject="clzc" then<br>    dw_1.setitem(row,18,dw_1.GetItemDecimal(row,"yfzc")+dw_1.GetItemDecimal(row,"wxzc")+dw_1.GetItemDecimal(row,"bxzc")+dw_1.GetItemDecimal(row,"sfzc"))<br>//就是yfzc、wxzc、bxzc和sfzc四个字段的值相加后的结果传送给另外一个字段<br>end if<br>dw_1.Update()<br>IF dw_1.Update()=1 THEN<br>   COMMIT USING SQLCA;<br>ELSE<br>   ROLLBACK USING SQLCA;<br>    messagebox("失败!","操作的结果保存至数据库时失败")<br>END IF<br><br>我点击保存按钮后,数据也保存,但dw_1.setitem(row,18,dw_1.GetItemDecimal(row,"yfzc")+dw_1.GetItemDecimal(row,"wxzc")+dw_1.GetItemDecimal(row,"bxzc")+dw_1.GetItemDecimal(row,"sfzc"))列值并没保存。关闭窗口,重新打开后,找到这条记录,再点击一下保存,该列值才记算并保存下来。<br><br>代码哪写错了?在线等<br><br>再就是上面的代码写的麻烦不麻烦?我刚学不久,有没有更精练或更简洁的代码,请告诉我<br>
[align=right][color=#000066][此贴子已经被作者于2007-5-25 15:54:42编辑过][/color][/align]

gdyuer 发表于 2007-5-25 15:55

<P>怎么没人帮我呀</P>

路過 发表于 2007-5-25 16:39

你把那個四個用messagebox show一下,<BR>int li_aa<BR>li_aa=dw_1.GetItemDecimal(row,"yfzc")+dw_1.GetItemDecimal(row,"wxzc")+dw_1.GetItemDecimal(row,"bxzc")+dw_1.GetItemDecimal(row,"sfzc")<BR>dw_1.setitem(row,18,li_aa)<BR>datawindow--&gt;update properties 下,有沒有選擇要更新的欄位的。

gdyuer 发表于 2007-5-25 18:43

“datawindow--&gt;update properties 下,有沒有選擇要更新的欄位的。”      我看了,没问题<br><br>int li_aa<br>li_aa=dw_1.GetItemDecimal(row,"yfzc")+dw_1.GetItemDecimal(row,"wxzc")+dw_1.GetItemDecimal(row,"bxzc")+dw_1.GetItemDecimal(row,"sfzc")<br>dw_1.setitem(row,18,li_aa)<br><br>主要是不能即时更新,比如说第一次改了YFZC的值,直接点击保存后,只是把YFZC的这列值给保存了,dw_1.setitem(row,18,li_aa)没反应,该列值还是原来的值。<br><br><STRONG>得在改完YFZC的值后,再点击一下别的任意一列,再点击一下保存,结果才能出来。</STRONG><br><br>现在我把int li_aa<br>li_aa=dw_1.GetItemDecimal(row,"yfzc")+dw_1.GetItemDecimal(row,"wxzc")+dw_1.GetItemDecimal(row,"bxzc")+dw_1.GetItemDecimal(row,"sfzc")<br>dw_1.setitem(row,18,li_aa)的代码放在DATAWINDOW有losefocus的事件中,并且又加入一行dw_1.accepttext(),也还是不行。<br><br>各位老大再帮一下吧<br>
[align=right][color=#000066][此贴子已经被作者于2007-5-25 18:55:11编辑过][/color][/align]

路過 发表于 2007-5-28 08:26

<P>if dw_1.accepttext() = 1 then<BR>STRING ls_ordno<BR>      ls_ordno  = ls_kind+TRIM(ls_cust_no)+MID(TRIM(ls_ord_date),3,8)<BR>      dw_1.SetItem(dw_1.getrow(),'ord_no',ls_ordno)<BR>    IF  IsNull(ls_ordno) OR Len(Trim(ls_ordno)) = 0 THEN<BR>         MESSAGEBOX('訊息!!','此訂單編號不能為空白!!!!',EXCLAMATION!,OK!)<BR>         dw_1.SetColumn('ord_no')<BR>          RETURN<BR>        END IF<BR>    <BR><FONT color=#ff3300>integer row<BR>string ls_date,ls_date1</FONT></P>
<P><FONT color=#ff3300>        //計算修改和刪除的筆數<BR>        ll_mod = dw_1.ModifiedCount()<BR>        ll_del = dw_1.DeletedCount()<BR>        ll_total = ll_mod + ll_del</FONT></P>
<P><FONT color=#ff3300>//檢查資料是否有異動<BR>            if ll_total&lt;&gt;0 then<BR>           <BR>            ll_mod = dw_1.modifiedcount()<BR>            ll_del = dw_1.deletedcount()<BR>            ll_total = ll_mod + ll_del<BR>                <BR>                if ll_total = 0 then    <BR>                    ii_status = 0<BR>                    wf_menu_ctrl()<BR>                    im_menu.item[1].item[1].enabled=true<BR>                    <BR>                end if    <BR>        else<BR>            MESSAGEBOX('訊息!!','請確定是否有資料更新!!',EXCLAMATION!,OK!)<BR>           return<BR>        end if<BR><FONT color=#000000>end if</FONT> <BR><FONT color=#000000>我也是這麼寫的,沒有問題呀!你有沒有寫紅色的那一部份呀。<BR></FONT>你把你每一個getitemdecimal的數據messagebox一下,看看有沒有抓取出來。<BR></FONT></P>

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.