PDA

View Full Version : اجرا نشدن کوئری حاوی فورمول در Sql Server2000



ali190
یک شنبه 14 آذر 1389, 06:07 صبح
باسلام و عرض خسته نباشید
من بریا فیلترسازی اطلاعات یک کوئری حاوی فورمول نوشتم
زمانیکه این کوئری رو در vb6 اجراش میکنم با پیغام خطای زیر مواجه میشم


63098

متن کوئری هم بصورت زیر است :

"select * from tblNodes WHERE InStr(1,lcase$(path),'" & LCase$(Trim$(Text1.Text)) & "')=1"
چطور میتونم این کوئری رو در از طریق vb6 در sql server اجرا کنم؟
پروژه رو جهت ویرایش خدممتون قرار میدم
ممنون میشم کمکم کنید
یاعلی

Reza_Yarahmadi
یک شنبه 14 آذر 1389, 07:26 صبح
من در مورد VB6 چيزي نميدونم و باهاش كار نكردم ، ولي چيزي كه كاملا معلومه اينه كه دستوري كه نوشتيد خطاي دستوري داره. يك مقدار در مورد دستوراتي كه در VB6 استفاده كرديد و يا فيلتري كه ميخوايد انجام بديد توضيح بديد تا بهتر بشه كمكتون كرد. $InStr , LCase چي هستند؟
دستوري كه حدس ميزنم مورد شما باشه:

"Select * From tblNodes Where " & InStr(1,lcase$(path), LCase$(Trim$(Text1.Text))) & " = 1"

ali190
یک شنبه 14 آذر 1389, 10:27 صبح
سلام دوست عزیز
ممنون از پاسختون
بیشتر توضیح میدم:
من در بانکم تعدادی آدرس دارم که بصورت یک شجره نامه هستند:
در واقع بین هر مجموعه و زیر مجموعه بعد از خودش با یک "\" جداسازی شده است

63103


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


63104


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


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



من در واقع با تابع instr وجود مقدار text1 رو در فیلد path چک میکنم ، اگر وجود داشت (1=) اون رو انتخاب میکنم


کد بالا در بانک اکسس به راحتی جواب داده ، منتها زماینکه کانشکن رو تغییر میدم و به sql server2000 به همون داده ها و ساختار وصل میشم ارور دریافت میکنم:





'lcase$'is not a recognized function nam


فایل پروژه رو به همراه بانک sql server2000 در پست 1 خدمتتون قرار دادم
ممنون میشم کمکم کنید
یاعلی

ali190
یک شنبه 14 آذر 1389, 11:53 صبح
سلام
دوستان میشه توابع vb رو با sql server2000 معادلسازی کرد؟
ممنون میشم کمکم کنید
یاعلی

Reza_Yarahmadi
یک شنبه 14 آذر 1389, 12:30 عصر
2 دستور زير رو امتحان كنيد

"Select * From tblNodes Where CharIndex(LTrim(RTrim('" & Text1.Text & "')),Path) <> 0"
--OR
"Select * From tblNodes Where Left(Path, Len(LTrim(RTrim('" & Text1.Text & "')))) = LTrim(RTrim('" & Text1.Text & "'))"

دوستان میشه توابع vb رو با sql server2000 معادلسازی کرد؟
بعضي از توابع موجود در زبانهاي برنامه نويسي توي SQL وجود داره (فقط بعضيها).