Foxtable(狐表)用户栏目专家坐堂 → [求助]如果数据库中没有数据的时候添加数据会出错~求解决~好像是我的代码写的不对


  共有11767人关注过本帖树形打印复制链接

主题:[求助]如果数据库中没有数据的时候添加数据会出错~求解决~好像是我的代码写的不对

帅哥哟,离线,有人找我吗?
y653988556
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:52 积分:364 威望:0 精华:0 注册:2013/6/5 0:08:00
[求助]如果数据库中没有数据的时候添加数据会出错~求解决~好像是我的代码写的不对  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178530 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:52 积分:364 威望:0 精华:0 注册:2013/6/5 0:08:00
  发帖心情 Post By:2013/6/19 14:01:00 [只看该作者]

是不是不用if判断?
直接用tables().addnew()
然后 就直接forms().open()就行了

 回到顶部
帅哥哟,离线,有人找我吗?
y653988556
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:52 积分:364 威望:0 精华:0 注册:2013/6/5 0:08:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:52 积分:364 威望:0 精华:0 注册:2013/6/5 0:08:00
  发帖心情 Post By:2013/6/19 14:12:00 [只看该作者]

不对 好像没必要判断这句话了 应为 我好像已经禁止修改行了 所以 当前行 是不可能被修改了 那么
If .Current.DataRow.RowState = DataRowState.Unchanged Then '如果当前行未曾修改
            Tables("GongWen").AddNew()
        End If
这句话 不就是没必要有了么?
就直接
tables().addNew()
然后
forms().open()
就可以了吧

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178530 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/6/19 14:13:00 [只看该作者]

你自己最清楚你自己的需求,我只是指出报错空值的原因是没有找到当前行.

 回到顶部
帅哥哟,离线,有人找我吗?
y653988556
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:52 积分:364 威望:0 精华:0 注册:2013/6/5 0:08:00
  发帖心情 Post By:2013/6/19 14:24:00 [只看该作者]

恩 谢谢了 我自己想的话没想到 用is nothing来判断tables是不是空的 
对了 难道我们绑定数据 就必须先添加一个空行才行么?


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

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178530 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/6/19 14:25:00 [只看该作者]

那么你控件就不要绑定列,而是采取代码赋值的方式.
然后统一在点击保存的时候增加行 同时赋值.

 回到顶部
帅哥哟,离线,有人找我吗?
y653988556
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:52 积分:364 威望:0 精华:0 注册:2013/6/5 0:08:00
  发帖心情 Post By:2013/6/19 14:35:00 [只看该作者]

那是不是 我就得像
e.Form.Controls("tbSearch1-1").Text这样来获取控件的值了 
然后 在用insert into来 像数据库中写入么?

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178530 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/6/19 14:37:00 [只看该作者]

获得值是这也没错, 但是没必要一定要用SQL语句插入行

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

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

这样做也可以

 回到顶部
总数 63 1 2 3 4 5 6 7 下一页