Foxtable(狐表)用户栏目专家坐堂 → 查询表中的新增行如何定位?


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

主题:查询表中的新增行如何定位?

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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17528 威望:0 精华:0 注册:2014/7/29 19:09:00
查询表中的新增行如何定位?  发帖心情 Post By:2018/11/22 19:26:00 [只看该作者]

窗口表是通过 Tables(tbn).Fill(sql,Mydata,True) 加载的sqltable,是从多个表中查询的,用false提示不支持动态sql语句,只好用true
加载后想复制一行的数据在其下一行方便修改, 保存是通过sql语句直接保存的,所以与表是否是查询表没关系
Dim tbl As Table = Tables(e.form.name & "_生产计划主表")
If tbl.Current IsNot Nothing Then
    Dim r,r1 As Row
    r = tbl.Current
    Dim p1 As Integer = tbl.position  '当前行号
    tbl.StopRedraw
    r1 = tbl.AddNew
    r1.Move(p1+1)
    r1 = tbl.InsertNew
    For Each dc As DataCol In tbl.DataTable.DataCols
        If dc.name <> "生产单号" Then
            r1(dc.name) = r(dc.name)
        End If
    Next
    tbl.ResumeRedraw   
End If
上面执行时会提示不能移动行,两行红色的代码都不行,有什么变通的办法没有?

谢谢!

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/22 19:55:00 [只看该作者]

 

必须有 _sortkey 列才能移动行的。你sql语句那里,加入一列 _sortkey 即可。

 


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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17528 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2018/11/23 9:29:00 [只看该作者]

加上_sortKey了,但是用了
Dim r,r1 As Row
   Dim p1 As Integer = tbl.position  '当前行号
    tbl.StopRedraw
    r1 = tbl.AddNew
    r1.Move(p1+1)
tbl.resumeRedraw

新增行还是会出现在最后一行,没有在当前行的下面一行?是哪里不对吗


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/23 9:36:00 [只看该作者]

你添加列以后,要给此列赋值,比如 1、2、3、4、5.....

 

这样才能正常插入行。

 


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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17528 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2018/11/23 10:00:00 [只看该作者]

能插入行,我是要新增的行显示在当前行下面一行,不要在最后面
If tbl.Current IsNot Nothing Then
    Dim r,r1 As Row
    r = tbl.Current
    Dim p1 As Integer = tbl.position  '当前行号
    tbl.StopRedraw
    r1 = tbl.AddNew
    For Each dc As DataCol In tbl.DataTable.DataCols
        If dc.name <> "生产单号"  AndAlso r.Isnull(dc.name) = False Then
            r1(dc.name) = r(dc.name)
        End If
    Next
    r1.Move(p1+1)
    tbl.ResumeRedraw 
End If
但是新增后出现在最下面了

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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/23 10:11:00 [只看该作者]

1、

 

你添加列以后,要给此列赋值,比如 1、2、3、4、5.....

 

这样才能正常插入行。

 

2、我测试没问题,请上传出错的例子上来测试

 

 


 回到顶部