以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何将position所在行变成current当前行?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=75653)

--  作者:ehomecd
--  发布时间:2015/10/12 13:15:00
--  [求助]如何将position所在行变成current当前行?
1.窗口组合框控件绑定到副本表的字段,
2.afterload里有定位到相关《流水号》的记录,代码是:
\'-----------精确定位行--------------------------
    If Tables("游戏个人数据_龙源宝藏").Rows.count > 0 Then
        Dim wz As Integer = Tables("游戏个人数据_龙源宝藏").FindRow("流水号 = \'" & r("流水号") & "\'")
        If wz >=0 Then
            Tables("游戏个人数据_龙源宝藏").Position = wz
        End If
    End If
    \'-----------精确定位行--------------------------

3.因为代码是把行的position定位到相关行,但相关行并不是current行
4.所以在组合框控件中无法直接输入数据,还需要点击一下相关行,或者双击组合框控件才能有效输入数据。

请问:如何将position所在的行变成current行?


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

[此贴子已经被作者于2015/10/12 13:28:52编辑过]

--  作者:大红袍
--  发布时间:2015/10/12 14:18:00
--  

1、afterLoad事件不需要写代码;

 

2、不需要做任何操作,只要绑定副本表,就一定能编辑。


--  作者:大红袍
--  发布时间:2015/10/12 14:19:00
--  

如果要定位主表,这样写

 

    If Tables("主表").Rows.count > 0 Then

        Dim wz As Integer = Tables("游戏个人数据_龙源宝藏").FindRow("流水号 = \'" &  Tables("主表").Current("流水号") & "\'")
        If wz >=0 Then
            Tables("游戏个人数据_龙源宝藏").Position = wz
        End If
    End If

--  作者:ehomecd
--  发布时间:2015/10/12 14:43:00
--  


可能一开始我的代码上下文没有发全,是像下边这样,跟版主的是一致的:

If Tables("龙源宝藏").Rows.Count > 0 Then
    Dim r As Row = Tables("龙源宝藏").current
    Dim wz As Integer = Tables("游戏个人数据_龙源宝藏").FindRow("流水号 = \'" & r("流水号") & "\'")
        If wz >=0 Then
            Tables("游戏个人数据_龙源宝藏").Position = wz
        End If
 End If

因为这个是模式窗口代码,双击主表数据“龙源宝藏”的时候打开个人数据详情,所以必须有个定位的问题,定位之后,有些数据
会需要修改,这个时候虽然定位到了position,但这个行并不是当前行,需要再点击选择这一行才能编辑,所以才有了这个疑问
如何让position定位的行成为当前行?


--  作者:大红袍
--  发布时间:2015/10/12 14:47:00
--  
不可能,例子发上来。
--  作者:ehomecd
--  发布时间:2015/10/12 15:36:00
--  
因为程序是已经在测试使用的sql数据库程序,所以没办法发例子,我刚才新做个例子发现确实没有这个问题,我的afterload里有一堆代码,会不会有影响:

Forms("游戏个人数据").Controls("TabControl1").SelectedIndex = vars("page")
Tables("游戏个人数据_龙源宝藏").AllowEdit = True


If Tables("龙源宝藏").Rows.Count > 0 Then
    Dim r As Row = Tables("龙源宝藏").current
    Tables("游戏个人数据_龙源宝藏").Filter = "学生编号 = \'"& r("学生编号") &"\'"  \'筛选印章数据
    Tables("游戏个人数据_宝藏消费").Filter = "学生编号 = \'"& r("学生编号") &"\'"  \'筛选消费数据
    Tables("游戏个人数据_成长勋章").Filter = "学生编号 = \'"& r("学生编号") &"\'"
    Tables("游戏个人数据_金币借贷").Filter = "学生编号 = \'"& r("学生编号") &"\'"
    Tables("游戏个人数据_龙源宝藏").Sort = "日期 DESC"
    Tables("游戏个人数据_宝藏消费").Sort = "日期 DESC"
    Tables("游戏个人数据_成长勋章").Sort = "日期 DESC"
    
    \'-----------精确定位行--------------------------
    If Tables("游戏个人数据_龙源宝藏").Rows.count > 0 Then
        Dim wz As Integer = Tables("游戏个人数据_龙源宝藏").FindRow("流水号 = \'" & r("流水号") & "\'")
        If wz >=0 Then
            Tables("游戏个人数据_龙源宝藏").Position = wz
        End If
    End If
    \'-----------精确定位行--------------------------
    
    Dim dr2 As DataRow = DataTables("学生信息").find("学生编号 = \'"& r("学生编号") &"\'")
    Dim zp As WinForm.PictureBox = e.Form.Controls("照片")
    zp.ImageFile = dr2("照片")
    
    
    Dim yqyz As WinForm.TextBox = e.Form.Controls("运气印章")
    Dim dqyz As WinForm.TextBox = e.Form.Controls("当前印章")
    Dim dqjb As WinForm.TextBox = e.Form.Controls("当前金币")
    Dim jblj As WinForm.TextBox = e.Form.Controls("金币累计")
    Dim xflj As WinForm.TextBox = e.Form.Controls("消费累计")
    Dim jbye As WinForm.TextBox = e.Form.Controls("金币余额")
    Dim qjtf As WinForm.TextBox = e.Form.Controls("请假退费")
    Dim tfye As WinForm.TextBox = e.Form.Controls("托费余额")
    Dim sum As Integer = 0
    Dim sum2 As Integer = 0
    
    \'--------------计算当前学生的有效印章数量----------------------
    Dim drs As List(Of DataRow) = DataTables("龙源宝藏").Select("学生编号 = \'"& r("学生编号") &"\' And 印章有效 = 1")
    If drs.Count > 0 Then
        For Each dr As DataRow In drs
            Dim yxyz As Integer = dr("路队") + dr("用餐") + dr("午休") + dr("作业") + dr("运气") + dr("惩罚") + dr("印章补差")
            sum = sum + yxyz
        Next
    End If
    dqyz.value = sum
    \'--------------计算当前学生的有效印章数量----------------------
    
    \'--------------计算当前学生的有效运气印章数量----------------------
    Dim drs2 As List(Of DataRow) = DataTables("龙源宝藏").Select("学生编号 = \'"& r("学生编号") &"\' And 运气有效 = 1")
    If drs2.Count > 0 Then
        For Each dr As DataRow In drs2
            Dim yxyq As Integer = dr("路队") + dr("用餐") + dr("午休") + dr("作业") + dr("惩罚") + dr("印章补差")
            sum2 = sum2 + yxyq
        Next
    End If
    yqyz.value = sum2
    \'--------------计算当前学生的有效运气印章数量----------------------
    
    
       
    \'--------------窗口累计金币赋值----------------
    jblj.value = dr2("累计获得金币")
    dqjb.value = dr2("金币")
    
End If
[此贴子已经被作者于2015/10/12 15:37:56编辑过]

--  作者:大红袍
--  发布时间:2015/10/12 15:40:00
--  

这个代码去掉看看。

 

Tables("游戏个人数据_龙源宝藏").Filter = "学生编号 = \'"& r("学生编号") &"\'"  \'筛选印章数据

 

不行,就分别去掉代码,看你个影响


--  作者:ehomecd
--  发布时间:2015/10/12 16:19:00
--  
好吧,我出门了,明天再一点一点试试
--  作者:ehomecd
--  发布时间:2015/10/13 10:49:00
--  
我把afterload里所有的代码都屏蔽掉了,还是那个问题,是不是窗口坏掉了
--  作者:大红袍
--  发布时间:2015/10/13 10:58:00
--  

msgbox("流水号 = \'" & r("流水号") & "\'")

 

msgbox(wz)

 

看弹出什么,如果是-1,说明就是没找到啊。