Foxtable(狐表)用户栏目专家坐堂 → 狐表不支持纵向表转横向表?(分享LXL版主SQL纵转横代码)


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

主题:狐表不支持纵向表转横向表?(分享LXL版主SQL纵转横代码)

帅哥哟,离线,有人找我吗?
菜鸟foxtable
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2010/1/9 19:11:00 [只看该作者]

以下是引用czy在2010-1-9 19:05:00的发言:


如果没有费别的也要显示,不要用Filter就可以了。

会报错哦。


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33951 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/1/9 19:12:00 [只看该作者]

不会报错啊。


图片点击可在新窗口打开查看此主题相关图片如下:qq截图未命名.png
图片点击可在新窗口打开查看

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


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2010/1/9 19:19:00 [只看该作者]

图片点击可在新窗口打开查看我搞错了。C版看21楼。。。我现在缺少一个好的设计思路。有没有好建议?
只要能生成一行这样数据。
 
图片点击可在新窗口打开查看此主题相关图片如下:qq截图未命名.png
图片点击可在新窗口打开查看

另外有没有LXL版主的联系QQ或者邮箱?
[此贴子已经被作者于2010-1-9 19:24:07编辑过]

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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33951 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/1/9 19:29:00 [只看该作者]

SQLCrossTableBuilder方法老六用的应该也是SQL语句。
感觉你的问题SQLCrossTableBuilder应该是可以解决的,只是不明了你的实际需求。
我没有lxl版的联系方式。

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


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2010/1/9 19:59:00 [只看该作者]

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

您看看这个示例吧,我想不出设计思路,我要整体过程的思路哦,不用写代码给我(如果有时间写那更好图片点击可在新窗口打开查看)。

基础表只有三个,
第一个过程:

由表A和表B生成数据写入表C,其中

自费金额=SUM(数量*单价*参数)       统筹金额=SUM(数量*单价-自费金额)

第二个过程:红色部分需要手工输入数值)主要是这个确定按钮代码

由表A/表B/表C生成临时数据行进行打印,其中

合计=SUM(数量*单价)

报销金额=(统筹金额-起付金额)*报销比例

自付金额=合计-报销金额
[此贴子已经被作者于2010-1-9 20:02:14编辑过]

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


加好友 发短信
等级:一尾狐 帖子:400 积分:3961 威望:0 精华:0 注册:2009/4/28 7:39:00
  发帖心情 Post By:2010/1/9 20:54:00 [只看该作者]

lxl很忙电子邮件联系:
jiabiao@yeah.net


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/1/9 23:30:00 [只看该作者]

思路不一定好,但能达到要求:

 

在表B中增加: 金额、自费金额、统筹金额 三列(可以是临时列) : 这样可以不要表C了! 

for tzj as integer = 0 to tables("表B").count -1

    tables("表B")(tzj,"金额") = tables("表B")(tzj,"单价")*tables("表B")(tzj,"数量")

    tables("表B")(tzj,"自费金额") = tables("表B")(tzj,"单价")*tables("表B")(tzj,"数量")*tables("表B")(tzj,"参数")

    tables("表B")(tzj,"统筹金额") = tables("表B")(tzj,"单价")*tables("表B")(tzj,"数量")-tables("表B")(tzj,"自费金额")

next


【如果一定要表C,下面代码稍加修改也可以的】
 

表A窗口按钮:

dim b as string =DataTables("表B").GetComboListString("编码")

dim a as string = DataTables("表A").GetComboListString("费别","","序号")

Output.Show(a)

Dim dtb As New DataTableBuilder("统计")

dtb.AddDef("编码", GetType(string), 12)

for i as integer = 0 to a.split("|").length -1

    dtb.AddDef(a.split("|")(i), GetType(double), 32)

next

dtb.AddDef("合计", GetType(double), 32)                 '新增

dtb.AddDef("报销金额", GetType(double), 32)             '新增

dtb.AddDef("自付金额", GetType(double), 32)             '新增

dtb.Build()

Maintable = Tables("统计")

for ii as integer = 0 to b.split("|").length-1

    Dim r As Row = Tables("统计").Rows.AddNew()

    Tables("统计")(ii,"编码") = b.split("|")(ii)

    For c As integer = 1 To Tables("统计").Cols.Count-4

        Dim dc As DataRow

        dc = DataTables("表A").Find("费别 = '" & Tables("统计").Cols(c).name & "'")

        Dim dr As DataRow

        dr = DataTables("表B").Find( "编码 = '" & ii+1 & "' and 费别序号 = '" & dc("序号") & "'")

        if dr isnot nothing

            Tables("统计")(ii,c)= dr("金额")

        else

            Tables("统计")(ii,c)= 0      '没有的列为0

        end if

        Tables("统计")(ii,"合计") = Tables("统计")(ii,"合计") + Tables("统计")(ii,Tables("统计").Cols(c).name)

        Tables("统计")(ii,"报销金额")= 100   '**假定: (dr("统筹金额") - 起付线(不确定数))*报销比例(不确定数) = 100

        Tables("统计")(ii,"自付金额")= Tables("统计")(ii,"合计")-Tables("统计")(ii,"报销金额")

    next

next

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:狐表不支持纵向表转横向表?sql纵转横 管理项目5.rar

[此贴子已经被作者于2010-1-9 23:38:16编辑过]

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


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2010/1/10 11:50:00 [只看该作者]

以下是引用xl在2010-1-9 20:54:00的发言:

lxl很忙电子邮件联系:
jiabiao@yeah.net

谢谢XL兄图片点击可在新窗口打开查看


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


加好友 发短信 菜鸟中的老鸟
等级:七尾狐 帖子:1486 积分:10064 威望:0 精华:9 注册:2008/11/14 8:54:00
  发帖心情 Post By:2010/1/10 12:32:00 [只看该作者]

以下是引用mr725在2010-1-9 23:30:00的发言:
思路不一定好,但能达到要求:

 

在表B中增加: 金额、自费金额、统筹金额 三列(可以是临时列) : 这样可以不要表C了! 

for tzj as integer = 0 to tables("表B").count -1

    tables("表B")(tzj,"金额") = tables("表B")(tzj,"单价")*tables("表B")(tzj,"数量")

    tables("表B")(tzj,"自费金额") = tables("表B")(tzj,"单价")*tables("表B")(tzj,"数量")*tables("表B")(tzj,"参数")

    tables("表B")(tzj,"统筹金额") = tables("表B")(tzj,"单价")*tables("表B")(tzj,"数量")-tables("表B")(tzj,"自费金额")

next


【如果一定要表C,下面代码稍加修改也可以的】
 

表A窗口按钮:

dim b as string =DataTables("表B").GetComboListString("编码")

dim a as string = DataTables("表A").GetComboListString("费别","","序号")

Output.Show(a)

Dim dtb As New DataTableBuilder("统计")

dtb.AddDef("编码", GetType(string), 12)

for i as integer = 0 to a.split("|").length -1

    dtb.AddDef(a.split("|")(i), GetType(double), 32)

next

dtb.AddDef("合计", GetType(double), 32)                 '新增

dtb.AddDef("报销金额", GetType(double), 32)             '新增

dtb.AddDef("自付金额", GetType(double), 32)             '新增

dtb.Build()

Maintable = Tables("统计")

for ii as integer = 0 to b.split("|").length-1

    Dim r As Row = Tables("统计").Rows.AddNew()

    Tables("统计")(ii,"编码") = b.split("|")(ii)

    For c As integer = 1 To Tables("统计").Cols.Count-4

        Dim dc As DataRow

        dc = DataTables("表A").Find("费别 = '" & Tables("统计").Cols(c).name & "'")

        Dim dr As DataRow

        dr = DataTables("表B").Find( "编码 = '" & ii+1 & "' and 费别序号 = '" & dc("序号") & "'")

        if dr isnot nothing

            Tables("统计")(ii,c)= dr("金额")

        else

            Tables("统计")(ii,c)= 0      '没有的列为0

        end if

        Tables("统计")(ii,"合计") = Tables("统计")(ii,"合计") + Tables("统计")(ii,Tables("统计").Cols(c).name)

        Tables("统计")(ii,"报销金额")= 100   '**假定: (dr("统筹金额") - 起付线(不确定数))*报销比例(不确定数) = 100

        Tables("统计")(ii,"自付金额")= Tables("统计")(ii,"合计")-Tables("统计")(ii,"报销金额")

    next

next

 下载信息  [文件大小:22.6 KB  下载次数:0]
图片点击可在新窗口打开查看点击浏览该文件:狐表不支持纵向表转横向表?sql纵转横 管理项目5.rar

[此贴子已经被作者于2010-1-9 23:38:16编辑过]

感谢M兄提供代码。研究研究。图片点击可在新窗口打开查看


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33951 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/1/10 14:17:00 [只看该作者]

感觉这样好象有点累,每次增删临时表,何不保留这个表,这样可以省去一些不必要的操作。

 回到顶部
总数 40 上一页 1 2 3 4 下一页