PDA

View Full Version : فیلتر آدرسهای یک شجره نامه



ali190
جمعه 12 آذر 1389, 19:22 عصر
باسلام و عرض خسته نباشید
من در بانکم تعدادی آدرس دارم که بصورت یک شجره نامه هستند:
در واقع بین هر مجموعه و زیر مجموعه بعد از خودش با یک "\" جداسازی شده است



63066


حالا من میخوام این آدرس ها رو برحسب آدرسی که در شجره نامه قدیمی تر است فیلتر کنم
در نمونه پروژه ام یک textbox جهت فیلترسازی گذاشتم:
مثلاً فرض کنید زمانیکه آدرس Main Root\zz رو میزنم و روی دیکمه فیلتر کلیک میکنم باید نتایج زیر رد دیتا گرید نمایان بشه:



63067


طبق فیلتر سازی هر آدرسی که با Main Root\zz شروع میشود باید فیلتر شود
من برای این قضیه از کوئری select زیر استفاده میکنم

"select * from tblNodes WHERE (((InStr(1,[path],text1.text))=1));"
من در واقع با تابع instr وجود مقدار text1 رو در فیلد path چک میکنم ، اگر وجود داشت (1=) اون رو انتخاب میکنم
منتها کدی که نوشتم عمل فیلتر رو انجام نمیده و ارور میده
پروژه رو جهت اصلاح خدمتتون قرار میدم
یاعلی

vbhamed
شنبه 13 آذر 1389, 03:06 صبح
سلام
خط اول رو به شكل زير اصلاح كنيد


Adodc1.RecordSource = "select * from tblNodes WHERE InStr(lcase$(path),'" & LCase$(Trim$(Text1.Text)) & "')=1"

ali190
یک شنبه 14 آذر 1389, 06:14 صبح
باسلام و عرض خسته نباشید
جناب vbhamed عزیز
ممنون از پاسختون
عبارت sql ای که در اختیارم گذاشتید در بانک اطلاعاتی اکسس به راحتی جواب داد
ولی در sql server2000 با خطای زیر مواجه میشم:

63099


چطور میتونم این کوئری رو جوری تغییرش بدم تا در sql server2000 نیز عمل کند؟
پروژه رو بهمراه بانک sql server2000 جهت ویرایش آپلود کردم
ممنون میشم کمکم کنید
یاعلی

vbhamed
یک شنبه 14 آذر 1389, 10:54 صبح
سلام

اين اشكال خيلي مهم نيست من LCase رو براي اين گذاشتم كه اگر حروف كوچك و بزرگ وارد شدند مشكلي ايجاد نشه، حالا شما 2 تا تست انجام بدين

1 - علامت $ رو از آخر $LCase برداريد
2 - كلا lcase رو هم از داخل query هم از دستورات برنامه حذف كنيد

ali190
یک شنبه 14 آذر 1389, 11:40 صبح
باسلام
جناب vbhamed بنده هر دو lcase رو از دستور sql حذف کردم
ولی این دفعه ارور زیر را داد:


63116


فکر کنم اصلاً sql server از دستورات vb تبعیت نکنه
یعنی باید سینتکس دستور عوض بشه؟
یاعلی

vbhamed
یک شنبه 14 آذر 1389, 12:03 عصر
سلام

خب مثال شما براي Access بوده
به جاي Instr از Like البته با فرمت دستوري خودش استفاده كنيد