以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  求助可不可以从两个表中取列表数据?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=15202)

--  作者:ddlzq
--  发布时间:2011/12/15 16:56:00
--  求助可不可以从两个表中取列表数据?

各位老师:

      好久不见,可不可以从两个SQL数据库表中获取两个表中字段组合成一个列表?目前我只会一个。在同一个表中可以,但SQL表就不行了。

同一个表我用的是

If e.IsFocusCell Then
    If e.Col.Name = "姓名" Then
       e.Col.Combolist = DataTables("海外人员").GetComboListString("姓名") & "|" &  DataTables("国内人员").GetComboListString("姓名")
    End If
End If

 

If e.IsFocusCell Then
    If e.Col.Name = "姓名" Then
    Dim cmd As New SQLCommand
    Dim dt As DataTable
    cmd.C
    cmd.CommandText = "SELECT DISTINCT 姓名 From {海外人员}"
    dt = cmd.ExecuteReader
    Tables("订单表").Cols("业务员").Combolist = dt.GetComboListString("姓名")
    End If
End If


--  作者:狐狸爸爸
--  发布时间:2011/12/15 17:23:00
--  

参考这里头的Union运算符:

 

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

 

 


--  作者:布莱克朱
--  发布时间:2011/12/15 18:58:00
--  

If e.IsFocusCell Then
If e.Col.Name = "姓名" Then
Dim cmd As New SQLCommand

Dim cmd1 As New SQLCommand
Dim dt As DataTable

Dim dt1 As DataTable
cmd.C

cmd1.C
cmd.CommandText = "SELECT DISTINCT 姓名 From {海外人员}"

cmd1.CommandText = "SELECT DISTINCT 姓名 From {国内人员}"
dt = cmd.ExecuteReader

dt1 = cmd1.ExecuteReader
Tables("订单表").Cols("业务员").Combolist = dt.GetComboListString("姓名")& "|" & Dt1.GetComboListString("姓名")
End If
End If

 

笨办法


--  作者:ddlzq
--  发布时间:2011/12/19 9:16:00
--  

If e.IsFocusCell Then
    If e.Col.Name = "姓名" Then
        Dim cmd As New SQLCommand
        Dim dt As DataTable
        cmd.C
        cmd.CommandText = "Select 业务员 FROM {国外业务} UNION SELECT 业务员 FROM {国内业务} "
        dt = cmd.ExecuteReader
        e.Col.Combolist = dt.GetComboListString("业务员")
 
    End If
    End If

 

感谢狐爸,使用以上代码,从两个表获取到了列表。另还有个问题需请教

我想控制从列表选择出列表指定值后,会控制从两表对应人员带出身份证号,我用的是

DataColchanged事件

 

If e.DataCol.Name = "姓名" Then
    Dim cmd As New SQLCommand
    Dim dt As DataTable
    Dim dr As DataRow = e.DataRow
    cmd.C
    cmd.CommandText = "SELECT * From {国内业务} Where [业务员] = \'" & dr("基础信息_姓名") & "\'" 

    dt = cmd.ExecuteReader
    If dt.DataRows.Count > 0 Then
        dr("基础信息_姓名") = dt.DataRows(0)("业务员") 

        dr("基础信息_身份证号") = dt.DataRows(0)("身份证号")
      Else
        dr("基础信息_姓名") = Nothing
        dr("基础信息_身份证号") = Nothing

End If
End If

 

这是一个表可以控制非列表列出值不可填写,那么,如何控制从两个表也有这个效果呢?请指教。


--  作者:ddlzq
--  发布时间:2011/12/19 11:29:00
--  

哈哈 研究出来了!

If e.DataCol.Name = "姓名" Then
Dim cmd As New SQLCommand
Dim dt As DataTable
Dim dr As DataRow = e.DataRow
cmd.C
cmd.CommandText = "SELECT 身份证号 From {国内业务} Where [业务员] = \'" & dr("基础信息_姓名") & "\' UNION SELECT 身份证号 From {国外业务} Where [业务员] = \'" & dr("基础信息_姓名") & "\'"

dt = cmd.ExecuteReader
If dt.DataRows.Count > 0 Then
dr("基础信息_姓名") = dt.DataRows(0)("业务员")

dr("基础信息_身份证号") = dt.DataRows(0)("身份证号")
Else
dr("基础信息_姓名") = Nothing
dr("基础信息_身份证号") = Nothing

End If
End If