台灣最大程式設計社群網站
線上人數
632
 
會員總數:245021
討論主題:188965
歡迎您免費加入會員
討論區列表 >> VB.NET >> textbox有一些連號 讓他自動編號
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
textbox有一些連號 讓他自動編號
價值 : 100 QP  點閱數:171 回應數:11

樓主

熊熊
門外漢
0 2
60 6
發送站內信

假設我的Textbox1有
3U204
3U205
3U293
3U294
3U295
3U296
3U297
3U298
1F967
1F968
1F969
1F979
1F981
我想讓他按下Button1之後會自動排序並且連號跟連號之間會用~取代 如果沒有連號編號跟編號會有空格 然後放到TextBox2去

小弟我想了很久還是沒想出來 想請個位大大解答

搜尋相關Tags的文章: [ 連號 ] , [ 編號 ] , [ 序列 ] , [ textbox ] , [ VB ] , [ NET ] ,
本篇文章發表於2019-10-10 00:25
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

P陳
檢舉此回應
先將您要的分階段來作
1.要排序的資料放在那 ?
A. Array 排序的話請用 Array.sort 來排即可
Array 排序
B. DataTable Array 排序的話請用 Array.sort 來排即可
Array 排序
B. DataTable 排序的話,請用 Dt1.select

2.轉出要 連號加用 ~ 的程式等您將1. 作完後再來
本篇文章回覆於2019-10-10 07:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

熊熊
檢舉此回應
有 我用Array.sort 排序的 我現在是卡在第二點
本篇文章回覆於2019-10-10 21:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

P陳
檢舉此回應
data1() 排序後的資料 只比對後三碼

參考看看,不保證對,有問題再來討論

Sno=data1(0):Lno=Sno

for ii=1 to data1.length-1
if right(data1(ii),3)- right(LNo,3) =1 then
Lno=data1(ii)
else
if sno=lno then
print Sno & " "
else
print Sno & "~" & Lno &" "
end if
sno=data1(ii)
end if
next




本篇文章回覆於2019-10-11 09:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

熊熊
檢舉此回應
我現在的CODE是如下

本篇文章回覆於2019-10-11 21:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

熊熊
檢舉此回應
If right(data1(ii), 3) - right(lno, 3) = 1 Then
在這行他跳錯誤 BC30057 Public Overloads ReadOnly Default Property Chars(index As Integer) As Char' 的引數太多。
請問我現在該怎麼解決
麻煩了 不好意思
本篇文章回覆於2019-10-11 21:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

熊熊
檢舉此回應
還是Right不代表Textbox2 因為我找不到有關Right的函數
本篇文章回覆於2019-10-11 22:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

熊熊
檢舉此回應
更正 解決 但有另一個問題我再想看看 想不出來再問您
本篇文章回覆於2019-10-11 23:01
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

HB
檢舉此回應
Right須更正為Microsoft.VisualBasic.Right
提供下列語法供參考:

本篇文章回覆於2019-10-13 15:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

熊熊
檢舉此回應
這樣子大致上是解決了 但如果我是ㄧ組連號
1N008
1N009
1N010
1N011
1N012
1N013
1N014
1N015
1N016
1N017
1N018
1N019
1N020
他會變成
1N008∼1N009
1N010∼1N019
1N020
可是我的是想變成
1N008~1N020
我把12行改成
If Asc(tmpN) - Asc(tmpS) = 1 or Asc(tmpN) - Asc(tmpS) = -9
這樣還是沒有作用
請問有甚麼解決辦法嗎
不要讓他只取尾數
本篇文章回覆於2019-10-13 23:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

P陳
檢舉此回應
重點不在12行, 是在10,11 right(???,3) 不能只用 right(???,1)
其他您要配合修改

還是不行的話,請將程式PO出來
本篇文章回覆於2019-10-14 07:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

HB
檢舉此回應
8F的語法修改如下,試試:

Line 10: Dim tmpS As Integer=val( Microsoft.VisualBasic.Right(tmpB, 2) )
Line 11: Dim tmpN As Integer=val( Microsoft.VisualBasic.Right(data1(i), 2))
Line 12: If tmpN - tmpS = 1 AndAlso
Line 13: Microsoft.VisualBasic.Left(tmpB, 3) = Microsoft.VisualBasic.Left(data1(i), 3) Then
本篇文章回覆於2019-10-14 07:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.