کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

به اشتراک گذاری اطلاعات کسب شده در اکسس از سایت آفیس و سایت های تخصصی خارجی
کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

به اشتراک گذاری اطلاعات کسب شده در اکسس از سایت آفیس و سایت های تخصصی خارجی

ویژگی FilterOn از فرم



Form.Filter Property


از ویژگی Filter برای تعیین زیر مجموعه ای از رکوردها استفاده کنید تا زمانیکه فیلتر روی فرم ، گزارش ، پرس و جو یا جدول اعمال می شود ، نمایش داده شوند.


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


Form.Filter="Id=101"

Form.FilterOn=True


برای اعمال فیلترِ خودکار زمان باز شدن فرمی ، در تنظیمات ویژگی رویداد OnOpen فرم ،  یک ماکرو را مشخص کنید که از اکشن یا عملکرد FilterApply استفاده می کند یا یک رویه رویداد ( Event ) که از متد ApplyFilter شئ Docmd استفاده می نُماید.


برای حذف فیلتر ، انتخاب باتن Apply Filter ، انتخاب Remove Filter/Sort در منوی Records  ، یا استفاده از ویژوال بیسیک در تنظبم ویژگی FilterOn به False


expression.ApplyFilter (FilterNameWhereConditionControlName)


حداقل یکی از دو آرگومان های متد ApplyFilter  را باید پر کرد. اگر یک مقدار برای دو آرگومان وارد شود آرگومان   WhereCondition برای فیلتر اعمال می گردد.


حداکثرطول آرگومان WhereCondition عدد ۳۲۶۷۸ کاراکتر است ( بر خلاف آرگومان اکشن یا عملکرد WhereCondition در ماکرو که حداکثر طول ۲۵۶ کاراکتر را می گیرد.)





خبرگزاری فارس: لطف‌اله شیبانی با اشاره به برخورد با زنانی که در اماکن عمومی مبادرت به کشف حجاب می کنند، گفت: طبق بخش نامه دادستان کل کشور مبنی بر ممنوعیت کشف حجاب، برخورد با زنانی که هرگونه رابطه استخدامی با ادارات دولتی دارند و مبادرت به کشف حجاب می کنند، در دستور کار است.



بهمن ۱۴۰۱ : اورخان عسگروف مسئول حراست کشته شده ( در تهران ) از نیروهای امنیتی حکومت آذربایجان مستقر در سفارت بوده است.



به گزارش«انتخاب»، به نقل از ترند، آیخان حاجی‌زاده، سخنگوی وزارت خارجه آذربایجان در گفت‌وگویی با تی آر تی اعلام کرد که دولت باکو درصدد است تا در آینده‌ای نزدیک سفارت خود در ایران را تخلیه کند.

  وی در ادامه گفت: هر کشور مسئول تضمین امنیت سفیران در کشورش است.

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

حاجی‌زاده تاکید کرد که "کمپین اخیر ضد آذربایجانی در رسانه‌های ایران زمینه‌ساز این حمله بوده است.

همچنین تی آر تی گزارش داد که فرد مسلح با سلاح کلاشینکف مسئول امنیتی سفارت باکو در تهران را کشته است.


وزارت امور خارجه آذربایجان نیز با انتشار بیانیه ای درباره حمله به سفارت این کشور توضیحاتی داده و اشاره کرده است که در این حادثه یک نفر با اسلحه کلاشینکف حمله کرد و رییس حراست سفارت باکو را کشت، دو محافظ سفارت نیز در جلوگیری از این حمله زخمی شدند. وضعیت آنها رضایت بخش است. این وزارتخانه افزود: کمپین ضد جمهوری آذربایجان در ایران به حمله به سفارت ما در تهران کمک کرد و ایران را به بی‌توجهی به درخواست‌های باکو برای افزایش امنیت سفارت ما در تهران، متهم می‌کنیم.



بهمن ۱۴۰۱ : 

کی روش در جدیدترین مصاحبه با سایت «کوره» مصر گفت: تمام مدارک خود را به وکیلم ارسال کردم تا این قضیه را از فیفا پیگیری کند. همچنان من نتوانستم مطالبات گذشته خودم را را بگیرم و فدراسیون مصر هم جواب تماس های من را نمی دهد.



















ساخت کوئری از دو جدول در اکسس


نوشتن ساب کوئری



دوستان اکسسی نه فراتر از استاندارد اکسس حتما عملگرهای منطقی را با دقت مطالعه کنید چون در کوئری های پیشرفته کارگشا هستند.( ما هم مثل شما فراگیر بوده ایم پس تلاش کنید )











در تصویر بالا جدولی به نام U1 با یک فیلد Unit ساخته شده ( که نتیجه و داده ای ندارد ) باید کوئری نوشته شود که در صورت خالی بودن آن تمام داده های جدول تصویر اول یعنی U ( شامل دو فیلد Unit,Dia ) نمایش داده شود.( مثل تصویرزیر )




در داخل جدول U1 متن یا متن هایی زیر هم ، یا وارد میشه یا در جائی ( فرمی ) توسط دستور  insert into به این جدول موقت یا Temporary اضافه می شود.حال می خواهیم بر اساس این جدول ، جدول U که شامل دو فیلد Unit و Dia است فیلتر شود....  از Select استفاده کردیم در Where دو شرط با عملگر Or نوشتیم یکی داده های فیلد Unit مساوی داده های آن فیلد در جدول U1 باشد و دیگری کانت یا رکوردهای جدول U1 برابر 0 باشد .


عملگرهای منطقی را با دقت مطالعه کنید : 


False Or False=False

True Or False=True

True Or True=True

True Or Null=Null


توضیح بیشتر :

حالت اول -  فرض کنیم جدول U1 خالی باشد (یعنی داخل فیلد Unit داده ای Export نشده باشد ) جوابِ اشتراک U و U1 فالز ( False است ) و جواب شمارش ( کانت ) جدول U1 نیز که صفر است True میشود در نتیجه طبق گفته بالا Fasle Or True  تمام داده های جدول U ( البته طبق فیلدهایی که در Select Query ) نوشتید نمایش داده خواهد شد 


حالت دوم - فرض می کنیم در فیلد Unit از جدول U داده هایی تایپ یا Export شده ، بنابراین اگر خوش بین باشیم که یک یا چند داده در دو جدول مشترک باشند جواب True خواهد بود و در شرط بعدی جوابِ کانت جدول U1 دیگر صفر نیست و False می شود ( چرا False می  شود ؟؟؟؟!!!! چون در شرط بعد از Or گفتیم که کانت جدول در صورتی True در نظر گرفته شود که نتیجه اش صفر را برگرداند) لذا با توجه به گفته عملگرها True Or False در نتیجه مشترک ها ( داده های فیلد Unit از جدول U که در U1 وجود  دارد ) نمایش داده خواهد شد فرضا اگر در جدول U1 داده 120A وارد شده باشد جدول U طبق همین داده فیلتر خواهد شد یعنی یک ردیف در جواب کوئری خواهید دید.


حالت سوم - کوئری نتیجه ای ندارد ، شرط قبل از Or >>> اگر جدول U و U1 در داده ی فیلد Unit اشتراکی نداشته باشند ( یعنی داده یا داده هایی در جدول U1 و فیلد Unit وارد شده باشد که اصلا در فیلد مربوطه در U موجود نباشد )  جواب False است ،  جوابِ شرط بعد از Or هم چون قرار است صفر بودن کانت جدول صحت کار باشد ولی عدد غیر صفر را در این حالت ( جدوا U1 خالی نیست ) نشان میدهد پس نتیجه این شرط هم False است .... False Or False باعث میشود که کوئری Result نداشته باشد چون اشتراکی در جداول در فیلد Unit ندارند.


شهریور ۱۴۰۱ :


دختر ۲۲ ساله کردستانی که همراه خانواده اش به تهران سفر کرده بود، توسط گشت ارشاد، جلب و ساعاتی بعد با عارضه قلبی و در حالی که هوشیاری نداشته به بیمارستان برده می شود و در لحظه نگارش این متن، وضعیت مساعدی ندارد.


دایی ‎مهسا امینی دختری که پس از بازداشت در اداره پلیس به کما رفت در مصاحبه با روزنامه اینترنتی فراز گفت:

قلبش نیمه‌فعال شده و کلیه‌هایش دیگر کار نمی‌کنند. دکترها گفتند فقط دعا کنید. اینجا ما طلبکاریم.

فرمانده پلیس آمد، قول دادند تصویر دوربین‌های مداربسته را نشان‌مان دهند.

امروز نوبت دختر ما بود، فردا نوبت دختری دیگر است


چنانچه آنطور که ضدانقلاب می‌گوید و این فرد در اثر شکنجه به کما رفته حتما باید با متخلفین و خاطیان برخورد شود و پلیس باید در این زمینه پاسخگو باشد. مجازات برخورد با بی‌حجابی ضرب و شتم نیست و در سابقه پلیس نیز تاکنون گزارشی از برخورد فیزیکی با بدحجابان گزارش‌ نشده است.


به گزارش تجارت‌نیوز، مهسا امینی دختری سنندجی بود که در بزرگراه شهید حقانی تهران بازداشت شد. اعتمادآنلاین نوشت: دایی ‌مهسا امینی⁩ فوت او را تایید کرد.



انا للّله و انا الیه الراجعون و شوربختانه خانم مهسا امینی این دختر ۲۲ ساله و میهمان  پایتخت در تاریخ ۲۵ شهریور ۱۴۰۱ یا با کفایت پلیس یا بد شانسی خودش وفات نمود تسلیت به خانواده ایشان.



ای کاش آقای سید علی خامنه ای در مراسم پیاده روی اربعین و راهپیمائی روز ۲۲ بهمن دستور دستگیری بدحجابان یا باصطلاح بدپوششان را صادر کند و به مصلحت نظام خویش نیاندیشد که هیچ حکومتی جز حکومت مهدی پابرجا نیست حتی اگر در مسیر آن باشد.













Filter و Requery در اکسس


لطفا نظر سنجی فراموش نشود



نمونه ای از فیلتر در زیر که از سایت های خارجی استخراج شده سال 2008



SELECT *
FROM Vergabeumfang
WHERE 
(
    Vergabeumfang.VSS_LAW Like "*" & [Forms]![Vergabeumfang]![VSS_LAW_Box] & "*" Or Vergabeumfang.VSS_LAW Is Null
)
AND 
(
    Vergabeumfang.V_Commodity_Name Like "*" & [Forms]![Vergabeumfang]![Commodity_Name_Box] & "*" Or Vergabeumfang.V_Commodity_Name Is Null
)
AND 
(
    (
        Vergabeumfang.S63T2 = iif([Forms]![Vergabeumfang]![S63T2_box]=-1, True, -999)
    )
    OR
    (
        Vergabeumfang.S63T4 = iif([Forms]![Vergabeumfang]![S63T4_box]=-1, True, -999)
    )
)






در باتن  از متد Requery استفاده شده



فرق متد Docmd.Requery و متد Me.Requery در زیر قید شده مطالعه نمائید ... زبان برنامه نویسی زبان انگلیسی است پس سعی کنید نسبتا بفهمید


In addition, when you use the Requery action or the DoCmd.Requery method, Microsoft Access closes the query and reloads it from the database, but when you use the Requery method, Access reruns the query without closing and reloading it. Note that the ActiveX Data Object (ADO) Requery method works the same way as the Access Requery method.












.












فیلتر در اکسس


در تصویر زیر سه Toggle Button در OptionGroup با نام Frame5 قرار گرفته و ولیوی آنهای به ترتیب 0 تا 2 است با کلیک روی اولین باتن ،  تمام رکوردهایی که فیلد chk آنها تیک خورده یا نخورده در سابفرم آورده میشود Forms!Form1!Frame5=0 ، کلیک روی باتن دوم رکوردهایی که فیلد chk آنها غیر صفر است در سابفرم لیست میشود و باتن آخر هم لیست رکوردهایی  است که فیلد chk آنها صفر یا تیک ندارند 




Select-Query-Access-


filename=trysql_create_table









در تصویر زیر فرمی Simulate شده که سه کنترل CheckBox برای فیلتر کردن گرید A تا B ( فیلد Grade ) و دو کنترل CheckBox دیگر برای فیلتر کردن تیک خورده ها یا نخورده ها ( فیلد chk )، دارد چنانچه هیچکدام از ۵ چک باکس تیک نخورده باشند کل داده نمایان خواهد شد.( تعداد کل ورودی در تصویر ۹ رکورد بوده )


سمت راست تصویر چهار رکورد نمایش داده شده دقیقا تیک چک باکس گرید A و تیک چک باکس ( Unchecked مربوط به فیلد chk ) در فرم زده شده ...  طبق عبارت Sql کوئری شامل  رکوردهایی با گرید A که تیک  Chk آنها نخورده باشد.


بین هر فیلد از عملگر منطقی AND استفاده میشود و برای لیست کردن چند آیتم خاص از یک فیلد OR کاربرد دارد.





?'A' AND FALSE=FALSE

?'A' AND TRUE=NULL

'A' OR TRUE=TRUE

'A' OR FALSE=0

'A' OR TRUE=1

FALSE OR TRUE=TRUE

TRUE OR FALSE=TRUE

TRUE AND FALSE=FALSE

FALSE AND FALSE=FALSE

FALSE OR FALSE=FALSE

NULL AND FALSE=FALSE

NULL AND TRUE=NULL

NULL AND NULL=NULL


برای ارسال داده ها به اکسل نام کوئری را در دستور DOCMD.OUTPUTTO قرار می دهید.


Method vba/api/access.docmd.outputto


در تصویر زیر ، تصویر اول تمام رکوردهای جدول t نمایش داده شده شامل ۹ رکورد ایجاد شده با INSERT INTO ، تصویر سوم که فیلد DATE دارد شامل رکوردهایی است که کوچکت مساوی یک تاریخ خاص و نیز کوچکتر مساوی عدد 105 است ، تصویر چهارم یا آخر در تصویر زیر ، از رکوردهای داخل تصویر سوم آنهایی که تیک چک فیلد CHK آنها زده شده ( یا باصطلاح غیر صفر است ) را نمایش میدهد که شامل دو رکورد است .


در لینک زیر روش بیان شده ، البته هزینه بر است  (کلا در چند خط خیلی کوتاه و شامل 4 تصویر که بعد از اعمال کد SQL جدول فیلترشده) . برای ارسال داکیومنت آن درخواست دهید و بعد از واریز مبلغ ده هزار تومان به ایمیل شخصی ارسال خواهدشد.


Multi Filter  Select-Query-Access-





در تصویر زیر ، رکوردهایی که نام محصول به les ختم می شود لیست شده البته در SQL بجای علامت * در اکسس از % استفاده شده.اگر در اکسس عبارت جستجو بین دو * قرار بگیرد تمام رکوردهایی که نام محصول شامل آن عبارت است را می آورد چه آخر باشد چه هر جای دیگر رشته در فیلد نام محصول.



MULTIFILTER IN ACCESS : 



در تصویر زیر اینطور تصور شده که فرمی با دو چک باکس برای فیلتر کردن فیلد Available و یک کنترل تکست باکس برای فیلتر کردن محتویات فیلد GradeNo موجود است.


در تصویر در صورت تیک داشتن یا نداشتن جفت تکست باکس کل رکوردها که 11 رکورد با Insert Into ایجاد شده در سابفرم نمایش داده میشود. در صورت تیک چک باکس اول رکوردهای دارای  مقدار صفر یا False فیلد Available و تیک چک باکس دوم مقادیر غیر صفر یا True لیست میشوند . البته سابفرم باید Requery شود تا نتیجه فیلترشدن را ببینید.


برای اینکه در سابفرم تمام رکوردهای False و True فیلد Available نمایش داده شود می بایست  : 

Available=False  Or Available=True

حال اگر قرار باشد فیلد Available در کوئری بیلدر مقادیر ولیوی چک باکس ها در فرم را بگیرد میشود :( در صورتیکه جفت چک باکس ها تیک نخورده باشند = False )

Available=False  Or Available=False

و در اینصورت فقط  مقادیر صفر  یا False ها نمایش داده میشود ولی ما می خواهیم در صورت تیک نداشتن دو چک باکس و داشتن ولیوی صفر دو مقدار False  و True را مشاهده بنمائیم.پس باید یکی از طرفین مخاف False  شود.


FALSE OR  <>FALSE=TRUE   نمایش همه

TRUE  OR   <>FALSE = هاTRUE نمایش 

FALSE OR  <>TRUE= ها FALSE نمایش

TRUE  OR  <>TRUE=TRUE نمایش همه




در تصویر زیر دو تکست باکس تصور شده که در صورت تایپ عدد در این دو باکس اعدادی بین این دو که در جدول باشد نمایش داده میشود ، در صورتیکه یک باکس یا هر دو خالی بود از فیلتر در می آید . البته بدین شکل که اگر باکس دوم خالی باشد همه ی رکوردها و اگر باکس اول خالی باشد رکوردها تا مقدار باکس دوم مشاهده میشود در این دو تکست باکس چک میشود که اگر PartNo  در جدول نباشد ارور بدهد در رویداد LOST FOCUS می توان با DlookUp چک کرد اگر نبود  پراپرتی OldValue  مقدار Value  تکست باکسی شود که در حال Exit از آن هستید از رویداد Exit  هم میشود بهره برد.


حال در تصویر زیر  تکست باکس اول در فرم Null و تکست باکس دوم 1003 است ( جدول کلا 11 رکورد دارد )


(GradeNo>='' Or True) And (GradeNo<='1003' Or False) 


عبارت بالا برای زمانی نیست که در دو تکست باکس اعدادی تایپ شود که در جدول وجود ندارد یا حتی در آنها کاراکتر غیر عددی وارد شود اگر صحت موجود بودن مقادیر در جدول چک نشود این عبارت False را بر می گرداند و هیچ رکوردی نمایش داده نخواهد شد.

(GradeNo='123' Or False)  AND (GradeNo='896' Or False) 

False And False=False  ' No Record




بررسی عبارات زیر : 


(GradeNo Between '458' And  '678' Or False Or False)

458 , 678 Not Exist in Above Table

FALSE AND FALSE OR FALSE OR  FALSE=FALSE

پس چون نتیجه FALSE است رکوردی نمایش داده نخواهدشد.

(GradeNo Between Null And  '678' Or True Or False)

678 Not Exist in Above Table

NULL AND FALSE OR TRUE OR  FALSE=TRUE

پس چون نتیجه TRUE است تمام رکوردها نمایش داده خواهدشد.

(GradeNo Between Null And  Null Or True Or  True)

Two Boxes Are Null

NULL AND NULL OR TRUE OR  TRUE=TRUE

پس چون نتیجه TRUE است تمام رکوردها نمایش داده خواهدشد.


برای اینکه مقادیر وارد شده در دو تکست باکس را صحت سنجی نکنیم و در صورت تایپ مقداری خارج از جدول می بایست یک عبارت دیگر به شرط اضافع کرد مثل 

OR (TRUE AND FALSE) 

که در صورت پر بودن تکست باکس ها ،دو TRUE و FALSE داخل پرانتز TRUE شوند و در نتیجه کل رکوردها نمایش داده شوند و در اینجا جستجو کننده پی خواهد برد که یکی از مقادیر تایپ شده یا هر دو در جدول وجود ندارد البته جلوگیری از تایپ عددی یا تاریخی خارج از محتویات فیلد کار خوب و استانداردی است ولی خوب  کوئری نویسی آسان بنظر میرسد ولی می بینید به همین سادگی که گفته شد نیست مگر اینکه عملگرهای منطقی را کاملا فرا بگیرید.

>>>>>> nullguide-oper

 اگر دو تکست باکس  پر باشند ولی در جدول ناموجود می توانید عبارت بالا را اضافه کنید . ( ... BETWEEN....AND...OR...OR)

(NULL(FALSE) AND NULL(FALSE) OR TRUE OR TRUE )OR (TRUE AND TRUE)=TRUE   (NULL OR TRUE=TRUE)

تکست باکس اول NULL است و تکست باکس دوم مقداری که در فیلد GRADENO وجود ندارد یا حاوی کاراکتر غیر عددیست.

(NULL(FALSE) AND FALSE OR FALSE OR TRUE) OR (TRUE AND FALSE)=TRUE

NULL AND FALSE=FALSE

FALSE OR FALSE OR TRUE=TRUE

TRUE OR (TRUE AND FALSE)=TRUE OR FALSE=TRUE


 جستجو بین دو تاریخ : 


دو کنترل تکست باکس به نام های TXTDATEFROM و TXTDATETO . (   سعی کنید دو تا باکس را چک کنید اگر تاریخ اولی از باکس دومی بزرگتر بود خطائی صادر کرده یا باکس را NULL در نظر بگیرد.



BETWEEN TXTDATEFROM AND TXTDATETO OR FORMS!FORM1!TXTDATEFROM IS NULL OR FORMS!FORM1!TXTDATETO IS NULL


فرضا در جدول تاریخ های 1397/01/30 و 1398/02/01 نداریم تکست باکس ها را با این دو رشته پر می کنیم بعد از خروج از تکست باکس ها پراپرتی VALUE میشود مقادیری که گفته شد.چون دو تاریخ در جدول نیست پس برای هر کدام FALSE را بر می گرداند و نتیجه آخر FALSE است و هیچ رکوردی نمایش داده نخواهد شد.

(FALSE AND FALSE OR FALSE OR FALSE) =FALSE OR FALSE=FALSE  ' NO RESULT

اگر تکست باکس اول NULL باشد و تکست باکس دوم دارای رشته ای باشد که داخل جدول نباشد( =FALSE) و بالعکس تمام رکوردها لیست خواهند شد :

(NULL AND FALSE OR TRUE OR FALSE)=FALSE OR TRUE OR FALSE=TRUE 'SHOW ALL RECORDS

تصویر زیر ، خود گویای توضیحات ارائه شده بالا است . جدول شامل کلا ۱۱ رکورد است یکی از تکست باکس ها خالیست و برابر NULL و در دیگری عددی خارج از اعداد جدول ، زمان اجرای کوئری تمام ۱۱ رکورد نمایش داده شده.



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



نظرات باز است در زیر همین یادداشت هم می توانید اعلام نظر بفرمائید و نظرسنجی فراموش نشود !!!








( Select Query ( Access برای مشاهده محتویات نیازمند واریز مبلغ مورد نظر است

این مطلب توسط نویسنده‌اش رمزگذاری شده است و برای مشاهده‌ی آن احتیاج به وارد کردن رمز عبور دارید.