Foxtable(狐表)用户栏目专家坐堂 → [求助]逻辑列的一个问题?


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

主题:[求助]逻辑列的一个问题?

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


加好友 发短信
等级:一尾狐 帖子:422 积分:2708 威望:0 精华:0 注册:2012/2/10 18:12:00
[求助]逻辑列的一个问题?  发帖心情 Post By:2014/6/2 8:49:00 [只看该作者]

上传示例,有表“实验室检查”,有二列“已申请”,"已完成",为排他性逻辑列。有窗口名“ 实验室检查 ”,有字符列 “已申请”,"已完成"。现在的问题是:在表 DataColChanging中设代码:
Select Case e.DataCol.Name
    Case "已申请","已完成"
        If e.NewValue = True Then
            Dim nms() As String = {"已申请","已完成"}
            For Each nm As String In nms
                If nm <> e.DataCol.Name AndAlso e.DataRow(nm) = True Then
                    e.DataRow(nm) = False
                End If
            Next
        End If
End Select
表“实验室检查”可实现排他性,而在窗口中的字符列 “已申请”,"已完成",不具有排他性选择。不知为何?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:逻辑列问题.zip


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


加好友 发短信
等级:狐神 帖子:4633 积分:33809 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2014/6/2 9:46:00 [只看该作者]

DataColChanged中设置以下代码,试试。

Select Case e.DataCol.Name
    Case "已申请","已完成"
        If e.NewValue = True Then
            Dim nms() As String = {"已申请","已完成"}
            For Each nm As String In nms
                If nm <> e.DataCol.Name AndAlso e.DataRow(e.DataCol) = True Then
                    e.DataRow(nm) = False
                End If
            Next
        End If
End Select


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


加好友 发短信
等级:一尾狐 帖子:422 积分:2708 威望:0 精华:0 注册:2012/2/10 18:12:00
  发帖心情 Post By:2014/6/2 15:41:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:sql201307_201406021523.zip

示例,窗口1中有"ComboBox1"和"ComboBox2"和"Button17",给 "ComboBox1"和"ComboBox2"的AfterLoad设置

Dim cmd1 As New SQLCommand
Dim dt1 As DataTable
Dim cmb1 As WinForm.ComboBox
cmd1.CommandText = "SELECT DISTINCT 姓名 From {基本资料}"
dt1 = cmd1.ExecuteReader()
cmb1 = e.Form.Controls("ComboBox2")
cmb1.ComboList= dt1.GetComboListString("姓名")


Dim cmd2 As New SQLCommand
Dim dt2 As DataTable
Dim cmb2 As WinForm.ComboBox
cmd2.CommandText = "SELECT DISTINCT 标识 From {基本资料}"
dt2 = cmd2.ExecuteReader()
cmb2 = e.Form.Controls("ComboBox1")
cmb2.ComboList= dt2.GetComboListString("标识")

"Button17"Click设置
Dim Filter As String
With e.Form.Controls("ComboBox1")
    If .Value IsNot Nothing Then
        Filter = "标识 = '" & .Value & "'"
    End If
End With
With e.Form.Controls("ComboBox2")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "姓名 = '" & .Value & "'"
    End If
End With
DataTables("基本资料").LoadFilter = filter
DataTables("基本资料").Load

然后 出现这个
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140602153736.png
图片点击可在新窗口打开查看
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140602153720.png
图片点击可在新窗口打开查看




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


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

 看了一下,你需要把ComboBox1的属性设置一下,清除它的【列表项目】设置
[此贴子已经被作者于2014-6-3 16:12:10编辑过]

 回到顶部