以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  表格中,选择第一列,自动确定第二列的值的可选范围,并且第三列选择完后,自动确定第四列的值,该怎么写?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=80972)

--  作者:ycwk
--  发布时间: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

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

--  作者:大红袍
--  发布时间:2016/2/15 14:52:00
--  

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

 

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


--  作者:ycwk
--  发布时间: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

--  作者:大红袍
--  发布时间: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