以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]如果数据库中没有数据的时候添加数据会出错~求解决~好像是我的代码写的不对  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=34924)

--  作者:y653988556
--  发布时间:2013/6/19 13:47:00
--  [求助]如果数据库中没有数据的时候添加数据会出错~求解决~好像是我的代码写的不对
如题 用的是sqlserver外部数据库 如果之前有数据的话 是不会出错的

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

如果 里边没有数据会出错

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

增加带我我写的是
With Tables("GongWen")
    If .Current.DataRow.RowState = DataRowState.Unchanged Then \'如果当前行未曾修改
        Tables("GongWen").AddNew()
    End If
End With

Forms("新增公文").Open()

麻烦大伙帮忙指点一下
谢谢了

--  作者:Bin
--  发布时间:2013/6/19 14:01:00
--  
With Tables("GongWen")
     If .Current  isnot nothing then
    If .Current.DataRow.RowState = DataRowState.Unchanged Then \'如果当前行未曾修改
        Tables("GongWen").AddNew()
    End If
   end if
End With
[此贴子已经被作者于2013-6-19 14:01:07编辑过]

--  作者:y653988556
--  发布时间:2013/6/19 14:01:00
--  
是不是不用if判断?
直接用tables().addnew()
然后 就直接forms().open()就行了

--  作者:y653988556
--  发布时间:2013/6/19 14:10:00
--  
这样好像不对吧?
isnot nothing 不就是不是空的么?如果 不是空的 那就不执行下边的addrow的语句了
但是我现在里边肯定是空的 是不是应该这样修改一下

With Tables("GongWen")
    If .Current  Is Nothing Then
Tables("GongWen").AddNew()
    Else
        If .Current.DataRow.RowState = DataRowState.Unchanged Then \'如果当前行未曾修改
            Tables("GongWen").AddNew()
        End If
    End If
End With

第一个if是判断现在tables是不是空的 如果是空的 就直接加一个空行 然后 打开“增加”窗口
如果不是空的的 那判断当前行 是不是被修改了 如果没有修改 就addnew() 然后再打开“增加”窗口

--  作者:y653988556
--  发布时间:2013/6/19 14:12:00
--  
不对 好像没必要判断这句话了 应为 我好像已经禁止修改行了 所以 当前行 是不可能被修改了 那么
If .Current.DataRow.RowState = DataRowState.Unchanged Then \'如果当前行未曾修改
            Tables("GongWen").AddNew()
        End If
这句话 不就是没必要有了么?
就直接
tables().addNew()
然后
forms().open()
就可以了吧

--  作者:Bin
--  发布时间:2013/6/19 14:13:00
--  
你自己最清楚你自己的需求,我只是指出报错空值的原因是没有找到当前行.
--  作者:y653988556
--  发布时间:2013/6/19 14:24:00
--  
恩 谢谢了 我自己想的话没想到 用is nothing来判断tables是不是空的 
对了 难道我们绑定数据 就必须先添加一个空行才行么?


图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看

像这样
我还没录入数据保存呢 就先添加一个空行 等保存完了 在显示完整数据
我知道造成 这样的结果是因为 我先做了这个
tables().addnew()事情 
但是如果 不先做addnew的话 直接forms().open()的话 会

图片点击可在新窗口打开查看此主题相关图片如下:4.png
图片点击可在新窗口打开查看
这样 因为tables总是默认选中一行 我要是打开窗口的话 是绑定一个表的 所以 就会 类似于修改的命令 
请问 怎样在点击 “增加” 按钮的时候主窗口的tables中不添加一个新的空行 而是等我添加完成以后点击“保存”的时候一起在tables中添加完整的数据

--  作者:Bin
--  发布时间:2013/6/19 14:25:00
--  
那么你控件就不要绑定列,而是采取代码赋值的方式.
然后统一在点击保存的时候增加行 同时赋值.

--  作者:y653988556
--  发布时间:2013/6/19 14:35:00
--  
那是不是 我就得像
e.Form.Controls("tbSearch1-1").Text这样来获取控件的值了 
然后 在用insert into来 像数据库中写入么?

--  作者:Bin
--  发布时间:2013/6/19 14:37:00
--  
获得值是这也没错, 但是没必要一定要用SQL语句插入行

dim dr as datarow = datatables("XX").addnew

dr("第一列")=e.Form.Controls("tbSearch1-1").Text

这样做也可以