以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]如果数据库中没有数据的时候添加数据会出错~求解决~好像是我的代码写的不对 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=34924) |
-- 作者:y653988556 -- 发布时间:2013/6/19 13:47:00 -- [求助]如果数据库中没有数据的时候添加数据会出错~求解决~好像是我的代码写的不对 如题 用的是sqlserver外部数据库 如果之前有数据的话 是不会出错的 如果 里边没有数据会出错 增加带我我写的是 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是不是空的 对了 难道我们绑定数据 就必须先添加一个空行才行么? 像这样 我还没录入数据保存呢 就先添加一个空行 等保存完了 在显示完整数据 我知道造成 这样的结果是因为 我先做了这个 tables().addnew()事情 但是如果 不先做addnew的话 直接forms().open()的话 会 请问 怎样在点击 “增加” 按钮的时候主窗口的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 这样做也可以
|