以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教表ABC输出顺序问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=187403)

--  作者:lanbor
--  发布时间:2023/7/14 20:51:00
--  请教表ABC输出顺序问题
请教专家关于A,B,C表输出排序问题,数据表结构如下图:


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

请教:
下列语句需要如何编写?
PO_NO =用户选择的订单号
才能保证,从表C输出的记录,被表B的记录输出先后顺序控制。
就是若:表B里记录输出顺序是:机种B,机种A,机种C,  那么表C就应当输出:机种B明细,机种A明细,机种C明细

 ‘book.AddDa taTable("表A", "GX_DBS", "Select * f rom {表A} where quot_code= \'" & PO_NO & "\'") \'添加父表
 \'book.AddDa taTable("表B", "GX_DBS", "Select * f rom {表B} where quot_id=  \'" & PO_NO  & "\' order by  [FID-B,序号]") \'添加子表
 \'book.AddRe lation("表A", "FID", "表B", "FID") \'建立关联
 \'book.AddDa taTable("表C", "GX_DBS", "Select * f rom {表C} where quot_id=  \'" & PO_NO & "\' ") \'添加子表
 \'book.AddRe lation("表A", "订单号", "表C", "订单号") \'建立关联

感谢感谢!
[此贴子已经被作者于2023/7/14 20:51:26编辑过]

--  作者:有点蓝
--  发布时间:2023/7/15 8:53:00
--  
请把模板文件发上来
--  作者:lanbor
--  发布时间:2023/7/15 9:46:00
--  请教ABC表输出顺序
以下输出代码,附件为输出模板

\'If Vars("quot_code") = "" Or Vars("quot_code")=Nothing Then
\'    messagebox.show("请选定报价单后再点打印!","提示:")
\'    Return
\'Else
\'    Dim s1, fl, f2 As String
\'    Vars("_Str01") = "综合信息"
\'    If Vars("_Print_staute") = "导出电子表" Then
\'        fl = ProjectPath & "Reports\\" & Vars("quot_code") & "独立解决方案.xls"
\'        f2 = "Gooxi_Quote_CH.xls"
\'    Else
\'        fl = ProjectPath & "Reports\\" & Vars("quot_code") & "StandaloneSolutions.xls"
\'        f2 = "Gooxi_Quote_EN.xls"
\'    End If 
\'    Dim Book As New XLS.Book(ProjectPath & "Attachments\\" & f2)
    
\'    Dim Style As Xls.Style = book.NewStyle
\'    Style.BackColor = Color.Red
\'    book.AddDat aTable("Product_Order1", "GX_DBS", "Select * fr om {Product_Order} where quot_code= \'" & Vars("quot_code") & "\'") \'添加报价主记录
\'--------添加报价单机种记录
\'    book.AddDat aTable("Product_amount1", "GX_DBS", "Select * fr om {Product_Amount} where quot_id=  \'" & Vars("quot_code") & "\' order by  [qu_SN]") 
\'    book.AddRe lation("Product_Order1", "quot_code", "Product_amount1", "quot_id") \'建立关联
\'---------添加各机种包括的配件明细
\'    book.AddDat aTable("Product_Entry1", "GX_DBS", "Select * fr om {Product_Entry} where quot_id=  \'" & Vars("quot_code") & "\' and [piecewise] >" & 0 & " order by line_Identify,sequence") 
\'    book.AddRe lation("Product_Order1", "quot_code", "Product_Entry1", "quot_id") \'建立关联
\'    Book.Build() \'生成细节区
\'    Book.Save(fl) \'保存工作簿
\'    Dim Proc As New Process \'打开工作簿
\'    Proc.File = fl
\'    Proc.Start()
\'End If
[此贴子已经被作者于2023/7/15 10:49:27编辑过]

--  作者:有点蓝
--  发布时间:2023/7/15 10:44:00
--  
应该把表B和表C进行关联,把表B的序号引入表C,然后在表C使用序号排序

比如
book.AddDa taTable("表C", "GX_DBS", "Select *,(select top 1 序号 from 表B as b where b.FID-B=c.FID-B) as 序号 f rom {表C} as c where quot_id=  \'" & PO_NO & "\' ") \'添加子表

然后在模板里把FID-B,序号作为排序条件:http://www.foxtable.com/webhelp/topics/1397.htm
<product_Entry1,FID-B|序号>

--  作者:lanbor
--  发布时间:2023/7/15 10:48:00
--  哦,明白了
感谢专家指教!