关于往数据库中插入数据的问题:

ychgujuan 2008-04-17 03:46:53
数据库中建了一张借款表:
CREATE TABLE [dbo].[borrowmoneylable] (
[number] [int] IDENTITY (1000, 1) NOT NULL ,
[name] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[borrowmoney] [decimal](10, 0) NOT NULL ,
[allowperson] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[used] [varchar] (40) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[yn] [char] (1) COLLATE Chinese_PRC_CI_AS NULL ,
[person] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[regdate] [datetime] NOT NULL
) ON [PRIMARY]
GO
在pb中设计的窗体界面中插入数据,点击“确定”后总是说“访问数据库出错”。
看下面的代码。我看不出哪有错啊?


dec bor
string na,al,us
date reg
reg=today()
bor=dec(em_bormen.text)
na=sle_bormen.text
al=sle_allmen.text
us=mle_use.text

if em_bormen.text="" then
messagebox("系统提示","请输入借款金额!",information!,ok!)
em_bormen.setfocus()
return
end if
if sle_bormen.text="" then
messagebox("系统提示","请输入借款人名称!",information!,ok!)
sle_bormen.setfocus()
return
end if
if sle_bormen.text="" then
messagebox("系统提示","请输入批准人名称!",information!,ok!)
sle_allmen.setfocus()
return
end if

COMMIT USING SQLCA;

INSERT INTO borrowmoneylable(name,borrowmoney,allowperson,used,yn,person,regdate)
VALUES (:na,:bor,:al,:us,"Y",:sysopname,:reg)
USING SQLCA;

if sqlca.Sqlcode = -1 then
ROLLBACK USING SQLCA;
messagebox("访问数据库错误",SQLca.SqlErrtext)
else
COMMIT USING SQLCA;
sle_bormen.text =""
sle_allmen.text = ""
mle_use.text = ""
em_bormen.text=""
em_bormen.setfocus()
end if

想请大家帮我一下。哪地方不对?
谢谢!
...全文
145 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lllyyymmm 2008-04-24
  • 打赏
  • 举报
回复
你表中的所有字段都是不允许为空的,如果有出现为空的,就会出错,还有你错误弹出要改一下
if sqlca.Sqlcode = -1 then
ROLLBACK USING SQLCA;
messagebox("访问数据库错误",SQLca.SqlErrtext)
else
COMMIT USING SQLCA;
sle_bormen.text =""
sle_allmen.text = ""
mle_use.text = ""
em_bormen.text=""
em_bormen.setfocus()
end if
改为:
string ls_err
if sqlca.Sqlcode = -1 then
ls_err=sqlca.sqlerrtext
ROLLBACK USING SQLCA;
messagebox("访问数据库错误",ls_err)
return
else
COMMIT USING SQLCA;
sle_bormen.text =""
sle_allmen.text = ""
mle_use.text = ""
em_bormen.text=""
em_bormen.setfocus()
end if


leyueming 2008-04-23
  • 打赏
  • 举报
回复
居然还有人这样写代码的,汗颜
悟空师傅来了 2008-04-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 v888 的回复:]
bor=dec(em_bormen.text)
na=sle_bormen.text
al=sle_allmen.text
us=mle_use.text
这些代码,最好你放在验证的后面,就是在判断之后再进行赋值·
if sle_bormen.text="" then 这个写了两次
sysopname是什么东西?
你红色的COMMIT USING SQLCA; 也可以去掉·
[/Quote]

同意,还有贴出SQLca.SqlErrtext看看

如果就一个sqlca,直接commit;就行
灿烂星河 2008-04-17
  • 打赏
  • 举报
回复
用的什么数据库?为什么不使用数据窗口来处理,一定要用INSERT?此外,你的表主键建好了么?
ybkenan 2008-04-17
  • 打赏
  • 举报
回复
SQLca.SqlErrtext
這個最生要,樓主沒貼出來。
v888 2008-04-17
  • 打赏
  • 举报
回复
bor=dec(em_bormen.text)
na=sle_bormen.text
al=sle_allmen.text
us=mle_use.text

这些代码,最好你放在验证的后面,就是在判断之后再进行赋值·
if sle_bormen.text="" then 这个写了两次
sysopname是什么东西?
你红色的COMMIT USING SQLCA; 也可以去掉·

752

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧