PDA

View Full Version : یکسان نمودن سمت راست شماره سند(با شماره های متغیر)



viper2009
چهارشنبه 09 فروردین 1391, 18:19 عصر
با سلام
عید همه مبارک

من می خواسم شماره اسناد را بر اساس شماره سند صعودی و یا نزولی مرتب کنم
اما شماره سندهای من متغیر و نا هماهنگ اند بصورت زیر



300/14/2384/91/151
و یا
12/22-5581/90/3146


من می خواهم که کاربر وقتی این شماره اسناد را در تکست باکس وارد می کند ، بطور اتوماتیک شماره انتهای سند شش رقمه شود و برای شماره های کمتر از شش رقم، پشت شماره صفر جایگزین شود.
مثل زیر



300/14/2384/91/000151
و یا
12/22-5581/90/003146


خودم در فرمم دوتا تکست باکس گذاشتم برای ابتدای شماره (که هرچه باشد) و یک تکست باکس برای انتهای شماره که با استفاده از دستور TextBox1.Text.PadLeft در رویداد Validated تکست باکس این مشکل حل می شود.
و برای ابتدای شماره از کد زیر

TextBox1.Text = Microsoft.VisualBasic.Right(TestString, 6)
Dim txtReverse1 As String = StrReverse(TestString)
Dim txtRemove As String = txtReverse1.Remove(1, 7)
TextBox2.Text = StrReverse(txtRemove) & "/"

استفاده کردم

اما وقتی خودم را در نقش کاربر قرار می دهم می بینم که برای ورود اطلاعات خیلی کار سخت میشه.
حالا از دوستان می خوام که آیا میشه در یک تکست باکس این خاصیت ها را اعمال کرد

نمی دونم آیا دستور Split در اینجا کمکی می کنه که بتونم انتهای شماره را پیدا و اصلاح کنم؟

ROSTAM2
چهارشنبه 09 فروردین 1391, 18:56 عصر
برای وارد کردن اینجور متن ها از MaskedTextBox استفاده می کنند

viper2009
چهارشنبه 09 فروردین 1391, 22:51 عصر
برای وارد کردن اینجور متن ها از MaskedTextBox استفاده می کنند
بله در صورت یکسان بودن شماره اسناد، که متاسفانه شماره اسناد من متفاوت هستند
مثلاً
116/1/1325/5566/151
و دیگری
116/100/1243/6641/12430
و بعدی
1400/23-1452/90/24130
و سایر شماره های دیگر

mansour01
چهارشنبه 09 فروردین 1391, 23:45 عصر
هر رشته رو با دستور split به رشته های جدا تقسیم کنید ، طول آخرین رشته رو دریافت کنید در صورتی که کمتر از 6 بود تغییرات رو اعمال کنید و سپس رشته های رو با تم اصلی به هم پیوند بدید .
شیوه کار به خودتون بستگی داره ، از آرایه ها استفاده می کنید یا هر جور دیگر .
می تونید برای تقسیم از split با دستور for تقسیم بندی خودتون رو راحت تر کنید ، در یک آرایه یا رشته های جدا قرار بدید .
موفق باشید

arash020
پنج شنبه 10 فروردین 1391, 00:17 صبح
سلام
من اگه جات بودم به تعداد اعداد بین " / " تا textbox میذارم که کاربر با کلید enter بینشون حرکت کنه
بعد کد اضافه کذدن صفر و ... رو برای اون قسمت از شماره مینوشتم و آخرشم همرو میریختم توی یه متغیر یا textbox به همراه "/" های بین.
برای استفاده آماده.

موفق باشی

viper2009
پنج شنبه 10 فروردین 1391, 01:46 صبح
در صورتی که تعداد "/" برای هر شماره سندی برابر بود راه شما درست بود ولی شماره اسناد من شاید یکی سه تا "/" داشته باشه و دیگری چهار تا و ضمناً بعضی هاشون هم بینشون "-" هست
فعلاً نظر آقای mansour01 را اجراییش می کنم فکر کنم بهتر جواب بگیرم فقط چطور انتهاشو پیدا کنم

mansour01
پنج شنبه 10 فروردین 1391, 09:33 صبح
در صورتی که تعداد "/" برای هر شماره سندی برابر بود راه شما درست بود ولی شماره اسناد من شاید یکی سه تا "/" داشته باشه و دیگری چهار تا و ضمناً بعضی هاشون هم بینشون "-" هست
فعلاً نظر آقای mansour01 را اجراییش می کنم فکر کنم بهتر جواب بگیرم فقط چطور انتهاشو پیدا کنم
اصولا هر کسی کار خودش رو خودش باید انجام بده ، فقط برای روشن تر شدن قضیه من این تابع رو نوشتم ، اصول و غیره و .... فقط یک مثاله ! هر جور راحت تری و کوتاه ترش رو میتونی انجام بدی ، باید انجام بدی . کار هندلینگ ارور ها هم خودت میتونی اضافه کنی ، به هر صورت جوری نوشتم بالا پایینش بزنی ، حتی نول هم بدی جواب بر می گردونه :
Private Function SpliterCell_Call(ByVal strInput As String)
Dim strArray As New ArrayList
Dim x, i As Integer
Dim strAnalayze, strOutput As String
Dim parts As String() = strInput.Split(New Char() {"/"})
Dim part As String
For Each part In parts
strArray.Add(part)
Next
strAnalayze = strArray.Item(strArray.Count - 1)
If strAnalayze.Length < 6 Then
For i = 1 To 6 - strAnalayze.Length
strAnalayze = "0" & strAnalayze
Next
For x = 0 To strArray.Count - 2
strOutput = strOutput & strArray.Item(x) & "/"
Next
strInput = strOutput & strAnalayze
Else
strInput = strInput
End If

Return strInput
End Function
فراخونی هم که ماشالله خودت استادی . مثال برای سایر دوستان :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox2.Text = SpliterCell_Call(TextBox1.Text)
End Sub
موفق باشی