hur.cn - 华软网

 热门搜索

数据库的问题

  作者:未知    来源:网络    更新时间:2018/5/16
以下代码看起来多,其实只是简单地将sle中的值更新到数据库中而已,但是执行时却发生错误--"发生算术溢出",为什么会这样子?我用的是sql server 2000
String MIMA,KJBX02,KJBX03,KJBX04,KJBX05,KJBX06,KJBX07,KJBX08,KJBX09,KJBX10,KJBX11,KJBX12,KJBX13,KJBX14,KJBX15,KJBX16,KJBX17,KJBX18,KJBX19,KJBX27,KJBX28,KJBX29,KJBX30,KJBX31,KJBX32,KJBX33,KJBX36,KJBX37,KJBX38,KJBX39,KJBX40,KJBX41,KJBX42,KJBX43,KJBX44,KJBX45,KJBX46,KJBX47,KJBX48,KJBX49,KJBX50,KJBX51,KJBX52,KJBX53
Decimal KJBX20,KJBX21,KJBX22,KJBX23,KJBX24,KJBX25,KJBX34,KJBX35
integer KJBX01
datetime KJBX26

KJBX01=Integer(sle_2.text)
KJBX26=datetime(sle_27.text)

KJBX20=Dec(sle_21.text)
KJBX21=Dec(sle_22.text)
KJBX22=Dec(sle_23.text)
KJBX23=Dec(sle_24.text)
KJBX24=Dec(sle_25.text)
KJBX25=Dec(sle_26.text)
KJBX34=Dec(sle_35.text)
KJBX35=Dec(sle_36.text)

KJBX02=String(sle_3.text)
KJBX03=String(sle_4.text)
KJBX04=String(sle_5.text)
KJBX05=String(sle_6.text)
KJBX06=String(sle_7.text)
KJBX07=String(sle_8.text)
KJBX08=String(sle_9.text)
KJBX09=String(sle_10.text)
KJBX10=String(sle_11.text)
KJBX11=String(sle_12.text)
KJBX12=String(sle_13.text)
KJBX13=String(sle_14.text)
KJBX14=String(sle_15.text)
KJBX15=String(sle_16.text)
KJBX16=String(sle_17.text)
KJBX17=String(sle_18.text)
KJBX18=String(sle_19.text)
KJBX19=String(sle_20.text)
KJBX27=String(sle_28.text)
KJBX28=String(sle_29.text)
KJBX29=String(sle_30.text)
KJBX30=String(sle_31.text)
KJBX31=String(sle_32.text)
KJBX32=String(sle_33.text)
KJBX33=String(sle_34.text)
KJBX36=String(sle_37.text)
KJBX37=String(sle_38.text)
KJBX38=String(sle_39.text)
KJBX39=String(sle_40.text)
KJBX40=String(sle_41.text)
KJBX41=String(sle_42.text)
KJBX42=String(sle_43.text)
KJBX43=String(sle_44.text)
KJBX44=String(sle_45.text)
KJBX45=String(sle_46.text)
KJBX46=String(sle_47.text)
KJBX47=String(sle_48.text)
KJBX48=String(sle_49.text)
KJBX49=String(sle_50.text)
KJBX50=String(sle_51.text)
KJBX51=String(sle_52.text)
KJBX52=String(sle_53.text)
KJBX53=String(sle_54.text)
update KHJB set MIMA=:MIMA,KJBX02=:KJBX02,KJBX03=:KJBX03,KJBX04=:KJBX04,KJBX05=:KJBX05, &
KJBX06=:KJBX06,KJBX07=:KJBX07,KJBX08=:KJBX08,KJBX09=:KJBX09,KJBX10=:KJBX10,KJBX11=:KJBX11, &
KJBX12=:KJBX12,KJBX13=:KJBX13,KJBX14=:KJBX14,KJBX15=:KJBX15,KJBX16=:KJBX16,KJBX17=:KJBX17, &
KJBX18=:KJBX18,KJBX19=:KJBX19,KJBX20=:KJBX20,KJBX21=:KJBX21,KJBX22=:KJBX22,KJBX23=:KJBX23, &
KJBX24=:KJBX24,KJBX25=:KJBX25,KJBX26=:KJBX26,KJBX27=:KJBX27,KJBX28=:KJBX28,KJBX29=:KJBX29, &
KJBX30=:KJBX30,KJBX31=:KJBX31,KJBX32=:KJBX32,KJBX33=:KJBX33,KJBX34=:KJBX34,KJBX35=:KJBX35, &
KJBX36=:KJBX36,KJBX37=:KJBX37,KJBX38=:KJBX38,KJBX39=:KJBX39,KJBX40=:KJBX40,KJBX41=:KJBX41, &
KJBX42=:KJBX42,KJBX43=:KJBX43,KJBX44=:KJBX44,KJBX45=:KJBX45,KJBX46=:KJBX46,KJBX47=:KJBX47, &
KJBX48=:KJBX48,KJBX49=:KJBX49,KJBX50=:KJBX50,KJBX51=:KJBX51,KJBX52=:KJBX52,KJBX53=:KJBX53 &
where KJBX01=:KJBX01;

if sqlca.sqlcode<>0 then &
MessageBox("fail",sqlca.sqlerrtext)
------华软网友回答------
Decimal KJBX20,KJBX21,KJBX22,KJBX23,KJBX24,KJBX25,KJBX34,KJBX35

请检查数据库中相关字段的类型是否与decimal相符
------华软网友回复------
去掉大量set column=value,只留第一个
update KHJB set MIMA==:MIMA where KJBX01=:KJBX01;
执行,看结果对不对。如果没有出错,逐个增加设值的字段
知道出错为止,就知道哪个字段溢出了。
然后检查数据库那个字段是否范围设得太小了

当然,可以一次增加一组设制,发现出错就在这新增加的一组字段中细分查找错误

------华软网友回复------
数据库中相关字段的类型与decimal是相符...........

update时如果编辑框为空值,而又取编辑框的值update不会不出现这个问题?
------华软网友回复------
datetime(sle_27.text)换成datetime(date(sle_27.text))

楼主说的“update时如果编辑框为空值,而又取编辑框的值update不会不出现这个问题?”
我就不清楚了,手头没pb。你可以把放decimal 类型的sle_x换成 em_x啊,然后用掩码格式,这样就不可能为空了(因为默认是一般都设定默认0.00)。
KJBX53=String(sle_54.text) 这样的转换有必要吗?一般用KJBX53=trim(sle_54.text)的更多些。

最后,怎么不用datawindow啊,你写这么长代码得很长时间吧。用datawindow的话,1分钟就够了。建议学学datawindow,那可是pb的精华啊。



------华软网友回复------
谢谢
------华软网友回复------
谢谢
------华软网友回复------
..      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。