PDA

View Full Version : سوال: خروج از فيلتر با كد VBA



Rasool-GH
یک شنبه 27 آذر 1390, 09:40 صبح
سلام دوستان
با چه كدي ميشه فرم رو با كد VBA از حالت فيلتر خارج كرد . در حال حاضر براي خارج كردن فرم از حالت فيلتر از قسمت فيلتر نوار Navigation Buttone استفاده ميكنم و لي مجبورم كه اون رو غير فعال كنم كه براي كاربر اشتباه پيش نياد

Mohammad_chz
یک شنبه 27 آذر 1390, 09:51 صبح
دوست عزیز برای فیلتر کردن از طریق کد میتونید از کد زیر استفاده کنید

Me.FilterOnLoad = True
Me.Filter = "your filter string"

برای حذف فیلتر می تونید filterOnLoad را برابر با False کنید
یا رشته فیلتر رو حذف کنید.

Rasool-GH
یک شنبه 27 آذر 1390, 12:47 عصر
ممنون از توجه و راهنمايي شما

Abbas Amiri
یک شنبه 27 آذر 1390, 21:17 عصر
برای اعمال فیلتر
Me.Filter="FieldName=" & var
Me.FilterOn=True

برای رفع فیلتر
Me.FilterOn=False

Rasool-GH
دوشنبه 28 آذر 1390, 09:27 صبح
ممنون اقاي اميري
من هم با filteronload نتيجه نگرفتم filteron رو امتحان كردم جواب داد
ممنون از لطفت

Rasool-GH
پنج شنبه 29 دی 1390, 10:40 صبح
سلام مجدد
اقای امیری در این کد با خارج شدن از فیلتر فرم به رکورد اول برگشت داده میشه . چه کدی میشه استفاده کرد که با خارج شدن از فیلتر رکورد بعدی نماشی داده بشه
مثلا در رکورد 500 هستیم و با زدن یک باتون از فیلتر خارج میشیم ولی به رکورد 1 برنگردیم بلکه به رکورد 501 بریم

Abbas Amiri
پنج شنبه 29 دی 1390, 17:50 عصر
از روش زیر هم می توان استفاده کرد:


Dim n As Long
n = ID
Me.FilterOn = False
DoCmd.SearchForRecord , , , "ID=" & n

Rasool-GH
چهارشنبه 05 بهمن 1390, 11:09 صبح
سلام اقاي اميري
در كد شما خط 2 رو به اين شكل نوشتم n = ID+1 كه به ركورد بعدي هم بره ولي به يك مشكل برخوردم .
جايي كه يك ركورد حذف شده و ID بيش از يك شماره افزايش داره توليد اشكال ميكنه
1. دو راه به نظر من ميرسه يكي اينكه هر بار كه يك ركورد حذف ميشه همه ركوردهارو دوباره شماره گزاري كنم (خيلي منطقي نيست)
2. يا اينكه از كدي استفاده كنم كه مستقيما به ركورد بعدي بره (بعد از كد شما از دستور Me.Recordset.MoveNext استفاده كنم )
در راه دوم يك مقدار نرم افزار كند تر ميشه . شما كدوم روش رو پيشنهاد ميكنيد

Rasool-GH
سه شنبه 11 بهمن 1390, 18:07 عصر
سلام دوستان
من از کد پست 7 در روال Lost Focus یک تکست باکس استفاده کردم که بعد از خروج به رکوردی برم که شماره اون تایپ شده ولی بعد از خروج از باکس فکوس به باکس برمیگرده
کی میتونه کمک کنه

Abbas Amiri
سه شنبه 11 بهمن 1390, 18:40 عصر
تکست باکس مبدا در فرم و مقصد در سابفرم قراردارد ؟

Rasool-GH
سه شنبه 11 بهمن 1390, 19:58 عصر
سلام اقای امیری
نه همه در یک فرم هستند
الان یه نمونه میزارم

Rasool-GH
چهارشنبه 12 بهمن 1390, 08:09 صبح
سلام
مشكل اينه كه وقتي از باكسي كه كنار باتون جستجو قرار داره خارج ميشم كنترل دوباره به همونجا برميگرده
يك شرط گزاشتم كه در صورت خالي بودن باكس كد اجرا نشه ولي باز هم مشكل باقيه .

Abbas Amiri
چهارشنبه 12 بهمن 1390, 19:24 عصر
کد موردنظر را درروال After_Update قرار دهید


Private Sub DKS_AfterUpdate()
If Nz(DKS, "") <> "" Then
DoCmd.SearchForRecord , , , "shomaredastorekar=" & DKS
DKS = ""
End If
CB214.SetFocus
End Sub

mazoolagh
پنج شنبه 13 بهمن 1390, 18:44 عصر
DOCMD.SHOWALLRECORDS

Rasool-GH
شنبه 15 بهمن 1390, 13:07 عصر
سلام اقاي اميري
به دليل لينكه من ميخوام كد رو از فرم جستجو به فرم اصلي انتقال بدم مجبورم كه كد رو در Lost Focus بنويسم در اين مورد چه راهي رو پيشنهاد ميكنيد

Abbas Amiri
شنبه 15 بهمن 1390, 21:01 عصر
Forms!FormDest.SetFocus
Forms!FormDest!ControlName.SetFocus

Rasool-GH
یک شنبه 16 بهمن 1390, 20:00 عصر
سلام اقای امیری .
درست متوجه نشدم که چکار کنم .
اول فکوس رو ببرم روی فرم و بعد انتقال بدم روی ابجکتی که میخوام ؟
توی نمونه خیلی از روش ها رو امتحال کردم ولی هر کدوم یک نقصی داره .

شاید هم من روش درستی رو استفاده نکردم . اگر راه بهتری هست لطفا راهنمایی کنید