以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  怎么实现遍历表列名并遍历赋值?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=173423)

--  作者:cnsjroom
--  发布时间:2021/11/29 10:54:00
--  怎么实现遍历表列名并遍历赋值?
怎么实现遍历表列名并遍历赋值?

当前窗体有一个table11表 来源字段列   拟用来接收选择的textbox2中的excel表中的列名值  当有来源字段列后,怎么遍历textbox2中的excel表获取表行数据对应到排序这个表中各自的列呢?
当前代码如下:(已经实现获取列并生成对应的排序临时表,怎么获取excel表数据呢?)红色部分代码该怎么写呢?
Dim r As Row
Dim t As Table = e.Form.Controls("Table11").Table     \'
Dim i As Integer
Dim Book As New XLS.Book(e.Form.Controls("TextBox2").value)
Dim Sheet As XLS.Sheet = Book.Sheets(e.sender.value)
t.StopRedraw
t.DataTable.DataRows.clear
For i = 0 To Sheet.Cols.count - 1
    If Sheet(0,i).text > ""
        r = t.AddNew()
        r("来源字段") = Sheet(0,i).Value
    End If
Next
t.ResumeRedraw

Dim Products As List(Of String)
Products = T.DataTable.GetValues("来源字段")
Dim dtb As New DataTableBuilder("排序")
For Each Product As String In Products
    If Product.Contains("交易金额") Then
        dtb.AddDef(Product, Gettype(Double), 32)
    Else
        dtb.AddDef(Product, Gettype(String), 32)
    End If
Next
dtb.Build()
MainTable=Tables("排序")

Tables("排序").stopRedraw
……
Tables("排序").ResumeRedraw
[此贴子已经被作者于2021/11/29 10:55:14编辑过]

--  作者:有点蓝
--  发布时间:2021/11/29 11:08:00
--  
之前不是做过这个功能了吗?记录"来源字段"同时记录execl表里的列索引使用啊
--  作者:cnsjroom
--  发布时间:2021/11/29 12:46:00
--  回复:(有点蓝)之前不是做过这个功能了吗?记录"来源...
已修正代码实现数据的匹配写入:

Dim r As Row
Dim t As Table = e.Form.Controls("Table11").Table    
Dim t1 As Table = e.Form.Controls("Table1").Table    \'
Dim i As Integer
Dim Book As New XLS.Book(e.Form.Controls("TextBox2").value)
Dim Sheet As XLS.Sheet = Book.Sheets(e.sender.value)
t.StopRedraw
t.DataTable.DataRows.clear
For i = 0 To Sheet.Cols.count - 1
    If Sheet(0,i).text > ""
        r = t.AddNew()
        r("来源字段") = Sheet(0,i).Value
        r("接收字段") = Sheet(0,i).Value
        r("来源列数")=i
    End If
Next
t.ResumeRedraw

Dim Products As List(Of String)
Products = T.DataTable.GetValues("来源字段")
Dim dtb As New DataTableBuilder("排序")
For Each Product As String In Products
    If Product.Contains("交易金额") Then
        dtb.AddDef(Product, Gettype(Double), 32)
    Else
        dtb.AddDef(Product, Gettype(String), 255)
    End If
Next
dtb.Build()
MainTable=Tables("排序")
Dim str As String
Dim i1,j As Integer
Tables("排序").stopRedraw
For i1 = 1 To Sheet.Rows.Count -1
    
    Dim r1 As Row = Tables("排序").addnew
    For j = 0 To t.Rows.count - 1
        Dim ss As String  =Sheet(i1,t.Rows(j)("来源列数")).Value
        r1(t.Rows(j)("接收字段")) = ss.Replace(" ", "").Trim
    Next
Next
Tables("排序").ResumeRedraw

t1.DataSource =DataTables("排序")



[此贴子已经被作者于2021/11/29 13:46:25编辑过]

--  作者:有点蓝
--  发布时间:2021/11/29 13:31:00
--  
t3.Table.DataSource =Tables("排序")
t3.Table.Sort=ss

--  作者:cnsjroom
--  发布时间:2021/11/29 14:18:00
--  回复:(有点蓝)t3.Table.DataSource =Tables("排序"...
谢谢老师的耐心指导 


根据客户和日期排序,其中日期为降序,也就是相同客户的订单,最新的订单排在前面:

Tables("订单").Sort = "客户,日期 DESC"


根据上述帮助内容,我拟c9、10、11、2四个组合进行排序,前三个任意列内容保持原有排序,c2采用降序,怎么操作呢?

下述代码操作后是c9、10、11、2四个都是降序了


Dim c7 As WinForm.ComboBox = e.Form.Controls("ComboBox7")
Dim c9 As WinForm.ComboBox = e.Form.Controls("ComboBox9")
Dim c10 As WinForm.ComboBox = e.Form.Controls("ComboBox10")
Dim c11 As WinForm.ComboBox = e.Form.Controls("ComboBox01")
Dim c2 As WinForm.ComboBox = e.Form.Controls("ComboBox2")
Dim t3 As WinForm.Table = e.Form.Controls("Table3")
t3.Table.DataSource =DataTables("排序")
Dim ss As String

If c9.text<>"" Then
    ss = c9.text & ","
End If
If  c10.text<>"" Then
    ss = ss & c10.text & ","
End If
If  c11.text<>"" Then
    ss = ss & c11.text & ","
End If
If c2.text<>"" Then
    ss = ss & c2.text
End If

If  c7.text="降序" Then
    ss=ss & " desc"
Else If c7.text="升序" And c7.text="" Then
    ss=ss & " desc"
End If
\'MessageBox.Show(ss)
Tables("排序").Sort=ss
t3.Table.Sort=ss

--  作者:有点蓝
--  发布时间:2021/11/29 14:44:00
--  
If c2.text<>"" Then
If  c7.text="降序" Then
    ss=ss & c2.text & " desc"
Else
    ss=ss  & c2.text
End If
End If
MessageBox.Show(ss)

--  作者:cnsjroom
--  发布时间:2021/11/29 15:23:00
--  回复:(有点蓝)If c2.text<>"" ThenIf  ...
老师  根据你的指导  我得到排序的数据后 我用下面的方式导出Excel

tables(“排序”).saveExcel(“c:\\\\123.XLS”,“排序”)
导出得到的数据只有十二条    实际数据大于十二条

有没有办法修正显示全部数据呢

--  作者:有点蓝
--  发布时间:2021/11/29 15:25:00
--  
如果有筛选条件,去掉
--  作者:cnsjroom
--  发布时间:2021/11/29 15:53:00
--  回复:(有点蓝)如果有筛选条件,去掉
没有设置筛选条件  直接是母本表进行排序后 将排序结果显示在table3副本表中  然后直接保存为Excel表   只有十二条数据 部分数据没有显示出来

如果用导出Excel的方式 可以导出表完整数据  但是导出得到的表格式和母本表格式不一样

--  作者:有点蓝
--  发布时间:2021/11/29 16:01:00
--  
不可能的,saveExcel只能导出tables(“排序”)看得到的数据,如果没有肯定被筛选掉了