PDA

View Full Version : جدا نمودن اجزای یک شماره در یک فیلد



michkadol
دوشنبه 09 آبان 1390, 12:34 عصر
سلام
دوستان فیلدی دارم که اطلاعات داخل ان از 4 قسکت تشکیل شده که با - از هم جداشده اند
تمام موارد عدد هستند
حالا نیاز پیدا کردم که اعداد قسمت سوم رو جدا کنم چه کنم؟
مثلا
12-1121434-112-1212
و
121-12328882-2-1212
و
1-1212121-21-1212
و...
حالا میخوام فقط اعدادقسمت سوم رو جدا کنم و در فیلد دیگه ای ذخیره کنم

تو کوئری گشتم موردی به ذهنم نرسید حالا دوستان اگه راهی دارن لطف کنن
ممنون همتونم

mehdi_fiz
دوشنبه 09 آبان 1390, 18:16 عصر
سلام دوست عزیز
اینم نمونه ای که خواسته بودید
به کوئری دقت کنید و تابعی که در قسمت ماژول نوشته شده است
موفق باشید

Abbas Amiri
سه شنبه 10 آبان 1390, 01:22 صبح
علاوه بر فرمایش جناب آقا مهدی ، تابع Split هم کارایی جالبی دارد وبا اجرای (getSection([cod],3 می توان نتیجه مشابه و وبا تغییر عدد هرقسمتی را جدا کرد.

Public Function getSection(strSearch As String, Section As Integer) As String
Dim workTb() As String
workTb = Split(strSearch, "-")
getSection = workTb(Section - 1)
End Function

michkadol
دوشنبه 12 دی 1390, 18:51 عصر
علاوه بر فرمایش جناب آقا مهدی ، تابع Split هم کارایی جالبی دارد وبا اجرای (getSection([cod],3 می توان نتیجه مشابه و وبا تغییر عدد هرقسمتی را جدا کرد.


Public Function getSection(strSearch As String, Section As Integer) As String
Dim workTb() As String
workTb = Split(strSearch, "-")
getSection = workTb(Section - 1)
End Function


دوست عزیز از راهکارتون خیلی ممنون
خیلی کارم رو راه انداخت اما متاسفانه الان به یه مشکل دیگه خوردم
در نمونه زیر این مشکل رو دارم:
Expr4: getSection([name];4)
چکار کنم که اگر فیلد نام مقدار چهارمی نداشت (از 3 جز تشکیل شده بود)
error نده و فيلد expr4 خالي بمونه؟
یا در فیلدهای تلفن و ادرس هم به همین صورت
اگر از 2 جزء تشکیل شده بودند در تکست باکس مربوطش (3 و 4) چیزی ثبت نشه و خالی باشه
و error نده
در ضمن چون قراره اطلاعات از تیبل دیگری(يك فايل اكسل) گرفته بشه پس امکان این نیست که انتهای فیلد 2 یا 3 قسمتی
یک یا دوتا علامت | اضافه کرد

Abbas Amiri
دوشنبه 12 دی 1390, 20:59 عصر
با تغییرات زیر برای بخش هایی که وجود ندارند مقدار "" یا رشته خالی برمی گردد


Public Function getSection(strSearch As String, Section As Integer) As String
Dim workTb() As String, k As Integer
workTb = Split(strSearch, "-")
k = UBound(workTb)
If k < Section - 1 Then Exit Function
getSection = workTb(Section - 1)
End Function

michkadol
سه شنبه 13 دی 1390, 10:21 صبح
خيلي ممنون از لطفت