Foxtable(狐表)用户栏目专家坐堂 → [求助]从外部表中首拼音查询


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

主题:[求助]从外部表中首拼音查询

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


加好友 发短信
等级:童狐 帖子:298 积分:4225 威望:0 精华:0 注册:2009/11/4 16:30:00
[求助]从外部表中首拼音查询  发帖心情 Post By:2013/11/22 16:42:00 [只看该作者]

先从外部表提取数据生成临时表"dt"

再从临时表中进行某几列的首拼音查询.

下面代码得不到正确结果:

Dim Ts As String() = {"收款单位","付款单位"}
Dim t As Table = Tables("窗口1_table1")
e.Form.controls("table1").Visible = True
e.Form.controls("table2").Visible = False
Dim dtp1 As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker1")
Dim dtp2 As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker2")
Dim v1 As Date = dtp1.value
Dim v2 As Date = dtp2.value
Dim sql,st,Lm,py,sul As String
Dim Ls As new List(of Integer)
Dim dt As DataTable
Dim cmd As New SQLCommand
cmd.C
cmd.CommandText = "SELECT * From {表A} where 凭证日期 >= #" & v1 & "# And 凭证日期 <= #" & v2 & "#"
dt = cmd.ExecuteReader( )
Dim sw As String = e.sender.text
st = "'%" & sw & "%'"
If sw > "" Then
    For Each Lm In Ts
        For Each dr As DataRow In dt.dataRows '此处 dt 换成内部表则没问题.
            py = GetPy(dr(Lm),True)
            If dr(Lm).Indexof(sw)> -1 OrElse py.Indexof(sw)> -1 Then
                If Ls.Contains(dr("序号")) = False Then
                    Ls.add(dr("序号"))
                End If
            End If
        Next
    Next
    If Ls.count > 0 Then
        For Each n As Integer In Ls
            sql+ = "," & n
        Next
        sql = "[序号] in (" & sql.trim(",") & ")"
        sul+ = "select 序号,收款单位,付款单位 from (select * from {表A} where" & sql & ")"
        sul+ = "where  收款单位 like" & st & " or 付款单位 like" & st & ""
        t.fill(sul,"yh",True)
        t.AutoSizeCols()
    End If
Else
    If t.Rows.count > 0 Then
        With t
            For i As Integer = .Rows.count-1 To 0 Step -1
                .Rows(i).Delete()
            Next
        End With
    End If
End If

相似的代码在内部表中查询没问题.求指教.

 

[此贴子已经被作者于2013-11-22 16:45:11编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/11/22 16:50:00 [只看该作者]

SQL数据源的话,日期部分应该使用单引号,而不是井号

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


加好友 发短信
等级:童狐 帖子:298 积分:4225 威望:0 精华:0 注册:2009/11/4 16:30:00
  发帖心情 Post By:2013/11/22 16:55:00 [只看该作者]

回Bin老师的话,是access数据源


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/11/22 16:56:00 [只看该作者]

上例子吧,纸上不谈兵!

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2013/11/22 17:20:00 [只看该作者]

GetPy是狐表的取拼音函数,要从外部数据源取拼音,就自己先寻找或编写相关数据库的取拼音函数。

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


加好友 发短信
等级:童狐 帖子:298 积分:4225 威望:0 精华:0 注册:2009/11/4 16:30:00
  发帖心情 Post By:2013/11/22 18:40:00 [只看该作者]

以下是引用lsy在2013-11-22 17:20:00的发言:
GetPy是狐表的取拼音函数,要从外部数据源取拼音,就自己先寻找或编写相关数据库的取拼音函数。

ExecuteReader 生成的临时表不支持GetPy函数?

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

[此贴子已经被作者于2013-11-22 18:57:00编辑过]

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


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

你的代码没有问题

Dim Ts As String() = {"产品","客户"}
Dim t As Table = Tables("窗口1_table1")
Dim dtp1 As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker1")
Dim dtp2 As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker2")
Dim v1 As Date = dtp1.value
Dim v2 As Date = dtp2.value
Dim sql,st,Lm,py,sul As String
Dim Ls As new List(of Integer)
Dim dt As DataTable
Dim cmd As New SQLCommand
cmd.C
cmd.CommandText = "SELECT * From {订单} where 日期 >= #" & v1 & "# And 日期 <= #" & v2 & "#"
dt = cmd.ExecuteReader( )
Dim sw As String = e.sender.text
st = "'%" & sw & "%'"
If sw > "" Then
    For Each Lm In Ts
        For Each dr As DataRow In dt.dataRows
            py = GetPy(dr(lm),True)
            If dr(Lm).Indexof(sw.ToUpper)> -1 OrElse py.Indexof(sw.ToUpper)> -1 Then
                If Ls.Contains(dr("_Identify")) = False Then
                    Ls.add(dr("_Identify"))
                End If
            End If
        Next
    Next
    If Ls.count > 0 Then
        For Each n As Integer In Ls
            sql+ = "," & n
        Next
        sql = "[_Identify] in (" & sql.trim(",") & ")"
        sul+ = "select 产品,客户,雇员,单价,数量,日期 from (Select * from {订单} where" & sql & ")"
        t.fill(sul,"yh",True)
        t.AutoSizeCols()
    Else If t.Rows.count > 0 Then
        With t
            For i As Integer = .Rows.count-1 To 0 Step -1
                .Rows(i).Delete()
            Next
        End With
    End If
End If
[此贴子已经被作者于2013-11-22 19:26:44编辑过]

 回到顶部