PDA

View Full Version : مشکل در نمایش رکودهای با حتی یک گزینه خالی



amir0190
چهارشنبه 23 فروردین 1391, 10:11 صبح
سلام دوستان
مشکل این کد چیه؟ فقط رکودهایی نمایش داده می شه که تمام گزینه هاش پر شده باشه
مثلا اگه ما برای یه رکود 4تا گزینه داشته باشیم حتی اگه یه دونش هم خالی باشه (که کلید اصلی هم نیست) تو فیلتر گیری نمایش داده نمیشه



Private Sub Combo4_AfterUpdate()
SetFilter
End Sub
Private Sub Combo4_Click()
End Sub

Private Sub Combo4_NotInList(NewData As String, Response As Integer)
End Sub
Private Sub Combo56_AfterUpdate()
SetFilter
End Sub

Private Sub Combo56_Click()
End Sub

Private Sub Combo6_AfterUpdate()
SetFilter
End Sub

Private Sub Combo6_Click()
End Sub

Private Sub Combo8_AfterUpdate()
SetFilter
End Sub

Private Sub SetFilter()
Dim strSource As String
strSource = ListSource & " WHERE [city] LIKE '" & Nz(Combo8) & "*'" & _
" AND [Name]LIKE '" & Nz(Combo6) & "*' AND [date] LIKE '" & Nz(Combo4) & "*'" & _
" AND [name_pedar]LIKE '" & Nz(Combo56) & "*' "

listnam.RowSource = strSource
End Sub

Abbas Amiri
چهارشنبه 23 فروردین 1391, 21:14 عصر
عبارت ListSource را کجا تعریف ویا مقداردهی کرده اید که احتمالا باید چیزی مثل عبارت زیر باشد


ListSource="SELECT * FROM MyTable"

amir0190
پنج شنبه 24 فروردین 1391, 13:46 عصر
سلام جناب امیری ممنون از پاسختون؛ [خط دوم] کد کاملش به صورت زیر است. البته نمونه فایل هم گذاشته بودم


Option Compare Database
Const ListSource As String = "SELECT * FROM Table1"

Private Sub cmdOpenReport_Click()
Dim Qdf As QueryDef
Set Qdf = CurrentDb.QueryDefs("Query1")
Qdf.SQL = listnam.RowSource
Set Qdf = Nothing
DoCmd.OpenReport "Report1", acViewPreview
End Sub

Private Sub Combo4_AfterUpdate()
SetFilter
End Sub

Private Sub Combo4_Click()
End Sub

Private Sub Combo4_NotInList(NewData As String, Response As Integer)

End Sub

Private Sub Combo56_AfterUpdate()
SetFilter
End Sub

Private Sub Combo56_Click()

End Sub
Private Sub Combo64_AfterUpdate()
SetFilter
End Sub


Private Sub Combo6_AfterUpdate()
SetFilter
End Sub

Private Sub Combo6_Click()

End Sub

Private Sub Combo8_AfterUpdate()
SetFilter
End Sub
Private Sub SetFilter()
Dim strSource As String
strSource = ListSource & " WHERE [city] LIKE '" & Nz(Combo8) & "*'" & _
" AND [Name]LIKE '" & Nz(Combo6) & "*' AND [date] LIKE '" & Nz(Combo4) & "*'" & _
" AND [name_pedar]LIKE '" & Nz(Combo56) & "*'" & _
" AND [tarikh_paziresh]LIKE '" & Nz(Combo64) & "*'"



listnam.RowSource = strSource
End Sub

Private Sub Combo8_Click()

End Sub

Private Sub Detail_Click()

End Sub

Private Sub listnam_Click()

End Sub

Private Sub Toggle10_Click()

Dim ctl As Control
For Each ctl In Me.Controls
If ctl.Tag = "cboFilter" Then
ctl = Null
End If
Next
SetFilter

End Sub

Abbas Amiri
پنج شنبه 24 فروردین 1391, 14:46 عصر
کد زیر جایگزین کنید

strSource = ListSource & " WHERE Nz([city]) LIKE '" & Nz(Combo8) & "*'" & _
" AND Nz([Name]) LIKE '" & Nz(Combo6) & "*' AND Nz([date]) LIKE '" & Nz(Combo4) & "*'" & _
" AND Nz([name_pedar]) LIKE '" & Nz(Combo56) & "*' "

30yamand
پنج شنبه 24 فروردین 1391, 15:26 عصر
اگه عجله نداشته باشی برانمت رو بزار برات کامل کنم .

amir0190
جمعه 25 فروردین 1391, 19:43 عصر
کد زیر جایگزین کنید

strSource = ListSource & " WHERE Nz([city]) LIKE '" & Nz(Combo8) & "*'" & _
" AND Nz([Name]) LIKE '" & Nz(Combo6) & "*' AND Nz([date]) LIKE '" & Nz(Combo4) & "*'" & _
" AND Nz([name_pedar]) LIKE '" & Nz(Combo56) & "*' "

حیلی خیلی لطف کردین مشکل حل شد!
بازم مرسی


اگه عجله نداشته باشی برانمت رو بزار برات کامل کنم .
واقعا لطف دارید! مشکلم حل شد فقط اگه لطف کنید برنامه رو یجوری تنظیم کنید که با بازشدن فرمم برنامه اکسل مخفی بشه مثل نمونه زیر خیلی ممنون میشم (من دقیقا نمودم کدوم کدها رو باید بردارم و تو فرم خودم بذارم)
هم نمونه برنامه کل مخفی می شه رو میزارم هم فایل خودم رو!

Filter: فایل خودمه
Screen2: نمونه فایلی که اکسل مخفی میشه و فقط فرم می مونه (البته نمی خوام گزینه ای داشته باشه مثل این نمونه- فقط فرم بمونه و اکسل مخفی بشه)