Foxtable(狐表)用户栏目专家坐堂 → [求助]临时表问题,还没搞定


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

主题:[求助]临时表问题,还没搞定

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


加好友 发短信
等级:婴狐 帖子:39 积分:420 威望:0 精华:0 注册:2011/11/19 16:31:00
[求助]临时表问题,还没搞定  发帖心情 Post By:2011/12/28 12:49:00 [只看该作者]

根据记录产生临时表,通过设置变量,按日期筛选以后,这个表弄了一整天一直搞不定,还请高手继续指导下,谢谢!

 

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


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57590 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2011/12/28 14:14:00 [只看该作者]

Dim dtb As New DataTableBuilder("表F")
dtb.AddDef("车号", Gettype(String), 32)
dtb.Build()
Dim Vals As List(Of String) = DataTables("表A").GetUniqueValues("[日期] Is Not Null","日期")
For Each Val As String In Vals
    Val = Val.Replace(" 0:00:00","")
    If DataTables("表F").DataCols.Contains(Val) = False Then
        DataTables("表F").DataCols.Add(Val, Gettype(String), 32)
    End If
Next
Dim f As New Filler
f.SourceTable = DataTables("表A") '指定数据来源
f.SourceCols = "车号" '指定数据来源列
f.DataTable = DataTables("表F") '指定数据接收表
f.DataCols = "车号" '指定数据接收列
f.ExcludeExistValue =True
f.ExcludeNullValue =True
f.Distinct =True
f.Append =True
f.Fill()
Dim drs As List(of DataRow)
For Each nr As DataRow In DataTables("表F").DataRows
    For Each val As String In Vals
        Val = Val.Replace(" 0:00:00","")
        drs = DataTables("表A").Select("车号 = '" & nr("车号") & "' And 日期 = #" & Val & "#")
        nr(val) = ""
        For Each dr As DataRow In drs
            nr(val) = nr(val) & dr("行程") & ","
        Next
        nr(val) = nr(val).Trim(",")
    Next
Next
MainTable = Tables("表F")

 

 

  是不是这样的?但是这个直接用按钮生成的.


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/28 14:27:00 [只看该作者]

Dim Filter As String
With e.Form.Controls("ComboBox1")
    If .value IsNot Nothing
        filter= "车号  = '" & .Value & "'"
    End If
End With
With e.Form.Controls("DateTimePicker1")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 >= #" & .Value & "#"
    End If
End With
With e.Form.Controls("DateTimePicker2")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 <= #" & .Value & "#"
    End If
End With

'条件已经合成了,下面的自己写吧。


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


加好友 发短信
等级:婴狐 帖子:39 积分:420 威望:0 精华:0 注册:2011/11/19 16:31:00
  发帖心情 Post By:2011/12/28 15:51:00 [只看该作者]

我可能没说清楚要求,现在的问题是,筛选以后,记录是可以不产生的,但是那个日期列还会生成,我需要的效果是如果筛选几天的日期,只产生几个日期列。否则如果有了几年的数据,那会产生成百上千的列。

[此贴子已经被作者于2011-12-28 15:51:42编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/28 16:08:00 [只看该作者]

如果没有选择日期,那根据哪些天来生成表?

[此贴子已经被作者于2011-12-28 16:08:13编辑过]

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


加好友 发短信
等级:婴狐 帖子:39 积分:420 威望:0 精华:0 注册:2011/11/19 16:31:00
  发帖心情 Post By:2011/12/28 16:23:00 [只看该作者]

以下是引用狐狸爸爸在2011-12-28 16:08:00的发言:

如果没有选择日期,那根据哪些天来生成表?

[此贴子已经被作者于2011-12-28 16:08:13编辑过]

1、如果不选择日期,就生成现在这个样子的表,不过这个只能在测试时用,真正使用的时候是不现实的

2、现在的问题是,如果我先筛选出12月1日-2日的数据,但产生的表有1日、2日、3日三列,其中1日、2日两个列有记录。那么我有1年的数据的话,如果我要查看一个星期,就会产生365个列,其中7个列有数据。


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/28 16:27:00 [只看该作者]

以下是引用游山玩水在2011-12-28 16:23:00的发言:

如果我要查看一个星期,就会产生365个列,其中7个列有数据。

 

这怎么可能,你获得不重复日期的时候,加上前面3楼生成的条件,问题不就解决了吗?

GetUniqueValues是可以设置条件的。

 

 


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/12/28 16:29:00 [只看该作者]

Dim Filter As String
With e.Form.Controls("ComboBox1")
    If .value IsNot Nothing
        filter= "车号  = '" & .Value & "'"
    End If
End With
With e.Form.Controls("DateTimePicker1")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 >= #" & .Value & "#"
    End If
End With
With e.Form.Controls("DateTimePicker2")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "日期 <= #" & .Value & "#"
    End If
End With
Dim dtb As New DataTableBuilder("表F")
dtb.AddDef("车号", Gettype(String), 32)
For Each v As String In DataTables("表A").GetUniqueValues(Filter,"日期")
    Dim d As Date = v
    dtb.AddDef(format(d,"yyyy-MM-dd"), Gettype(String))
Next
dtb.Build()

 回到顶部
帅哥哟,离线,有人找我吗?
游山玩水
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:39 积分:420 威望:0 精华:0 注册:2011/11/19 16:31:00
  发帖心情 Post By:2011/12/28 16:51:00 [只看该作者]

终于搞定了,感谢狐爸,布莱克朱两位老师热情指导!我要好好研究下。


 回到顶部