Foxtable(狐表)用户栏目专家坐堂 → 想根据d5的不重复值,来查询对应的d7和d8的值 然后生成d5 对应的值 在d7 最早的时间和最晚的时间段内 d8的总值


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

主题:想根据d5的不重复值,来查询对应的d7和d8的值 然后生成d5 对应的值 在d7 最早的时间和最晚的时间段内 d8的总值

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
想根据d5的不重复值,来查询对应的d7和d8的值 然后生成d5 对应的值 在d7 最早的时间和最晚的时间段内 d8的总值  发帖心情 Post By:2021/7/21 11:23:00 [显示全部帖子]

想根据d5的不重复值,来查询对应的d7和d8的值  然后生成d5 对应的值    在d7   最早的时间和最晚的时间段内    d8的总值
麻烦老师帮忙看看

图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看
想实现效果如下:

图片点击可在新窗口打开查看此主题相关图片如下:12.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:物业费模板.xls


代码如下:
【1、能够实现根据d5的值生成对应的文件和对应记录个数的excel文件,但是里面的内容是一样,麻烦老师帮忙看看怎么解决。】
【2、麻烦老师帮忙看看怎样才能根据上述模板文件,直接生成一个所有的数据表,格式如图2。】
'''
Dim abc As String
Dim fl As String
Dim Products As List(Of String)
Products = DataTables("数据表").SQLGetValues("d5","","d5")
For Each Product As String In Products
    'output.show(Product)
    Dim Products1 As List(Of String())
    Products1 = DataTables("数据表").SQLGetValues("d7|d8","d5='" & Product & "'","d7")
    For Each Product1 As String() In Products1
        If Product.Contains("/") Then
            output.show(Product)
            abc  = Product.Replace("/","-")
            output.show(abc)
            Dim Book As New XLS.Book(ProjectPath & "Attachments\物业费模板.xls")
            Dim Sheet As XLS.Sheet = Book.Sheets(0)
            Sheet(2,9).Value = "<d5 = '" & Product  & "'>"  '写入打印条件
            Sheet(2,8).Value = Product1(1)
            fl  = ProjectPath & "Reports\" & abc & "【" & Product1(0) & "欠款" & Product1(1) & "元】.xls"
            Book.Build()
            Book.Save(fl)
        Else
            output.show(Product)
            Dim Book As New XLS.Book(ProjectPath & "Attachments\物业费模板.xls")
            Dim Sheet As XLS.Sheet = Book.Sheets(0)
            Sheet(2,9).Value = "<d5 = '" & Product  & "'>"  '写入打印条件
            Sheet(2,8).Value = Product1(1)
            fl  = ProjectPath & "Reports\" & Product & "【" & Product1(0) & "欠款" & Product1(1) & "元】.xls"
            Book.Build()
            Book.Save(fl)
        End If
    Next
Next
[此贴子已经被作者于2021/7/21 11:34:15编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)是一个d5的数据就生成一个报表文件?...  发帖心情 Post By:2021/7/21 11:38:00 [显示全部帖子]

是一个d5的数据就生成一个报表文件?

当前是一个d5生成多个d5的报表文件?因为d5有多少行记录 就生成了多少个报表文件?

图片点击可在新窗口打开查看此主题相关图片如下:12.png
图片点击可在新窗口打开查看

且指定了d7为排序字段,且字段值为字符  结果还没有排序成功  麻烦老师帮忙看看

图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看


[此贴子已经被作者于2021/7/21 11:42:09编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)Dim abc As StringDim fl As StringD...  发帖心情 Post By:2021/7/21 12:32:00 [显示全部帖子]

老师  根据你的指导  我扩展了一下:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:物业费汇总模板.xls

想在这个模板中实现
类似效果

图片点击可在新窗口打开查看此主题相关图片如下:12.png
图片点击可在新窗口打开查看



当前代码如下:根据d5不同值的统计总数,来定义增加2+i单元格的值,结果永远只有最后一行数据,麻烦老师帮忙看看  谢谢!
Dim abc As String
Dim fl As String
Dim f2 As String
Dim i As Integer
Dim Products As List(Of String)
Products = DataTables("数据表").SQLGetValues("d5","","d5")
If Products.Count > 1 Then
    For i = 0 To Products.Count - 1
        Dim Products1 As List(Of String)
        For Each Product As String In Products
            Products1 = DataTables("数据表").SQLGetValues("d7","d5='" & Product & "'","d7")
            Dim s1 As String = Products1(0)
            If Products1.Count > 1 Then
                s1 = s1 & "至" & Products1(Products1.Count - 1)
            End If
            Dim sum As Double = DataTables("数据表").SQLCompute("sum(d8)","d5='" & Product & "'")
            Dim Book As New XLS.Book(ProjectPath & "Attachments\物业费模板.xls")
            Dim Sheet As XLS.Sheet = Book.Sheets(0)
            Sheet(2,9).Value = "<d5 = '" & Product  & "'>"  '写入打印条件

            If Product.Contains("/") Then
                output.show(Product)
                abc  = Product.Replace("/","-")
                fl  = ProjectPath & "Reports\" & abc & "【" & s1 & "欠款" & sum & "元】.xls"
            Else
                
                fl  = ProjectPath & "Reports\" & Product & "【" & s1 & "欠款" & sum & "元】.xls"
                
            End If
            Book.Build()
            Book.Save(fl)
            Dim Book1 As New XLS.Book(ProjectPath & "Attachments\物业费汇总模板.xls")
            Dim Sheet1 As XLS.Sheet = Book1.Sheets(0)
                Sheet1(2+i,2).Value=Product
                Sheet1(2+i,3).Value=s1
                Sheet1(2+i,4).Value=sum
                f2=ProjectPath & "Reports\物业费汇总.xls"
            Book1.Build()
            Book1.Save(f2)
        Next
    Next
End If



代码二:【实现的效果也是只有最后一行数据  麻烦老师指导下  谢谢!】
Dim i As Integer
Dim Products As List(Of String)
Products = DataTables("数据表").SQLGetValues("d5","","d5")
If Products.Count > 1 Then
    For i = 0 To Products1.Count - 1
        Dim sum As Double = DataTables("数据表").SQLCompute("sum(d8)","d5='" & Products(i) & "'")
        Dim Products1 As List(Of String)
        Products1 = DataTables("数据表").SQLGetValues("d7","d5='" & Products(i)& "'","d7")
        Dim s1 As String = Products1(0)
        If Products1.Count > 1 Then
            s1 = s1 & "至" & Products1(Products1.Count - 1)
        End If
        Dim Book1 As New XLS.Book(ProjectPath & "Attachments\物业费汇总模板.xls")
        Dim f1 As String =ProjectPath & "Reports\物业费汇总.xls"
        output.show(i)
        output.show(s1)
        output.show(Products(i))
        output.show(sum)
        Dim Sheet1 As XLS.Sheet = Book1.Sheets(0)
        Sheet1(2,2).Value=Products(i)
        Sheet1(2,3).Value=s1
        Sheet1(2,4).Value=sum
        Book1.Build()
        Book1.Save(f1)
    Next
End If

[此贴子已经被作者于2021/7/21 13:41:34编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)使用统计功能生成下面这种统计表格,...  发帖心情 Post By:2021/7/21 13:44:00 [显示全部帖子]

有没有办法不先生成统计表  按照代码进行操作呢

Dim i As Integer
Dim Products As List(Of String)
Products = DataTables("数据表").SQLGetValues("d5","","d5")
If Products.Count > 1 Then
    For i = 0 To Products1.Count - 1
        Dim sum As Double = DataTables("数据表").SQLCompute("sum(d8)","d5='" & Products(i) & "'")
        Dim Products1 As List(Of String)
        Products1 = DataTables("数据表").SQLGetValues("d7","d5='" & Products(i)& "'","d7")
        Dim s1 As String = Products1(0)
        If Products1.Count > 1 Then
            s1 = s1 & "至" & Products1(Products1.Count - 1)
        End If
        Dim Book1 As New XLS.Book(ProjectPath & "Attachments\物业费汇总模板.xls")
        Dim f1 As String =ProjectPath & "Reports\物业费汇总.xls"
        output.show(i)
        output.show(s1)
        output.show(Products(i))
        output.show(sum)
        Dim Sheet1 As XLS.Sheet = Book1.Sheets(0)
        Sheet1(2,2).Value=Products(i)
        Sheet1(2,3).Value=s1
        Sheet1(2,4).Value=sum
        Book1.Build()
        Book1.Save(f1)
    Next
End If

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)那就不要使用模板了,直接往execl文件...  发帖心情 Post By:2021/7/21 15:57:00 [显示全部帖子]

老师  在你指导下  我将代码弄成了如下:  麻烦老师看看有没有简化的可能!谢谢!

Dim i As Integer
Dim tb As Table =  Tables("汇总表")
tb.DataTable.DeleteFor("")
Dim Products As List(Of String)
Products = DataTables("数据表").SQLGetValues("d5","","d5")

If Products.Count > 1 Then
    For i = 0 To Products.Count - 1
        Dim sum As Double = DataTables("数据表").SQLCompute("sum(d8)","d5='" & Products(i) & "'")
        Dim Products1 As List(Of String)
        Products1 = DataTables("数据表").SQLGetValues("d7","d5='" & Products(i)& "'","d7")
        Dim s1 As String = Products1(0)
        If Products1.Count > 1 Then
            s1 = s1 & "至" & Products1(Products1.Count - 1)
        End If
        
        tb.AddNew
        tb.Current("资源代码")=Products(i)
        tb.Current("时段")=s1
        tb.Current("金额")=sum
    Next
End If

With Tables("汇总表")
    .Select(0,0, .Rows.Count - 1, .Cols.Count - 1)
End With
Dim Book1 As New XLS.Book(ProjectPath & "Attachments\物业费汇总模板.xls")
Dim f1 As String =ProjectPath & "Reports\物业费汇总.xls"
Dim Sheet As XLS.Sheet = Book1.Sheets(0)
Book1.Build()
Book1.Save(f1)

另外:模板中的汇总金额  不能正常显示  老师有没有办法呢?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:物业费汇总模板.xls

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


[此贴子已经被作者于2021/7/21 15:57:10编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)参考总计的用法:http://www.foxtabl...  发帖心情 Post By:2021/7/21 16:32:00 [显示全部帖子]

老师参照帮助还是没有值  麻烦老师帮忙看看  谢谢!

[此贴子已经被作者于2021/7/21 16:53:15编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)[upload=png,1.png]UploadFile/2021-...  发帖心情 Post By:2021/7/21 17:13:00 [显示全部帖子]

老师 按照帮助  按照你的提示 都没有成功解决?

以下内容是专门发给有点蓝浏览

在窗口2中的汇总表按钮  麻烦你老师结合实例看看  谢谢!

[此贴子已经被作者于2021/7/21 17:14:31编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)参考总计的用法:http://www.foxtabl...  发帖心情 Post By:2021/7/21 18:58:00 [显示全部帖子]

有没有办法直接将d8列 由字符型转换为双精度呢?    
因为不是每次都是固定这个列为金额列
谢谢老师

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)这个表是怎么生成的?手动把所有可能...  发帖心情 Post By:2021/7/22 8:52:00 [显示全部帖子]

在表创建初期就定义为内部表   字段列从d1-d40都是字符型    后续根据需要导入的表 直接对应导入相应的字段数值   所以不确定d几是数字还是日期    有没有办法在导入的时候  用代码对应修改内部表中d几是数字型呢?


动态修改表结构

ADOXBuilder用于动态创建表和列。
ADOXBuilder对内部数据源、以及Access和SQL Server格式的外部数据源有效,对于Oracle格式的外部数据源无效。

增加列

在命令窗口执行下面的代码:

Dim Builder As New ADOXBuilder
Builder.Open() 
'打开ADOXBuilder
With 
Builder.Tables("表A")
    .AddColumn(
"日期" ,ADOXType.DateTime) '增加日期型列
    .AddColumn(
"产品" ,ADOXType.String12'增加字符型列,长度指定为12
    .AddColumn(
"客户" ,ADOXType.String20'增加字符列,长度为20
    .AddColumn(
"数量" ,ADOXType.Integer'增加整数型列
    .AddColumn(
"备注" ,ADOXType.Text) '增加备注列
End
 With
Builder.Close() 
'关闭ADOXBuilder

执行后重新打开项目,会发现表A已经增加了上述列。


如果采用帮助中的这个就需要新增后重启项目


有没有办法直接修改且不重启项目的办法呢?

[此贴子已经被作者于2021/7/22 9:03:21编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)没有办法,必须重启。还不如需要的时...  发帖心情 Post By:2021/7/22 9:13:00 [显示全部帖子]

那思路是不是做如下调整:

系统创建之初的内部数据表   作为基础表  在导入数据后   再生成一个临时表   这样就可以利用代码生成 并且获取相应的字段值及修改对应的字段类型   然后从统计表中来获取相应的数据进行使用  

这样又确保了原表结构的稳定性   又可以灵活进行字段值获取和字段类型的改变

 回到顶部
总数 11 1 2 下一页