نمایش نتایج 1 تا 40 از 40

نام تاپیک: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997

    تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    با سلام
    یه فیلدی از نوع رشته داریم که با چندین کاراکتر spaceپر شده بدیهی است که چون طول رشته داره empty و null نیست راه تشخیص اینطور فیلدها چیه ؟

  2. #2
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    سن
    58
    پست
    1,057

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    نقل قول نوشته شده توسط moustafa مشاهده تاپیک
    با سلام
    یه فیلدی از نوع رشته داریم که با چندین کاراکتر spaceپر شده بدیهی است که چون طول رشته داره empty و null نیست راه تشخیص اینطور فیلدها چیه ؟
    سلام
    وقت بخیر!
    احساس میکنم این سوال یجورائی به موضوع تاپیک خطا در ایجاد کاربرگ جدید در اکسل توسط اکسس ارتباط داره
    اگه همینطوره میتونی در حلقه کنترل فیلدها شرط زیر رو بکار ببری:

    If Not IsNull(fld) And fld.Value Like "[ ]*" Then
    fld = Replace(fld, " ", "*")
    End If

    توضیح شرط هم واضحه دیگه . شرط شده که اگه در بین فیلدها فیلدی هست که خالی نباشه و با کارکتر خالی شروع شده باشه بجای کارکتر خالی علامت ستاره جایگزین بشه
    شما میتونی بجای این شرط ، شرط مورد نظر خودتو وارد کنی

  3. #3
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    سن
    58
    پست
    1,057

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    یا مثلاً برای حذف اسپیس :

    If Not IsNull(fld) And fld.Value Like "[ ]*" Then
    fld = Replace(fld, " ", "")
    End If

  4. #4
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    نقل قول نوشته شده توسط eb_1345 مشاهده تاپیک
    سلام
    وقت بخیر!
    احساس میکنم این سوال یجورائی به موضوع تاپیک خطا در ایجاد کاربرگ جدید در اکسل توسط اکسس ارتباط داره
    اگه همینطوره میتونی در حلقه کنترل فیلدها شرط زیر رو بکار ببری:

    If Not IsNull(fld) And fld.Value Like "[ ]*" Then
    fld = Replace(fld, " ", "*")
    End If

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

  5. #5
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    72
    پست
    3,578

    تشخیص white space بودن string با استفاده از regexp

    سلام و روز خوش

    در حالت خاص (فقط space) رو که جناب بهرامی در پست 2 پاسخ دادن.

    در حالت عمومی باید white space چک بشه : یعنیSPACE , TAB , LINE FEED , FORM FEED , CARRIAGE RETURN

    به این صورت که آیا در string مورد نظر کاراکتری جز اینها هست یا نه؟
    اگر هست که این string از نظر ما empty نیست (در این مساله)،
    وگرنه همه اش white space هست و از نظر ما empty حساب میشه (در این مساله).

    With New regexp
    .Pattern = "\S"
    .Global = True
    .Multiline = True
    Debug.Print .Test(" a b c ")
    Debug.Print .Test("abc" + vbTab + "d")
    Debug.Print .Test("abc" + vbCrLf + "d")
    Debug.Print .Test(vbNull)

    Debug.Print .Test(" ")
    Debug.Print .Test("")
    Debug.Print .Test(vbTab)
    Debug.Print .Test(vbCr)
    Debug.Print .Test(vbLf)
    Debug.Print .Test(vbCrLf)
    Debug.Print .Test(vbFormFeed)
    Debug.Print .Test(vbVerticalTab)
    End With


    خروجی:
    True
    True
    True
    True
    False
    False
    False
    False
    False
    False
    False
    False

  6. #6
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997

    نقل قول: تشخیص white space بودن string با استفاده از regexp

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    سلام و روز خوش

    در حالت خاص (فقط space) رو که جناب بهرامی در پست 2 پاسخ دادن.

    در حالت عمومی باید white space چک بشه : یعنیSPACE , TAB , LINE FEED , FORM FEED , CARRIAGE RETURN

    به این صورت که آیا در string مورد نظر کاراکتری جز اینها هست یا نه؟
    اگر هست که این string از نظر ما empty نیست (در این مساله)،
    وگرنه همه اش white space هست و از نظر ما empty حساب میشه (در این مساله).

    With New regexp
    .Pattern = "\S"
    .Global = True
    .Multiline = True
    Debug.Print .Test(" a b c ")
    Debug.Print .Test("abc" + vbTab + "d")
    Debug.Print .Test("abc" + vbCrLf + "d")
    Debug.Print .Test(vbNull)

    Debug.Print .Test(" ")
    Debug.Print .Test("")
    Debug.Print .Test(vbTab)
    Debug.Print .Test(vbCr)
    Debug.Print .Test(vbLf)
    Debug.Print .Test(vbCrLf)
    Debug.Print .Test(vbFormFeed)
    Debug.Print .Test(vbVerticalTab)
    End With


    خروجی:
    True
    True
    True
    True
    False
    False
    False
    False
    False
    False
    False
    False
    عرض سلام وادب خدمت استاد گرانقدر
    فرق empty و null در چیه ؟
    ممکنه اینا رو برای یک تکست باکس در قالب شرط if بنویسید
    نوع دیتا تایپ یک فیلد رو در رکوردست چگونه بررسی کنیم که استرینگ ء یا نامبر و چگونه بهم تبدیل کنیم ؟در جدولی که حاوی اطلاعات هستش این نوع تبدیل امکان پذیر هست ؟
    if field1.type=number or string....

  7. #7
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    [

    If Not IsNull(fld) And fld.Value Like "[ ]*" Then
    fld = Replace(fld, " ", "*")
    End If

    جناب بهرامی این کد شامل داد های که اولش با اسپیلس و بعش با کاراکترهای دیگه ای که وارد شده هم میشه در حالیکه ما میخوایم مختص اسپیس باشه

  8. #8
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    سن
    58
    پست
    1,057

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    نقل قول نوشته شده توسط moustafa مشاهده تاپیک
    [

    If Not IsNull(fld) And fld.Value Like "[ ]*" Then
    fld = Replace(fld, " ", "*")
    End If

    جناب بهرامی این کد شامل داد های که اولش با اسپیلس و بعش با کاراکترهای دیگه ای که وارد شده هم میشه در حالیکه ما میخوایم مختص اسپیس باشه
    تعداد اسپیس ها ثابته یا متغیر ؟

  9. #9
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    نقل قول نوشته شده توسط eb_1345 مشاهده تاپیک
    تعداد اسپیس ها ثابته یا متغیر ؟
    بحث اینجاست که نمیدونیم اطلاعات رو بهمون میدن حالا چه جوری وارد کردن ،چه جوری خروجی گرفتن و....برای همین باید نوع دیتا تایپها و وایت اسپیسها کنترل و بررسی بشه

  10. #10
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    سن
    58
    پست
    1,057

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    نقل قول نوشته شده توسط moustafa مشاهده تاپیک
    بحث اینجاست که نمیدونیم اطلاعات رو بهمون میدن حالا چه جوری وارد کردن ،چه جوری خروجی گرفتن و....برای همین باید نوع دیتا تایپها و وایت اسپیسها کنترل و بررسی بشه
    پس با این وجود بیائیم کار رو با یک نمونه ادامه بدیم
    در فایل نمونه یک جدول قرار داره که دارای دو فیلد از نوع رشته می باشه . یک فرم هم وجود دارد که بر روی فرم دو کمند باتن . در رویداد کمند باتن اول به هر دو فیلد تعداد 10 اسپیس اضافه میشه ؛ منتها در فیلد اول هیچ کارکتر دیگه ای غیر از اسپیس اضافه نمیشه ولی در فیلد دوم بعد از 10 اسپیس یک علامت اسلش و سه حرف xxx اضافه میشه
    حالا بر روی کمند باتن دوم در حلقه شرط گذاشته ایم که اگه در بین فیلدها فیلدی وجود داشت که طول اون بیشتر از صفر بود و ارزش یا مقدار فیلد مساوی اسپیس به اندازه طول فیلد بود بیاد بجای تعداد اسپیس ها علامت ستاره جایگزین کنه
    فعلا فقط با همین اندازه توضیح فایل نمونه رو بررسی و امتحان کن تا در ادامه اگه سوال یا ابهام دیگه ای بود ان شاءالله بتونیم برطرف کنیم
    کدهای فایل نمونه :

    Private Sub Command24_Click()
    Dim rs As DAO.Recordset
    Dim fld As DAO.Field
    Set rs = CurrentDb.OpenRecordset("Table1")
    Do While Not rs.EOF
    rs.Edit
    For Each fld In rs.Fields
    If Len(fld) > 0 And fld.Value = Space(Len(fld)) Then
    fld = Replace(fld, " ", "*")
    End If
    Next
    rs.Update
    rs.MoveNext
    Loop
    rs.Close

    End Sub

    Private Sub Command29_Click()
    DoCmd.RunSQL "DELETE * FROM Table1"
    DoCmd.RunSQL "INSERT INTO Table1 (Fspace1,Fspace2)VALUES ('" & Space(10) & "','" & Space(10) & "/xxx" & "')"
    End Sub
    فایل های ضمیمه فایل های ضمیمه

  11. #11
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    72
    پست
    3,578

    نقل قول: تشخیص white space بودن string با استفاده از regexp

    نقل قول نوشته شده توسط moustafa مشاهده تاپیک
    عرض سلام وادب
    فرق empty و null در چیه ؟

    نوع دیتا تایپ یک فیلد رو در رکوردست چگونه بررسی کنیم که استرینگ ء یا نامبر و چگونه بهم تبدیل کنیم ؟در جدولی که حاوی اطلاعات هستش این نوع تبدیل امکان پذیر هست ؟
    با سلام و احترام
    empty منظور یک string تهی هست (0 کاراکتر) یعنی ""
    null مقداری هست که فقط برای متغیر نوع variant معنی داره (پس یک متغییر از نوع string یا integer نمیتونه null باشه)

    ولی در دیتابیس یک فیلد از نوع text یا integer میتونه null باشه،
    و با تابع isnull میتونین این رو بررسی کنین - یا با تابع len چک کنین چون برای null مقدار null برمیگردونه (نه 0).
    که قطعا همون isnull بهتره.

  12. #12
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997

    نقل قول: تشخیص white space بودن string با استفاده از regexp

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    با سلام و احترام
    empty منظور یک string تهی هست (0 کاراکتر) یعنی ""
    null مقداری هست که فقط برای متغیر نوع variant معنی داره (پس یک متغییر از نوع string یا integer نمیتونه null باشه)

    ولی در دیتابیس یک فیلد از نوع text یا integer میتونه null باشه،
    و با تابع isnull میتونین این رو بررسی کنین - یا با تابع len چک کنین چون برای null مقدار null برمیگردونه (نه 0).
    که قطعا همون isnull بهتره.
    تشکر استاد ای کاش بقیه سوالات رو هم عنایت میکردین جواب میدادین

  13. #13
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    سن
    58
    پست
    1,057

    نقل قول: تشخیص white space بودن string با استفاده از regexp

    نقل قول نوشته شده توسط moustafa مشاهده تاپیک
    نوع دیتا تایپ یک فیلد رو در رکوردست چگونه بررسی کنیم که استرینگ ء یا نامبر و چگونه بهم تبدیل کنیم ؟در جدولی که حاوی اطلاعات هستش این نوع تبدیل امکان پذیر هست ؟
    نمایش نام و نوع فیلد:

    Dim tdf As TableDef
    Dim Fld As Field
    Dim dbs As DAO.Database
    Set dbs = CurrentDb
    Set tdf = dbs.TableDefs("Table1")
    For Each Fld In tdf.Fields
    MsgBox " FieldName :" & Fld.Name & " FieldType: " & Fld.Type
    Next Fld
    Set Fld = Nothing
    Set tdf = Nothing

    تغییر دیتاتایپ فیلد:

    CurrentDb.Execute "ALTER TABLE Table1 ALTER COLUMN Fspace1 Integer"
    CurrentDb.Execute "ALTER TABLE Table1 ALTER COLUMN Fspace2 TEXT(40)"

  14. #14
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    سن
    58
    پست
    1,057

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    اگه فقط میخواهی بصورت مورد نوع دیتا تایپ فیلدی رو بدست بیاری از نمونه کد زیر استفاده کن!
    نوع دیتا بصورت عدد نمایش داده میشه .مثلاً عدد 4 یعنی نوع دیتا عدده و 10 یعنی تکست

    MsgBox CurrentDb.TableDefs("Table1").Fields("Id").Type

  15. #15
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    ا استاد و سرور گرامی جناب بهرامی عزیز از لطف و توجه شما بسیار ممنوم

  16. #16
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    جناب بهرامی شما چقدر به من ایده میدین به تبعیت از کد شما یه فانکشن نوشتم
    Public Function detectSpace(strname As String) As Boolean
    Dim i As Integer
    If Len(strname) = 0 Then
    detectSpace = False
    Else
    For i = 1 To Len(strname)

    If Asc(Mid(strname, i, i + 1)) = 32 Then


    Else

    detectSpace = False

    Exit Function
    End If
    Next i
    detectSpace = True
    End If

    End Function
    آخرین ویرایش به وسیله moustafa : یک شنبه 29 مهر 1403 در 19:34 عصر

  17. #17
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    سن
    58
    پست
    1,057

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    نقل قول نوشته شده توسط moustafa مشاهده تاپیک
    جناب بهرامی شما چقدر به من ایده میدین به تبعیت از کد شما یه فانکشن نوشتم
    Public Function detectSpace(strname As String) As Boolean
    Dim i As Integer
    If Len(strname) = 0 Then
    detectSpace = False
    Else
    For i = 1 To Len(strname)

    If Asc(Mid(strname, i, i + 1)) = 32 Then


    Else

    detectSpace = False

    Exit Function
    End If
    Next i
    detectSpace = True
    End If

    End Function
    سلام
    وقت بخیر!
    احسنت!
    بجای عدد 32 میشه از (" ")Asc هم استفاده کرد

  18. #18
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    سن
    58
    پست
    1,057

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    ................

  19. #19
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    72
    پست
    3,578

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    نقل قول نوشته شده توسط moustafa مشاهده تاپیک
    جناب بهرامی شما چقدر به من ایده میدین به تبعیت از کد شما یه فانکشن نوشتم
    Public Function detectSpace(strname As String) As Boolean
    Dim i As Integer
    If Len(strname) = 0 Then
    detectSpace = False
    Else
    For i = 1 To Len(strname)

    If Asc(Mid(strname, i, i + 1)) = 32 Then


    Else

    detectSpace = False

    Exit Function
    End If
    Next i
    detectSpace = True
    End If

    End Function
    تابع instr همین کار رو نمیکنه؟!

  20. #20
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    72
    پست
    3,578

    نقل قول: تشخیص white space بودن string با استفاده از regexp

    نقل قول نوشته شده توسط moustafa مشاهده تاپیک
    تشکر ای کاش بقیه سوالات رو هم عنایت میکردین جواب میدادین
    خواهش میکنم
    ولی چیزی نمونده بنظرم.

    اگر منظورتون اون موردی هست که جناب آقای بهرامی در پست 14 اشاره کردن مفصل در تاپیک زیر بحث شده:
    لیست همه جدول‌ها / کوئری‌ها و فیلدهای آنها List of All Tables/Queries and their Fields

  21. #21
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    نقل قول نوشته شده توسط eb_1345 مشاهده تاپیک
    سلام
    وقت بخیر!
    احسنت!
    بجای عدد 32 میشه از (" ")Asc هم استفاده کرد
    دورد بر شما جناب بهرامی
    بسیار سپاسگذارم که هم کارمون راه انداختین و هم ذهن فرسوده مون رفرش فرمودین

  22. #22
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    تابع instr همین کار رو نمیکنه؟!
    سلام واحترام سرورگرامی

    از این تابع من تو برنامه استفاده کردم الان بکلی از ذهنم پرکشیده که برای چی بکار بردم
    UPDATE info SET info.ax = [currentproject].[path] & Right([ax],Len([ax])-InStr(1,[ax],"\pic")+1);
    آخرین ویرایش به وسیله moustafa : چهارشنبه 02 آبان 1403 در 12:28 عصر

  23. #23
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    تابع instr همین کار رو نمیکنه؟!
    تابع instr نقطه شروع یک رشته رو داخل یک رشته برمیگردونه در این تابع میخوایم بررسی کنیم که رشته یا فیلد یا تکست باکس white space (مشتکل فقط از اسپیس ) هست یا نه

  24. #24
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    72
    پست
    3,578

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    نقل قول نوشته شده توسط moustafa مشاهده تاپیک
    تابع instr نقطه شروع یک رشته رو داخل یک رشته برمیگردونه در این تابع میخوایم بررسی کنیم که رشته یا فیلد یا تکست باکس white space (مشتکل فقط از اسپیس ) هست یا نه
    if instr(str," ")>0 then
    ...
    endif


    یا اگه اصرار دارین یه تابع جداگانه داشته باشین (پست شماره 16):
    Public Function detectSpace(strname As String) As Boolean
    detectSpace = (instr(strname," ")>0)
    End Function

    ================
    آپدیت:
    منظور شما رو اشتباه گرفته بودم - ولی پست رو میذارم همینجور بمونه.
    حتی اگر هم نخواین از روش پست 5 استفاده کنین (که قابلیت انعطاف بیشتری هم داره)
    باز هم نیازی به لوپ نیست:
    Public Function detectSpace(strname As String) As Boolean
    detectSpace=(strname<>"" AND strname=STRING(LEN(strname)," "))
    End Function
    آخرین ویرایش به وسیله mazoolagh : دوشنبه 30 مهر 1403 در 10:42 صبح

  25. #25
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    if instr(str," ")>0 then
    ...
    endif


    یا اگه اصرار دارین یه تابع جداگانه داشته باشین (پست شماره 16):
    Public Function detectSpace(strname As String) As Boolean
    detectSpace = (instr(strname," ")>0)
    End Function

    ================
    آپدیت:
    منظور شما رو اشتباه گرفته بودم - ولی پست رو میذارم همینجور بمونه.
    حتی اگر هم نخواین از روش پست 5 استفاده کنین (که قابلیت انعطاف بیشتری هم داره)
    باز هم نیازی به لوپ نیست:
    Public Function detectSpace(strname As String) As Boolean
    detectSpace=(strname<>"" AND strname=STRING(LEN(strname)," "))
    End Function
    دستتون درد نکنه استاد پست پنج رو هم عرض کرده بودم برامون با if و بررسی تمام موارد در یک فیلد یا تکس بنویسین بعنوان یه فانکشن عمومی در برنامه هامون استفاده کنیم

  26. #26
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    سن
    58
    پست
    1,057

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    نقل قول نوشته شده توسط moustafa مشاهده تاپیک
    دستتون درد نکنه استاد پست پنج رو هم عرض کرده بودم برامون با if و بررسی تمام موارد در یک فیلد یا تکس بنویسین بعنوان یه فانکشن عمومی در برنامه هامون استفاده کنیم
    حالا ان شاءالله تا بعداً استاد در صورت تمایل خواستن یک فانکشن عمومی تهیه کنن عنایت داشته باش که برای استفاده از کتابخانه RegExp در قسمت رفرنس ها مطابق تصویر ضمیمه تیک آیتمی که با فلش مشخص کرده ام بزنی!

    Dim rex As RegExp
    Set rex = New RegExp
    With rex
    .Pattern = "\S"
    .Global = True
    .MultiLine = True
    MsgBox .Test(" a b c ")
    MsgBox .Test("abc" + vbTab + "d")
    MsgBox .Test("abc" + vbCrLf + "d")
    MsgBox .Test(vbNull)
    MsgBox .Test(" ")
    MsgBox .Test("")
    MsgBox .Test(vbTab)
    MsgBox .Test(vbCr)
    MsgBox .Test(vbLf)
    MsgBox .Test(vbCrLf)
    MsgBox .Test(vbFormFeed)
    MsgBox .Test(vbVerticalTab)
    End With
    عکس های ضمیمه عکس های ضمیمه

  27. #27
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    سن
    58
    پست
    1,057

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    البته میشه بدون تیک زدن اون در قسمت رفرنس ها در ابتدای کد ها اون رو بصورت زیر معرفی کنی :

    Dim objRegExp
    Set objRegExp = CreateObject("VBScript.RegExp")


    Dim objRegExp
    Set objRegExp = CreateObject("VBScript.RegExp")
    With objRegExp
    .........
    End With

    بنظرم برای استفاده از RegEx یا (Regular Expressions) بمنظور انجام عملیات تطابق و جایگذاری عبارات در رشته ها بواسطه قواعد خاص و استفاده از نمادها و دستورات مخصوصی که در اون وجود داره نیاز به یک آموزش در یک تاپیک مستقل داره
    آخرین ویرایش به وسیله eb_1345 : سه شنبه 01 آبان 1403 در 00:46 صبح

  28. #28
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    تشکر جناب بهرامی
    زحمت فانکشن هم کشیده بشه خیلی عالی میشه
    public function detectWhiteSpace(strname as string) as boolean
    .....
    end function

  29. #29
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    سن
    58
    پست
    1,057

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    نقل قول نوشته شده توسط moustafa مشاهده تاپیک
    جناب بهرامی شما چقدر به من ایده میدین به تبعیت از کد شما یه فانکشن نوشتم
    Public Function detectSpace(strname As String) As Boolean
    Dim i As Integer
    If Len(strname) = 0 Then
    detectSpace = False
    Else
    For i = 1 To Len(strname)

    If Asc(Mid(strname, i, i + 1)) = 32 Then


    Else

    detectSpace = False

    Exit Function
    End If
    Next i
    detectSpace = True
    End If

    End Function

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    Public Function detectSpace(strname As String) As Boolean
    detectSpace=(strname<>"" AND strname=STRING(LEN(strname)," "))
    End Function

    نقل قول نوشته شده توسط moustafa مشاهده تاپیک
    تشکر جناب بهرامی
    زحمت فانکشن هم کشیده بشه خیلی عالی میشه
    با دو فانکشن پست 16 که خودت ایجاد کردی و پست 24 که جناب مازولاق پیشنهاد دادن به جواب میرسی ، دیگه نیاز به فانکشن خاص دیگه نداری!
    به نظر من فانکشن پست 24 که جناب مازولاق پیشنهاد دادن خیلی بهتره ،چون بدون استفاده از لوپ یا حلقه و فقط با یک خط کد راحت به جواب میرسی
    زیاد سخت نگیر آقا مصطفی !

  30. #30
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    نقل قول نوشته شده توسط eb_1345 مشاهده تاپیک
    با دو فانکشن پست 16 که خودت ایجاد کردی و پست 24 که جناب مازولاق پیشنهاد دادن به جواب میرسی ، دیگه نیاز به فانکشن خاص دیگه نداری!
    به نظر من فانکشن پست 24 که جناب مازولاق پیشنهاد دادن خیلی بهتره ،چون بدون استفاده از لوپ یا حلقه و فقط با یک خط کد راحت به جواب میرسی
    زیاد سخت نگیر آقا مصطفی !
    بله چشم

  31. #31
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    72
    پست
    3,578

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    نقل قول نوشته شده توسط eb_1345 مشاهده تاپیک
    حالا ان شاءالله تا بعداً مازو در صورت تمایل خواستن یک فانکشن عمومی تهیه کنن ...
    سلام جناب بهرامی

    راستش من هنوز نگرفتم تابع مورد نظر جناب مصطفی گرامی چی هست و قراره چه کار کنه؟
    ممنون میشم روشنگری کنین.

  32. #32
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    72
    پست
    3,578

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    نقل قول نوشته شده توسط eb_1345 مشاهده تاپیک
    بنظرم برای استفاده از RegEx یا (Regular Expressions) بمنظور انجام عملیات تطابق و جایگذاری عبارات در رشته ها بواسطه قواعد خاص و استفاده از نمادها و دستورات مخصوصی که در اون وجود داره نیاز به یک آموزش در یک تاپیک مستقل داره
    خود ابجکت regexp ساده است و پراپرتی ها و متدهاش خیلی کم و سرراستن.
    قسمت سختش نوشتن اون پترن هست که بدبختانه آموزش برنمیداره بس که گسترده است
    و خیلی راحت میشه یک پترن بد نوشت که فشار به پردازنده بیاره یا کلا تو لوپ بیفته!

    در تاپیک زیر (طبق معمول با عنوان نامناسب!) یک نمونه از کار با regexp برای validation فرم هست
    https://barnamenevis.org/showthread.php?558147

  33. #33
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    72
    پست
    3,578

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    دلیل این که در پست 24 برداشت اشتباه از کار تابع detectSpace داشتم همین اسمش بود!

    detect این معنی رو تداعی میکنه که شما میخواین ببینین یک چیزی در بین چیزای دیگه هست یا نه (مثل یک کاراکتر در یک رشته)
    که خب ما تابع instr رو داریم که همین کار رو میکنه.

    اگر قرار باشه کلیت یک چیزی رو با یک چیز دیگه مقایسه کنیم اولش یک IS میذاریم: isnull, isnothing, isempty, isarray و ...

  34. #34
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    سن
    58
    پست
    1,057

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    نقل قول نوشته شده توسط moustafa مشاهده تاپیک
    با سلام
    یه فیلدی از نوع رشته داریم که با چندین کاراکتر spaceپر شده بدیهی است که چون طول رشته داره empty و null نیست راه تشخیص اینطور فیلدها چیه ؟
    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    سلام جناب بهرامی

    راستش من هنوز نگرفتم تابع مورد نظر جناب مصطفی گرامی چی هست و قراره چه کار کنه؟
    ممنون میشم روشنگری کنین.
    با عرض سلام متقابل
    ظاهراً ایشون در تابع مورد نظرشون میخوان تشخیص بدن که آیا محتویات یک ( رشته / تکست باکس/ فیلد جدول) که خالی نیست فقط و فقط از space تشکیل شده یا نه
    و بنده هم با توجه به برداشتی که از خواسته و هدف ایشون در این تاپیک پیدا کردم در پست 29 متذکر شدم که توابع پست 16 و 24 خواسته ایشون رو تامین میکنه ، بخصوص تابع پست 24 جنابعالی

  35. #35
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    سن
    58
    پست
    1,057

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    خود ابجکت regexp ساده است و پراپرتی ها و متدهاش خیلی کم و سرراستن.
    قسمت سختش نوشتن اون پترن هست که بدبختانه آموزش برنمیداره بس که گسترده است
    و خیلی راحت میشه یک پترن بد نوشت که فشار به پردازنده بیاره یا کلا تو لوپ بیفته!
    بله ، دقیقاً سختی استفاده از این آبجکت همون پترن هاشه که بقول شما اینقدر گسترده و متنوعه که آدم توش قاطی میکنه

  36. #36
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    سن
    58
    پست
    1,057

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    .................................
    آخرین ویرایش به وسیله eb_1345 : چهارشنبه 02 آبان 1403 در 19:36 عصر

  37. #37
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    72
    پست
    3,578

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    نقل قول نوشته شده توسط eb_1345 مشاهده تاپیک
    با استفاده از regexp تابع زیر رو برای اعتبار سنجی یک رشته که فقط مشتمل بر فضای خالی باشه ایجاد کردم ؛ نمیدونم پترنشو درست نوشتم یا نه
    مازولاق عزیز لطفاً در خصوص درست و یا غلط بودن تابع اظهار نظر بفرماین !
    پترن برای کاری که مورد نظر هست درسته،
    و توضیح هم گویاست.

    با اجازه شما چند مورد تکمیلی رو عرض میکنم:
    1- همونجور که توضیح داده شد، {1,} شرط تعداد رو مشخص میکنه که میشه یکی یا بیشتر.
    معمولا {m,n} رو برای حالتهایی بکار میبریم که m , n به جز 1 باشن - برای یکی یا بیشتر نماد + رو داریم:
    ^\s+$


    2- این پترن درست هست - ولی در مقایسه با پترن پست 5 (S\) ، احتمالا اورهد بیشتری داره:
    اینجا حتما باید کل string تا آخر چک بشه برای s\ (همون white space) ،
    ولی S\ یعنی هر کارآکتری که white space نیست - پس دست کم non-match رو زودتر برمیگردونه.
    دوستانی که مطلب رو دنبال میکنن به تفاوت s\ و S\ دقت کنن!

    3- در اینجا پترن مقید به اغاز و پایان string یا line شده،
    که این رو در یک پست دیگه در ادامه همین تاپیک باز میکنم.


    ضمناً از مازولاق خواهش میکنم در تاپیک استفاده از Regular Expressions یا به اخصار RegEx برای جستجو و جایگذاری عبارت در متن که امروز ایجاد کردم حواسشون به بنده باشه ، چون در ارتباط با مقوله فوق خیلی اشراف ندارم و ممکنه در بیان مطالب و ارائه کدهای نمونه دچار اشتباه بشم
    هرچند آب سر بالا نمیره،
    ولی چشم!

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

  38. #38
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    سن
    58
    پست
    1,057

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    سلام استاد!
    با عرض شرمندگی قبل از اینکه شما پست شماره 36 رو ارسال کنی من کدها و مطالب پست قبلی خودم رو حذف کردم . چون احساس کردم با وجود مطالب پستهای قبلی دیگه نیازی به مطالب اون پست نیست که یدفعه متوجه پست شما شدم

  39. #39
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    72
    پست
    3,578

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    وقتی با ^ و $ پترن رو مقید به آغاز و پایان line (یا string) میکنیم باید حواسمون به multiline باشه،
    و مشخصا این که هدف کل line و یا بخشی از اون هست نیز باید مشخص باشه.

    فرض کنین که یک پترن ساده داریم که قرار هست دنبال ترکیب هایی مشابه 12:345 بگرده (دقیقا 2 رقم - یک : - دقیقا سه رقم)

    Dim strs()
    strs = Array( _
    "111:22 222:33", _
    "111:22 222:33 ", _
    "111:22" + vbCrLf + "222:33", _
    " 111:22" + vbCrLf + "222:33 ", _
    "aaa" + vbCrLf + "a111:22" + vbCrLf + "222:33b" + vbCrLf + "ddd")

    Dim i As Integer
    Dim mc As MatchCollection
    Dim m As Match


    حالا برای هر کدوم از اینها تست و نتایج رو مقایسه کنین:

    With New regexp
    .Pattern = "\d{3}:\d{2}"
    .Global = True
    .Multiline = False
    For i = LBound(strs) To UBound(strs)
    Set mc = .Execute(strs(i))
    For Each m In mc
    Debug.Print m,
    Next
    Debug.Print
    Next
    End With


    With New regexp
    .Pattern = "^\d{3}:\d{2}$"
    .Global = True
    .Multiline = True
    For i = LBound(strs) To UBound(strs)
    Set mc = .Execute(strs(i))
    For Each m In mc
    Debug.Print m,
    Next
    Debug.Print
    Next
    End With


    With New regexp
    .Pattern = "^\d{3}:\d{2}$"
    .Global = True
    .Multiline = False
    For i = LBound(strs) To UBound(strs)
    Set mc = .Execute(strs(i))
    For Each m In mc
    Debug.Print m,
    Next
    Debug.Print
    Next
    End With



  40. #40
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    72
    پست
    3,578

    نقل قول: تشخیص فیلدی که داده های آن از چندین space تشکیل شده

    نقل قول نوشته شده توسط eb_1345 مشاهده تاپیک
    سلام
    با عرض شرمندگی قبل از اینکه شما پست شماره 36 رو ارسال کنی من کدها و مطالب پست قبلی خودم رو حذف کردم . چون احساس کردم با وجود مطالب پستهای قبلی دیگه نیازی به مطالب اون پست نیست که یدفعه متوجه پست شما شدم
    سلام دوباره
    پست خوبی بود اتفاقا،
    و نکته مهمی رو نشون میداد.

تاپیک های مشابه

  1. سوال: عدم تشخیص نقطه و space در میان متن
    نوشته شده توسط hooooman در بخش برنامه‌نویسی جاوا
    پاسخ: 5
    آخرین پست: دوشنبه 09 فروردین 1395, 06:28 صبح
  2. تشخیص فشار دادن کلید اینتر و space در تکست ویو
    نوشته شده توسط gilas1368 در بخش Android Studio
    پاسخ: 7
    آخرین پست: یک شنبه 30 شهریور 1393, 01:15 صبح
  3. مشکل در تشخیص کلید space در ورودی
    نوشته شده توسط setareh2013 در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 7
    آخرین پست: جمعه 16 خرداد 1393, 21:26 عصر
  4. پاسخ: 1
    آخرین پست: یک شنبه 11 اسفند 1392, 09:31 صبح
  5. سوال: تشخیص Space
    نوشته شده توسط bachebahal_1363 در بخش C#‎‎
    پاسخ: 2
    آخرین پست: جمعه 03 خرداد 1387, 11:07 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •