注册 登录
编程论坛 PowerBuilder

pB程序更新ACCESS数据库的问题。(此问题已解决)

gdyuer 发布于 2007-06-07 15:44, 3272 次点击

前些天我用PB做了一个车辆管理的程序,一直挺好用的。昨天因为业务需要,又对数据库表增加了几个字段,相应的程序也改了下,但在对clgl_zc这个表进行数据更新时,老是出现如下提示,

SQLSTATE = S1000
[Microsoft][ODBC Microsoft Access Driver] 由于其 Required 属性设置为真(True),字段 'clgl_zc.dj_clbm' 不能包含 Null 值。在此字段中输入一个数值。

实际上 'clgl_zc.dj_clbm' 里我明明已经输入了信息的(clgl_zc这个表已经设置了别的字段为主键)。

求各位老大帮忙了

[此贴子已经被作者于2007-6-8 9:25:31编辑过]

8 回复
#2
黎明前的黑暗2007-06-07 16:01
字段 'clgl_zc.dj_clbm'类型是什么?
其次你是不是更改了该字段的必须属性?是的话取消即可
#3
gdyuer2007-06-07 16:19

字段 'clgl_zc.dj_clbm'类型是什么?

回:是文本数据

其次你是不是更改了该字段的必须属性?是的话取消即可

回:这个就应该是必须的,它代表的是车辆号码。我不明白你说的必须属性在哪里。
在ACCESS的表的属性里,该字段我设置的就是必须的,不能为空,但允许重复。

#4
黎明前的黑暗2007-06-07 16:43
由于ACCESS数据库的必须属性,也就是数据库语言中的REQUIRED(必须的)和PB所支持的REQUIRED不一致,所以不能选
#5
黎明前的黑暗2007-06-07 16:45
如果你想数据不为空,可选"允许空字符串"属性为否,而不是修改必须字段.
#6
gdyuer2007-06-07 17:09
哈哈,你说的好用。先谢谢你了

但又出现一个比较严重的问题。

点击保存后,也出现正常保存的提示了。但在ACCESS里打开表后,最后只是多了一条各项值全都为空的记录,就是说我的数据并没正常保存到表里,包括dj_clbm这个字段也为空。该字段的属性已经设置为"允许空字符串"属性为否了,为什么又能保存呢?这个怎么解释呢?

我的“保存”事件里的代码应该没有问题,因为同样的代码更新另外一个表就没问题。
该代码如下:
dw_1.accepttext()
dw_1.Update()
IF dw_1.Update()=1 THEN
COMMIT USING SQLCA;
messagebox("成功!","数据已正确保存!")
ELSE
ROLLBACK USING SQLCA;
messagebox("失败!","操作的结果保存至数据库时失败,请关闭程序再打开重试!")
END IF

[此贴子已经被作者于2007-6-7 22:39:20编辑过]

#7
黎明前的黑暗2007-06-07 17:19
你点2次保存看看,第2次会不会出已有相同数据的提示,是的话用变量检查你的DW内的值.
不是的话,检查你的DW结构吧.
#8
gdyuer2007-06-07 17:43
点了N次,每次都是保存成功,也没有出现已有相同数据的提示

DW结构怎么查?

在ACCESS里打开表后,最后倒是多了一条记录,但每一项数据全都为空,就是说我的数据并没正常保存到表里,包括dj_clbm这个字段也为空。该字段的属性已经设置为"允许空字符串"属性为否了,为什么又能保存呢?这个怎么解释呢?

[此贴子已经被作者于2007-6-7 22:37:24编辑过]

#9
gdyuer2007-06-08 09:29
我找道原因了,很简单,是ROWS--UPDATE属性里没把允许更新的字段选上。

原因估计可能是因为表中新添加字段,重绘DATAWINDOW后引起的

谢谢黎明前的黑暗的帮助

我还发现dj_clbm这个字段属性再设置为必须,也能正常保存了

[此贴子已经被作者于2007-6-8 9:33:58编辑过]

1