PDA

View Full Version : ساخت فرم جستجوي پويا



kusha313
دوشنبه 26 تیر 1391, 12:46 عصر
با سلام خدمت اساتيد محترم
من فرمي ساختم كه ميخوام كاربر با پركردن هركدام از فيلدها وقتي روي دكمه جستجو كليك مي كند اطلاعات نشان داده شود كدهاي مربوط به 2 تا از فيلدهام رو نوشتم ولي در هنگام ديباگ به من ارور ميده اگه ممكنه اشكالش رو به من بگيد


Private Sub Command16_Click()
Dim strSearch1 As String
Dim strSearch2 As String
Dim strSearch3 As String
If Not IsNull(term_code) Then
strSearch = "([term_code]='" & term_code & "') AND "
Else: strSearch = " "
End If
If Not IsNull(term_name) Then strSearch = strSearch & "([term_name]='" & term_name & "')AND"
SQL = "select * from term where" & strSearch


'If Not IsNull(gavahi_type) Then strSearch = strSearch & "([gavahi_type]='" & gavahi_type & "' ) AND "
'If Not IsNull(term_amount) Then strSearch = strSearch & "([dateofresive]>= #" & Text0 & "# ) AND "
'If Not IsNull(start_date) Then strSearch = strSearch & "([start_date]='" & start_date & "' ) AND "
'If Not IsNull(teacher) Then stLinkCriteria = stLinkCriteria & "([teacher]='" & teacher & "') AND "
'If Not IsNull(day) Then stLinkCriteria = stLinkCriteria & "([day]='" & day & "') AND "
'If Not IsNull(time) Then stLinkCriteria = stLinkCriteria & "([time]='" & time & "') "


n = Len(SQL)
If n > 0 Then strSearch = Left(SQL, n - 4)
DoCmd.OpenReport 1, acViewPreview, , strSearch, acWindowNormal
End Sub
[/LTR_INLINE]
[/LTR_INLINE]

kusha313
دوشنبه 26 تیر 1391, 12:49 عصر
فراموش كردم بگم فرم من در ارتباط با جستجوي دوره هاي برگزار شده توسط مركز آموزشيه كه نام دوره يا كد دوره يا هردو اگر از طرف كاربر وارد شد نتيجه جستجو را مشخص كند

Abbas Amiri
دوشنبه 26 تیر 1391, 22:44 عصر
به احتمال قوی اگر بعد خط سوم ازآخر عبارت زیر اضافه شود مشکل خواهد شد.


SQL = SQL & ")"

saam_sum
دوشنبه 26 تیر 1391, 22:55 عصر
سلام
خطي كه دستور اس كيو ال رو مشخص كرده ايد يك مشكل جزيي داره و اون اينه كه بعد از where فيلدي از ديتابيس مشخص نشده
به اينصورت
Select * from mydata where myfield=" &strsea"

kusha313
چهارشنبه 28 تیر 1391, 09:16 صبح
ممنون از دوستان ولي حل نشد اروري كه ميده اينه :
syntax error in expersion 'select * from term where [([term_code]='18')n در ضمن saam-sum عزيز من توي كدهاوقتي strsearch رو كدگذاري كردم گفتم كدوم فيلد انتقال پيدا كنه به نظرتون بازهم بايد نام فيلد رو تك تك منتسب كنم ؟
خودم فكر ميكنم اين مشكل يعني ارتباط اين پروسيجر با ديتا بيس اگر حل بشه مشكل من هم حل خواهد شد
اصلا من كلا يك فرم پويا رو با ماكرو نمي تونم بسازم؟حتما بايد كد نويسي كرد تا يك گزارش دلخواه به دست آورد؟

saam_sum
چهارشنبه 28 تیر 1391, 14:39 عصر
If Not IsNull(term_name) Then strSearch = strSearch & "([term_name]='" & term_name & "')AND"
SQL = "select * from term where" & strSearch


لطفا منظورتون رو از قسمتی از کدتون که مشخص کردم بفرمایید. چون اینطور که از error مشخصه مربوط به همین خطه

Abbas Amiri
چهارشنبه 28 تیر 1391, 18:44 عصر
در برنامه تان در کد مندرج درپست اول ، یک خط به آخر مانده Breakpoint بگذارید تا برنامه درآنجا متوقف شود سپس در( Immediate window (ctrl+G عبارت Print strSearch راتایپ واجرا کنید تا مقدار بدست آمده چاپ شود . با بررسی آن عبارت میتوان به مشکل دستور سیکیوال شما پی برد

kusha313
شنبه 31 تیر 1391, 13:34 عصر
ممنون از شما دوستان محترم
مشكل من با استفاده از دستور IIF به صورت تو در تو در محيط sql حل شد البته در محيط ويژوال همچنان نميدونم چطوري بايد كار كنم به هر حال از لطفتون سپاسگزارم