View Full Version : جلوگیری از ورود داده تکراری در تکست باکس
  
hamalous
چهارشنبه 08 مرداد 1393, 00:20 صبح
سلام 
من یه سورس دارم که با زدن کلید ایجاد عدد توی تکست باکس 1 رو درون یه عبارت ثابت قرار داده و درون تکست باکس 2 نمایش میده حالا من می خوام اگه عدد نوشته شده توی تکست باکس 1 تکراری باشه پیام بده که این داده قبلا وارد شده من از تابع instrاستفاده کردم ولی مشکل اینه که هرداده ایکه واردمی کنم چه تکراری باشه چه نباشه 
این پیام رو نمایش میده مشکل کد من کجاست ؟ لطفا در این زمینه راهنمایی نمایید ممنون من سورس را ضمیمه کردم
ahmad abdoli
چهارشنبه 08 مرداد 1393, 02:09 صبح
سلام
به جای تکس باکس دوم از list box استفاده کن و بجای این کد
    For i = 0 To UBound(r)
        If InStr(Text2.Text, r(i)) = 0 Then MsgBox "Çíä ÏÇÏå ʘÑÇÑí ãí ÈÇÔÏ"
        Exit Sub
    Next
Text2 = Text2 + q + vbCrLf
از این کد استفاده کن
    If List1.ListCount > 0 Then
    For i = 0 To List1.ListCount
        If Mid(List1.List(i), InStr(List1.List(i), "e=") + 2, 1) = Text1.Text Then
        MsgBox "Çíä ÏÇÏå ʘÑÇÑí ãí ÈÇÔÏ"
        Exit Sub
        End If
    Next
    End If
List1.AddItem (q)
hamalous
چهارشنبه 08 مرداد 1393, 02:47 صبح
ممنون ولی بنا به دلایلی نمی تونم از listbox استفاده کنم و باید از textbox استفاده کنم
just4froum
چهارشنبه 08 مرداد 1393, 03:39 صبح
با سلام :
این ویرایش کد خودتون هست :
Private Sub Command1_Click()
Dim q As String
Dim r() As String
q = "a=8 b=2 d =1 e=" + Text1.Text + " f=14"
        r() = Split(Text2, vbCrLf)
    For i = 0 To UBound(r)
        If InStr(r(i), "e=" & Text1.Text) <> 0 Then
            MsgBox "Çíä ÏÇÏå ʘÑÇÑí ãí ÈÇÔÏ"
            Exit Sub
        End If
    Next i
Text2 = Text2 + q + vbCrLf
Text1 = ""
End Sub
hamalous
جمعه 10 مرداد 1393, 16:08 عصر
یه سوال کوچیک ببخشیداینجا مطرحش کردم خواستم تایپک باز نکنم ،اگه بخوایم سطر به سطر یه فایل متنی روبخونیم ازدستور line input استفاده می کنیم سوال من اینه آیا میشه برای خوندن سطر به سطر تکست باکس هم از این دستور استفاده کرد؟اگه جوابتونمثبت هست لطفا شکل دستور اون رو برام بنویسید ممنون
karasystem
شنبه 11 مرداد 1393, 12:20 عصر
سلام
برای اجرای این فرمان بهتر است از بانک اطلاعات استفاده کنید
ماژولی برای تکراری بودن رکورد 
Public Function isRecordExist(ByVal sTable As String, ByVal sField As String, ByVal sStr As String, Optional isString As Boolean) As Boolean
    Dim rs As New Recordset
    rs.CursorLocation = adUseClient
    If isString = False Then
        rs.Open "Select * From " & sTable & " Where " & sField & " = " & sStr, CN, adOpenStatic, adLockOptimistic
    Else
        rs.Open "Select * From " & sTable & " Where " & sField & " = '" & sStr & "'", CN, adOpenStatic, adLockOptimistic
    End If
    If rs.RecordCount < 1 Then
        isRecordExist = False
    Else
        isRecordExist = True
    End If
    Set rs = Nothing
End Function
موفق باشید.
hamalous
شنبه 11 مرداد 1393, 13:58 عصر
ممنون دوست عزیز ولی مثل اینکه متوجه سوال من نشدی لطفا یک بار دیگه سوال من رو مطالعه فرمایید ممنون
hmbarnamenevis
یک شنبه 12 مرداد 1393, 00:07 صبح
من درست سوالتون رو نخوندم امیدوارم منظورتون رو خوب فهمیده باشم.
Dim q, q2 As String
Dim r() As String
q2 = "a=8 b=2 d =1 e="
q = q2 + Text1.Text + " f=14"
r() = Split(Text2, vbCrLf)
For i = 0 To UBound(r)
    If (q2 + Text1.Text + " f=14" = r(i)) Then
        MsgBox "Çíä ÏÇÏå ʘÑÇÑí ãí ÈÇÔÏ"
        Exit Sub
    End If
Next
Text2 = Text2 + q + vbCrLf
Text1 = ""
hamalous
یک شنبه 12 مرداد 1393, 00:41 صبح
دوست عزیز سوال من اصلا در مورد جلوگیری از تکرار شدن داده نیست اون سوال رو که یکی از دوستان لطف کردن و پاسخ دادن سوال من اینه:
اگه بخوایم  سطر به سطر یه فایل متنی روبخونیم ازدستور line input استفاده می کنیم سوال  من اینه آیا میشه برای خوندن سطر به سطر تکست باکس هم از این دستور  استفاده کرد؟ اگه جوابتون مثبت هست لطفا شکل دستور اون رو برام بنویسید ممنون
hmbarnamenevis
دوشنبه 13 مرداد 1393, 11:41 صبح
فکر نکنم متد آماده برای این کار وجود داشته باشد؛ باید با توابع رشته ای و تکنیک های دیگر این کار را شبیه سازی کنی و خودت یه تابع LineInput برای خواندن سطر به سطر جعبه متن بنویسی.
vbhamed
سه شنبه 14 مرداد 1393, 18:59 عصر
سلام
اين يك نمونه، فقط توجه داشته باشيد كه اين برنامه جفت كاراكتر vbCrLf رو به عنوان آخر خط در نظر ميگيره و اگر يك خط خيلي طولاني داشته باشيد كه تو عرض تكست باكس جا نشه و خودش شكسته بشه به دو خط، كل اون رو يك خط در نظر ميگيره
Private Function GetLine(txt As TextBox, row As Integer) As String
    Dim s() As String
    s = Split(txt, vbCrLf)
    If row < UBound(s) Then GetLine = s(row - 1)
End Function
Private Sub Form_Load()
    MsgBox GetLine(Text1, 1)
End Sub
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.