1 ضمیمه
فیلتر کردم فرم قبل از باز کردن آن
ا سلام و احترام
من یک فرم و ساب فرم دارم که کار جستجوی لحظه ای انجام میده میخواستم ببینم میتونم یکی از ردیف های اون فرم جستجو رو قبل از وارد شدن به فرم از طریق یک تکست باکس بیرونش که سه وضعیت انجام شد، جهت اطلاع و در دست اقدام داره رو بزنم وقتی که وارد فرم میشم یکی از این موارد فیلتر بشه و بعدش بشه جستجو کرد؟؟
فایل رو ضمیمه کردم
ضمیمه 151119ب
با سپاس
نقل قول: فیلتر کردم فرم قبل از باز کردن آن
برنامه شما رو ندیدم ولی اگر با docmd.openform فرم رو باز میکنین:
1- هم میتونین برای رکوردست فرم شرط where تعیین کنین
2- هم میتونین filter مشخص کنین
3- هم میتونین یک عبارت string به نام openargs فرم pass کنین (این چیزی هست که باید استفاده کنین)
در فرم میتونین openargs رو بخونین و هر کاری که میخواین باهاش انجام بدین!
استفاده از global variable یا tempvars هم که همیشه هست.
نقل قول: فیلتر کردم فرم قبل از باز کردن آن
نقل قول:
نوشته شده توسط
mazoolagh
برنامه شما رو ندیدم ولی اگر با docmd.openform فرم رو باز میکنین:
1- هم میتونین برای رکوردست فرم شرط where تعیین کنین
2- هم میتونین filter مشخص کنین
3- هم میتونین یک عبارت string به نام openargs فرم pass کنین (این چیزی هست که باید استفاده کنین)
در فرم میتونین openargs رو بخونین و هر کاری که میخواین باهاش انجام بدین!
استفاده از global variable یا tempvars هم که همیشه هست.
سلام
ممنون از پاسختون من اینجوری فرم رو باز کردم docmd.openform
متاسفانه مبتدی هستم این مواردی که گفتید رو جایی هست که بتونم به صورت رون ببینم و یاد بگیرم؟
سپاس فراوان
نقل قول: فیلتر کردم فرم قبل از باز کردن آن
مطمئنم که تمام این موارد قبلا بحث شده و نمونه و احتمالا آموزش هم هست براش!
با این وجود یک نمونه پیوست میکنم که همه مواردی رو که گفته شد یکجا داشته باشه.
1 ضمیمه
نقل قول: فیلتر کردم فرم قبل از باز کردن آن
فرم start سه بخش مجزا داره که هر کدوم برای نشون دادن یک مورد هست:
1- باز کردن فرم customers و انتخاب کشور بعنوان شرط WHERE
ضمیمه 151132
نقل قول: فیلتر کردم فرم قبل از باز کردن آن
کد بخش 1
Private Sub B1_Click() ' WHERE
If Me.Country.Value = AnyItem Then
TempVars!Location = ""
DoCmd.OpenForm "Customers", , , , , acDialog
Else
TempVars!Location = " Country=" & Me.Country.Value
DoCmd.OpenForm "Customers", , , "Country='" & Me.Country.Value & "'", , acDialog
End If
End Sub
1 ضمیمه
نقل قول: فیلتر کردم فرم قبل از باز کردن آن
2- باز کردن فرم customers و انتخاب کوئری CustomersByCity بعنوان فیلتر:
ضمیمه 151133
نقل قول: فیلتر کردم فرم قبل از باز کردن آن
کد بخش 2
Private Sub B2_Click() ' FILTER
If Me.City.Value = AnyItem Then
TempVars!Location = ""
DoCmd.OpenForm "Customers", , , , , acDialog
Else
TempVars!Location = " City=" & Me.City.Value
DoCmd.OpenForm "Customers", , "CustomersByCity", , , acDialog
End If
End Sub
نقل قول: فیلتر کردم فرم قبل از باز کردن آن
دقت کنید که با توجه به انتخاب کشور یا شهر caption فرم customers متناسب با اون تغییر میکنه
اینکار با تعیین TempVars!Location در فرم start و خوندن اون در form open فرم customers انجام میشه:
Private Sub Form_Open(Cancel As Integer)
Me.Caption = "Customers " & TempVars!Location
Me.InsideHeight = Me.Section(acHeader).Height + Me.Section(acDetail).Height * 10
End Sub
1 ضمیمه
نقل قول: فیلتر کردم فرم قبل از باز کردن آن
3- چهار تکسباکس داریم که مقادیر هر یک رو به یک روش به فرمی به نام Form1 میفرستیم:
ضمیمه 151134
نقل قول: فیلتر کردم فرم قبل از باز کردن آن
کد بخش 3
Private Sub B3_Click() ' OpenArgs
TempVars!Text2 = Nz(Me.TB2.Value, "")
Text3 = Nz(Me.TB3.Value, "")
DoCmd.OpenForm "Form1", , , , , acDialog, Nz(Me.TB1.Value, "")
End Sub
نقل قول: فیلتر کردم فرم قبل از باز کردن آن
کد form open فرم form1 برای خوندن مقادیر:
Private Sub Form_Open(Cancel As Integer)
Me.TB1.Value = Me.OpenArgs
Me.TB2.Value = TempVars!Text2
Me.TB3.Value = Text3
If CurrentProject.AllForms("Start").IsLoaded Then
Me.TB4.Value = Forms!Start!TB4.Value
End If
End Sub
نقل قول: فیلتر کردم فرم قبل از باز کردن آن
Option Compare Database
Option Explicit
Private Sub B1_Click() ' WHERE
If Me.Country.Value = AnyItem Then
TempVars!Location = ""
DoCmd.OpenForm "Customers", , , , , acDialog
Else
TempVars!Location = " Country=" & Me.Country.Value
DoCmd.OpenForm "Customers", , , "Country='" & Me.Country.Value & "'", , acDialog
End If
End Sub
Private Sub B2_Click() ' FILTER
If Me.City.Value = AnyItem Then
TempVars!Location = ""
DoCmd.OpenForm "Customers", , , , , acDialog
Else
TempVars!Location = " City=" & Me.City.Value
DoCmd.OpenForm "Customers", , "CustomersByCity", , , acDialog
End If
End Sub
Private Sub B3_Click() ' OpenArgs
TempVars!Text2 = Nz(Me.TB2.Value, "")
Text3 = Nz(Me.TB3.Value, "")
DoCmd.OpenForm "Form1", , , , , acDialog, Nz(Me.TB1.Value, "")
End Sub
Private Sub City_AfterUpdate()
Me.City.Value = Nz(Me.City.Value, AnyItem)
End Sub
Private Sub Country_AfterUpdate()
Me.Country.Value = Nz(Me.Country.Value, AnyItem)
End Sub
Private Sub Country_NotInList(NewData As String, Response As Integer)
Me.Country.Value = Me.Country.ItemData(0)
Response = acDataErrContinue
End Sub
Private Sub City_NotInList(NewData As String, Response As Integer)
Me.City.Value = Me.City.ItemData(0)
Response = acDataErrContinue
End Sub
Private Sub Form_Open(Cancel As Integer)
TempVars.Add "Location", ""
TempVars.Add "Text2", ""
Me.Country.Value = AnyItem
Me.City.Value = AnyItem
End Sub
Private Sub Form_Close()
TempVars.RemoveAll
End Sub
نقل قول: فیلتر کردم فرم قبل از باز کردن آن
متغیرهای global باید در یک ماجول جدا تعریف بشن (نه ماجول فرم یا ریپورت)
برای همین برای نگهداری مقدار تکسباکس TB3 یک متغیر public در یک ماجول جدا (module1) تعریف شده:
Option Compare Database
Option Explicit
Public Text3 As String
Public Const AnyItem As String = "------"
1 ضمیمه
نقل قول: فیلتر کردم فرم قبل از باز کردن آن
1 ضمیمه
نقل قول: فیلتر کردم فرم قبل از باز کردن آن
نقل قول:
نوشته شده توسط
parsa70
ا سلام و احترام
من یک فرم و ساب فرم دارم که کار جستجوی لحظه ای انجام میده میخواستم ببینم میتونم یکی از ردیف های اون فرم جستجو رو قبل از وارد شدن به فرم از طریق یک تکست باکس بیرونش که سه وضعیت انجام شد، جهت اطلاع و در دست اقدام داره رو بزنم وقتی که وارد فرم میشم یکی از این موارد فیلتر بشه و بعدش بشه جستجو کرد؟؟
فایل رو ضمیمه کردم
ضمیمه 151119ب
با سپاس
ضمیمه 151136
سلام
پیوست رو بررسی نمائید
نقل قول: فیلتر کردم فرم قبل از باز کردن آن
سلام دست هر دو شما بزرگوار درد نکنه.
نقل قول: فیلتر کردم فرم قبل از باز کردن آن
سلام
برای ریپورت ها چطوری باید اینکارو کرد؟؟ یعنی یک فیلد که چنتا گذینه رو داره فیلتر کنیم؟
سپاس
نقل قول: فیلتر کردم فرم قبل از باز کردن آن
در این مورد تفاوتی در روش کار بین فرم و ریپورت نیست