以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]至有点色版主关于数据保存延迟问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=99174)

--  作者:WENFEIZHU
--  发布时间:2017/4/13 19:46:00
--  [求助]至有点色版主关于数据保存延迟问题
你好,就那天的问题,我做了个实验,如下。

建立一个access数据库如下结构
主键 姓名 年龄
1  张三 30
2  李四 40
3  王五 50
新建foxtable项目,并将这个数据库引入foxtable外部表,
设置表名为“表1”
在命令窗口执行以下代码:

Dim TB as table = tables("表1")
Dim irow as integer = TB.FindRow("[姓名] = '汪峰'")
if irow <0 then
irow = TB.addnew.index
End if
messagebox.show(irow)
with TB
.value(irow,0) = "4"
.value(irow,1) = "汪峰"
.value(irow,2) = "45"
.save
END WITH

1、执行第一次,我观察到的情况是,表1第4行赋值了,但是行号显示为空。
2、执行第一次,弹出对话框为-1,执行第二次还是-1,无论执行多少次都是-1,按道理应该第二次执行弹出3
3、我发现在表里面用鼠标点击一下其他行,这一行的行号立即显示,我实在没办法,在.save前面加了一行代码.select(irow-1,0),竟然好了。
想知道是为什么,是不是版本问题,还是我差一行确认将数据传递到数据库的代码。
请指教。

--  作者:WENFEIZHU
--  发布时间:2017/4/13 19:49:00
--  
另外,我没设置数据库主键自动编号,因为号码很特殊。
--  作者:有点色
--  发布时间:2017/4/13 20:05:00
--  

改一下代码,看有没有问题

 

Dim ndr As DataRow = DataTables("表1").AddNew

ndr("姓名") = 1234

 

如果有问题,把你做的例子上传上来看看。


--  作者:有点色
--  发布时间:2017/4/13 20:06:00
--  
以下是引用WENFEIZHU在2017/4/13 19:49:00的发言:
另外,我没设置数据库主键自动编号,因为号码很特殊。

 

弄一个列作为主键,设置为自动递增吧。


--  作者:WENFEIZHU
--  发布时间:2017/4/16 12:03:00
--  
谢谢,自己又试了下,这种情况使用datatable就OK了,table是不行的。