Foxtable(狐表)用户栏目专家坐堂 → 表格中,选择第一列,自动确定第二列的值的可选范围,并且第三列选择完后,自动确定第四列的值,该怎么写?


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

主题:表格中,选择第一列,自动确定第二列的值的可选范围,并且第三列选择完后,自动确定第四列的值,该怎么写?

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


加好友 发短信
等级:六尾狐 帖子:1218 积分:8451 威望:0 精华:0 注册:2016/2/2 21:52:00
表格中,选择第一列,自动确定第二列的值的可选范围,并且第三列选择完后,自动确定第四列的值,该怎么写?  发帖心情 Post By:2016/2/15 12:02:00 [只看该作者]


下面是写在表格中的prepareEdit事件中, 但是不知道自动确定第四列的值(第四列非下拉框,第三列选择完毕后,第四列的值是唯一的)该怎么写,写在哪个事件中,请指教。 另外:  有没有更简单的办法根据第一列确定第二列的值?
If e.IsFocusCell Then '如果是焦点单元格
    If e.Col.Name = "一级分类" Then '如果正在编辑的是一级分类
        e.Col.Combolist = DataTables("问题类型表").SQLGetComboListString("一级分类" )
    End If
End If

'列出二级分类
If e.IsFocusCell Then '如果是焦点单元格
    If e.Col.Name = "二级分类" Then '如果正在编辑的是二级分类
        e.Col.Combolist = DataTables("问题类型表").SQLGetComboListString("二级分类", "[一级分类] = '" & e.Row("一级分类") & "'") 
    End If
End If

'列出三级分类
If e.IsFocusCell Then '如果是焦点单元格
    If e.Col.Name = "三级分类" Then '如果正在编辑的是三级分类
        e.Col.Combolist = DataTables("问题类型表").SQLGetComboListString("三级分类", "[一级分类] = '" & e.Row("一级分类") & "'  And  [二级分类]='" &e.Row("二级分类")&"'"     ) 
    End If
End If

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/15 12:05:00 [只看该作者]

datacolchanged事件

 

Select Case e.DataCol.Name

    case "一级分类", "二级分类", "三级分类"

        '用sqlFind查找对应的值

End Select

 

参考

 

http://www.foxtable.com/help/topics/2916.htm

 


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


加好友 发短信
等级:六尾狐 帖子:1218 积分:8451 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2016/2/15 14:50:00 [只看该作者]

我刚开始也想过用sqlfind ,但是貌似sqlfind的结果只能查找一整行,不能查找某行中的某个字段吧?  再就是我的第四列希望在选择完前三列后自动填入,而不是用sqlgetcomboliststring得到一个下拉框,请问该怎么做?
[此贴子已经被作者于2016/2/15 14:52:13编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/15 14:52:00 [只看该作者]

查到某行,取哪一个值都可以。看2楼例子

 

e.DataRow("第四列") = 某行("列名")


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


加好友 发短信
等级:六尾狐 帖子:1218 积分:8451 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2016/2/15 15:36:00 [只看该作者]

我知道可以用e.DataRow("第四列") = 某行("列名") ,但是即使放在表的datacolchanged事件中,第四列的值仍然需要点一下才能出来。这个能不能改进下?


'''''''''''当选择完三级分类后,自动判断 责任人
    If e.DataCol.Name = "三级分类" Then '如果正在编辑的是三级分类 
       Dim dr As DataRow
       dr=DataTables("问题类型表").SQLFind("[一级分类] = '" & e.DataRow("一级分类") & "' And  [二级分类]='" &e.DataRow("二级分类")&"'  And  [三级分类]='"& e.DataRow("三级分类") &"'" )            
        e.DataRow("计算机中心责任人")    =dr("责任人")
    End If

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/15 15:38:00 [只看该作者]

那就去写ChangeEdit事件

 

If e.Col.Name = "三级分类" Then '如果正在编辑的是三级分类
    Dim dr As DataRow
    dr=DataTables("问题类型表").SQLFind("[一级分类] = '" & e.Row("一级分类") & "' And  [二级分类]='" &e.Row("二级分类")&"'  And  [三级分类]='"& e.Text &"'" )
    If dr IsNot Nothing Then
        e.Row("计算机中心责任人") = dr("责任人")
    Else
        e.Row("计算机中心责任人") = Nothing
    End If
End If


 回到顶部