以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]找最大值问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=72869)

--  作者:pcxjxjhkw
--  发布时间:2015/8/7 19:02:00
--  [求助]找最大值问题
有一【文号】列,文本格式,其行如下:
平【2015】1号
平【2015】2号
平【2015】16号
平【2015】89号
平【2015】222号
平【2015】134号

        Dim max As String   \'\'记录最大文号
        Dim idx As Integer
        max = dt1.Compute("Max(文号)")
        
        MessageBox.Show(max)

如何正确找出最大文号,平【2015】222号

谢谢
[此贴子已经被作者于2015/8/7 19:28:13编辑过]

--  作者:游
--  发布时间:2015/8/7 20:01:00
--  

这么有规则的编号方式,你可以用表达式列,把它拆成年号列 和 文件号列, 再查找

 

 


--  作者:有点蓝
--  发布时间:2015/8/7 20:12:00
--  
Dim l As List(of  String) = DataTables("表A").GetValues("第二列")
Dim zuida As String
Dim t As Integer =0
For Each s As String In l
 Dim tep As String = mid(s,8)
     Dim TestStr As String
     Dim Num     As Double
     TestStr = Right$(tep, Len(tep))    
     Dim I    As Integer
     Dim J    As Integer
     Dim K    As Integer
     J = Len(TestStr)
     For I = 1 To J
         K = Asc(Mid(TestStr, I, 1))
         If K >= 48 And K <= 57 Then
             If J > I Then J = I
         End If
     Next
     If J = 0 Then
         Num = Val(TestStr)        
     ElseIf J = Len(TestStr) Then
         Num = 0
     Else
         Num = Val(Right$(TestStr, Len(TestStr) - J + 1))        
     End If 
   If Num> t Then
    t = Num
    zuida  = s
   End If
Next
msgbox(zuida)

--  作者:大红袍
--  发布时间:2015/8/7 20:15:00
--  

方法一:把数字格式化,如 平【2015】001号、平【2015】002号 这样的。

 

方法二:加一列数值列,把1、2、3这些数存储起来,直接查数值列。


--  作者:y2287958
--  发布时间:2015/8/8 6:13:00
--  
Dim val As Integer
Dim cmd As New SQLCommand
cmd.CommandText = "Select max(val(mid(mid(第一列,8),1,len(mid(第一列,8))-1))) Fr om {表A}"
val  = cmd.ExecuteScalar()
Output.Show("平【2015】" & val & "号")

--  作者:lsy
--  发布时间:2015/8/8 7:39:00
--  
最大
Dim t As Table = CurrentTable
Dim vals As List(Of String) = t.DataTable.GetValues("第一列","第一列 Is Not Null")
Dim max As Integer = 1
Dim str As String
For Each val As String In vals
    max = IIF(val.Split("】")(1).Split("号")(0) > max,val.Split("】")(1).Split("号")(0),max)
    If val.EndsWith(max & "号") Then
        str = val
    End If
Next
MessageBox.Show(str)
最小
Dim t As Table = CurrentTable
Dim vals As List(Of String) = t.DataTable.GetValues("第一列","第一列 Is Not Null")
Dim max As Integer = 1
Dim str As String
For Each val As String In vals
    max = IIF(val.Split("】")(1).Split("号")(0) < max,val.Split("】")(1).Split("号")(0),max)
    If val.EndsWith(max & "号") Then
        str = val
    End If
Next
MessageBox.Show(str)

--  作者:pcxjxjhkw
--  发布时间:2015/8/8 9:28:00
--  
老师们,我再描述详细一些。 文号列保存了不同类的文号 
 平[2015]7号 
平发[2015]27号 
平[2015]15号 
平[[2015]26 
平2015-77号 

 找出:平[2015]?号,这类文号的最大号。 谢谢!
[此贴子已经被作者于2015/8/8 9:46:32编辑过]

--  作者:有点蓝
--  发布时间:2015/8/8 9:32:00
--  
上面的方法都行啊,你把表名和列名换成你的在命令框调试啊
--  作者:pcxjxjhkw
--  发布时间:2015/8/8 9:48:00
--  
文号格式是不一样的


--  作者:pcxjxjhkw
--  发布时间:2015/8/8 9:49:00
--  
有多种不同类别的文号