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

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

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

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

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

IsZoomed ، IsIconic و IsWindowVisible از توابع Api ویندوزی ( چک کردن حالت نمایش پنجره )




-برداشت شده از داکیومنت سایت Office 




برای سیستم ۳۲ یا ۶۴ بیت


IsZoomed : 

آیا یک پنجره در حالت حداکثر سایز است ؟

Determines whether a window is maximized.


IsIconic :

آیا پنجره تعیین شده در حالت حداقل اندازه است ( دیدن فقط آیکون های پنجره) ؟

Determines whether the specified window is minimized (iconic).





#If VBA7 Then 

Private Declare PtrSafe Function IsZoomed Lib "user32" (ByVal hWnd As LongPtr) As Integer

Private Declare PtrSafe Function IsIconic Lib "user32" (ByVal hWnd As LongPtr) As Integer

#Else

Private Declare Function IsZoomed Lib "user32" (ByVal hWnd As Long) As Integer

Private Declare Function IsIconic Lib "user32" (ByVal hWnd As Long) As Integer

#End If




IsWindowVisible

تعیین حالت قابل روئت یا دید پنجره مشخص شده
Determines the visibility state of the specified window.

BOOL IsWindowVisible( [in] HWND hWnd )

اگر پنجره مشخص شده ، پنجره والد آن ( Parent ) ، پنجره والد والدش و به همین ترتیب ... دارای حالت WS_VISIBLE باشند ، مقدار بازگشتی غیر صفر و در غیر اینصورت مقدار بازگشتی این تابع صفر است


SetWindowPos :

اندازه ، موقعیت و ترتیب Z یک پنجره Child یا Pop-up یا top-level را تغییر می دهد. این پنجرهدها با توجه به ظاهرشان بر روی صفحه نمایش ( Screen ) مرتب می شوند. بالاترین پنجره بالاترین رتبه را دریافت می کند و اولین پنجره در ترتیب Z است.

Z-Order فرآیند سورت و قرار گیری پنجره هاست.بالاترین به پائین ترین ترتیب






















ویژگی StartupShowDBWindow



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

می توانید این ویژگی را برای پنهان کردن پنجره پایگاه داده به False تنظیم نُمائید لذا کاربر جداول ، پرس و جو ها ، ماکروها و ماژول های داخل پایگاه داده را نمی تواند مشاهده کند.

آسان ترین طریق برای تنظیم این ویژگی استفاده از انتخاب Display DataBase Window در دیالوگ باکس Startup است ، که با کلیک کردن Startup از منوی Tools در دسترس است . همچنین این ویژگی با استفاده از ماکرو یا ویژوال بیسیک هم قابل تنظیم است.

اگر چک باکس Use Access Special Keys در کادر محاوره Starup انتخاب شود یا اگر ویژگی AlliwSpecialKeys به True تنظیم شود کابران با فشردن کلید F11 می توانند پنجره پایگاه داده را مشاهده نمایند.



ShowWindowAsync:



حالت نمایش پنجره بدون انتظار برای عملیات  کامل شدن را تنظیم می کند



BOOL ShowWindowAsync( [in] HWND hWnd, [in] int nCmdShow );

nCmdShow :
SW_HIDE=0
SW_NORMAL=1
SW_SHOWMINIMIZED=2
SW_MAXIMIZE=3
SW_SHOWNOACTIVATE=4
SW_SHOW=5
SW_MINIMIZE=6
SW_SHOWMINNOACTIVE=7
SW_RESTORE=9

اگر عملیات با موفقیت انجام شد ، مقدار بازگشتی این تابع غیرصفر است.



ShowWindow() sets the visibility state of a window created by the calling thread, ShowWindowAsync() is used when the calling thread did not create the window.





BOOL ShowWindow( [in] HWND hWnd, [in] int nCmdShow )

Sets the specified window's show state.







پلیس راه یزد ۲۳ مهر ۱۴۰۲ :

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

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





















ویژگی TabStop و TabIndex




استفاده از ویژگی برای تعیین اینکه می توان از کلید Tab برای انتقال فوکس به یک کنترل استفاده کرد یا خیر ، نوع Boolean بصورت خواندنی و نوشتنی


زمان ساخته شدن یک کنترل روی یک فرم ، مایکروسافت اکسس بصورت خودکار به کنترل یک موقعیتی را در Tab Order فرم اختصاص می دهد.



هر کنترل جدید در آخر Tab Order ( برگه چیدمان کنترل ها ) قرار می گیرد.برای جلوگیری از در دسترس بودن یک کنترل زمان پرش بین کنترل های یک فرم ویژگی TabStop را به No تنظیم کنید.

در نمای فرم کنترل های پنهان یا غیر فعال در tab order باقی می مانند اما با فشردن tab در میان کنترل ها حذف می شوند.حتی اگر ویژگیهای TabStop آنها روی Yes تنظیم شده باشد.

تا زمانیکه ویژگی Enabled یک کنترل روی Yes تنظیم شده باشد،می توانید روی کنترل Click کنید یا از یک کلید دسترسی برای انتخاب آن استفاده کنید، بدون توجه به تنظیمات ویژگی TabStop. برای مثال می توانید ویژگی TabStop یک Command Button را روی No تنظیم کنید تا با فشردن Tab از انتخاب آن توسط کاربران جلوگیری کنید.با این حال ، آنها همچنان می توانند روی Command Button کلیک کنند تا آنرا انتخاب کنند.


استفاده از ویژگی TabIndex برای تعیین محل قرارگیری یا ترتیب یک کنترل در tab order روی یک فرم یا گزارش.نوع داده Integer و خواندنی-نوشتنی است. 


Me.LastName.TabIndex=2

 تنظیم ویژگی TabIndex به یک مقدار صحیح که نمایش دهنده موقعیت کنترل در tab order فرم است.تنظیم های معتبر ، صفر برای اولین موقعیت در tab تا تعداد کل کنترل ها منهای یک بر ای آخرین موقعیت در tab order است.برای مثال ، اگر فرمی ۳ کنترل دارد که هر کدام دارای ویژگی TabIndex هستند ، تنظیمات معتبر برای این ویژگی ، صفر ، یک و دو هستند.

تنظیم ویژگی TabIndex به عدد صحیح کمتر از Zero خطایی را تولید می کند.

مثال بعدی tab order یک Command Button و یک text box را برعکس می کند.بدلیل اینکه TextBox1 اول ایجاد شد ، تنظیم ویژگی TabIndex صفر را دارد و Command1 مقدار یک را داراست.


Sub Form_Click() 
 Me!Command1.TabIndex = 0 
 Me!TextBox1.TabIndex = 1 
End Sub























TabbedTextOutW








اگر پارامتر nTabPositions صفر و پارامتر lpnTabStopPositions نال باشد تب ها به هشت برابر میانگین عرض کاراکترگسترش می یابند.

اگر nTabPositions یک در نظر گرفته شود ،  tab stop ها با فاصله مشخص شده توسط مقدار اول در آرایه lpnTabStopPositions از هم جدا می شوند.

اگر آرایه lpnTabStopPositions حاوی بیش از یک مقدار باشد ، یک tab stop برای هر مقدار در آرایه تا تعداد مشخص شده توسط nTabPositions تنظیم می شود.
















MessageBoxTimeoutW


Undocument ... User32.Dll


MB_YESNOCANCEL=&H3
MB_YESNO=&H4
MB_RETRYCANCEL=&H5
MB_OKCANCEL=&H1
MB_OK=&H0
MB_ICONEXCLAMATION=&H30
MB_ICONHAND=&H10
MB_DEFBUTTON1=&H0
MB_DEFBUTTON2=&H100
MB_RIGHT=&H80000
MB_RTLREADING=&H100000
MB_TOPMOST=&H40000
IDOK=1
IDCANCEL=2
IDYES=6
IDNO=7



MessageBoxW(hWnd,lpText,lpCaption, uType:iFlags)


MessageBoxTimeoutW(hWnd,lpText,lpCaption, uType:iFlags,wLanguage, dwMilliseconds)


2000Milliseconds=2Seconds


iFlags=MB_OK or MB_SETFOREGROUND or MB_SYSTEMMODAL or MB_ICONINFORMATION
iResult=MessageBoxTimeoutW(Application_Handle, 'Test a timeout of 2 seconds.', 'MessageBoxTimeout Test', iFlags,0, 2000)











WS_CAPTION




پنجره ، نوار عنوان یا title bar دارد ( شامل مد  WS_BORDER


WS_CAPTION As Long = &HC00000
WS_MAXIMIZE As Long = &H1000000
WS_MAXIMIZEBOX As Long = &H10000
WS_MINIMIZE As Long = &H20000000
WS_MINIMIZEBOX As Long = &H20000
WS_SYSMENU As Long = &H80000
WS_POPUP As Long = &H80000000
WS_POPUPWINDOW(WS_POPUP | WS_BORDER | WS_SYSMENU)


Dim lngWindow As Long
Dim lFrmHdl As Long
FrmHnd=FindWindowA(vbNullString,frm.Caption)
lngWindow=GetWindowLong(FrmHnd,GWL_STYLE)
lngWindow=lngWindow And (Not WS_CAPTION)
SetWindowLong(FrmHnd,GWL_STYLE,lngWindow)
DrawMenuBar(FrmHnd)











جستجو کردن در سابفرم با استفاده از FindFirst



نرگس محمدی، پاداش پا گذاشتن روی احساسات مادرانه و اقدامات ضدایرانی‌اش را گرفت و برنده جایزه نوبل ۲۰۲۳ شد.



جستجوی عبارت گرفته شده در باکسی از فرم در زیرفرم آن (subFrmEmp)


تعریف متغیر شرطی

تنظیم یک شئ به یک متغیر

استفاده از متد FindFirst


sCriteria = "LastName = '" & Me.txtLastName & "'"
Set rstEmp= Me.subFrmEmp.Form.RecordsetClone
'Find the first occurrence
With rstEmp
     .FindFirst sCriteria
              If .NoMatch Then
                    MsgBox "No match found"
             Else
                   MsgBox "first match found"
            End If
End With


استفاده از ویژگی RecordSetClone برای پیمایش یا انجام عملی روی رکوردهای فرمی مستقل از خود فرم ، مثلا استفاده از متد Dao Find که با فرم نمی تواند بکار برده شود.



You use the RecordsetClone property to navigate or operate on a form's records independent of the form itself. For example, you can use the RecordsetClone property when you want to use a method, such as the DAO Find method, that can't be used with forms.













.Index = "CompanyName" 
.Seek ("T")


.Index = "PrimaryKey"

' Seek record.

.Seek "=", intID



مهر ۱۴۰۲ : افت فشار ،  بیهوش شدن و ضربه پشت سر به لبه سکو


ابهام دیگر درخصوص انتقال آرمیتا گراوند به بیمارستان فجر است، اساساً چرا باید آرمیتا را از ایستگاه متروی شهدا به بیمارستان فجر وابسته به دانشگاه علوم پزشکی ارتش در خیابان پیروزی ببرند درحالی که دو بیمارستان معیری و شفایحیاییان در نزدیکی میدان شهدا قرار دارد؟

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



۱۳مهر ۱۴۰۲ : ضبط گذرنامه محمود احمدی نژاد بدلیل عدم تامین امنیت در گواتمالا


مخالفت با سفر رئیس جمهور اسبق به گواتمالا

برخی خبرهای غیر رسمی حاکیست با سفرمحمود احمدی نژاد رئیس جمهور اسبق به کشور گواتمالا بدلیل ملاحظات حفاظتی مخالفت شده است.

جمهوری اسلامی ایران در کشور گواتمالا نمایندگی سیاسی ندارد و شرایط این کشور پس از انتخابات اخیر که منجر به منازعه سیاسی بین دو گروه رقیب برنده و بازنده در انتخابات شده، کاملا ناپایدار و غیر امن است.

 آخرین خبر نوشت: احمدی نژاد بر انجام این سفر اصرار دارد و توصیه های دستگاه‌های ذیربط راد نپذیرفته است.



۱۷ مهر ۱۴۰۲ : ( در پی عملیات طوفان الاقصی )

پاسخ ایران به تهدیدات اسرائیل و آمریکا/ اگر می توانستید از خود در برابر فلسطین دفاع می کردید








LinkMasterFields






You can use the LinkChildFields and LinkMasterFields properties together to specify how Microsoft Access links records in a form to records in a subform. If these properties are set, Microsoft Access automatically updates the related record in the subform when you change to a new record in a main form.



SubForm.FilterOnEmptyMaster property (Access) : 
Gets or sets whether all records are displayed when the subform's master field is Null. Read/write Boolean.




  1. 'de-assign link fields 
  2.   Me.DetailWindow.LinkChildFields = ""
  3.   Me.DetailWindow.LinkMasterFields = ""
  4.  
  5. 'replace sub-form with new source
  6.   Me.DetailWindow.SourceObject = "NewFormName"
  7.  
  8. 'reassign links as appropriate for NewFormName
  9.   Me.DetailWindow.LinkChildFields = "FieldName1, FieldName2, FieldName3"
  10.   Me.DetailWindow.LinkMasterFields = "FieldName1, FieldName2, FieldName3"
 


در تصویر زیر دو تا زیرفرم از نوع DataSheet View ساخته شده و در فرم اصلی قرار گرفته ، زمانیکه مکان نما  روی رکورد اول در دیتاشیت سمت چپ قرار بگیره دیتاشیت سمت راست فیلتر میشه و لیست کشورها رو میاره یعنی یک فیلد MasterId در آن وجود دارد که هاید شده و این دو سابفرم طبق این فیلد بهم لینک شده اند.






زبان انگلیسی پایه هفتم-مهر ۱۴۰۲ ( پروفسورهای حکومتی)













rich text textbox




Colorized search string


ControlSource


IIf([Company] Is Null, Null, Replace([Company], "ar", "<font color=""red"">ar</font>"))









<div><font face=SomeFontName>YourText</font></div>





Val(“&H” & “00FFFF”) ‘Cyan

















شی XMLHTTPREQUEST در اکسس



Sub WebReq()

link = "http://it.finance.yahoo.com/q?s=^FCHI&ql=10" & Str(Rnd())
Set htm = CreateObject("htmlFile")
Dim objHttp

    Set objHttp = CreateObject("Msxml2.ServerXMLHTTP")
    objHttp.Open "GET", link, False

    objHttp.Send
    htm.body.innerhtml = objHttp.responsetext
    Set objHttp = Nothing
End Sub




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

مصرف‌ ماهی و غذاهای دریایی به همراه میوه‌های سرشار از ویتامین و سبزیجات تازه، نقش موثری در طول افزایش عمر دارد. استرس، عصبانیت، فشارهای روحی و عصبی موجب ضعف در سیستم دفاعی بدن می‌شود. توصیه می‌کنم از این عوامل مخرب دوری کنیم، ورزش و تحرک روزانه را جزو مهم زندگی خود محسوب کرده و معاینات دوره‌ای به‌ویژه از دهه چهارم زندگی به بعد را فراموش نکنیم.








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



«سریال گاندو؛ شرح صحنه نشستن خانم شارلوت لبه استخر با پاچه خیس در آب : عضو سفارت انگلستان در ایران، با لباس در استخر سفارتخانه در حالی که مسکرات می‌خورد و با نامحرم ارتباط تصویری می‌گیرد.





dbMaxLocksPerFile



هنگامیکه یک یا چند کاربر ، بسیاری از تراکنش ها را در یک محیط چند کاربره ( MultiUser ) پردازش می کنند ، ممکن است تراکنش ها با پیام خطای زیر Fail شوند :


File sharing lock count exceeded. Increase MaxLocksPerFile registry entry.


For 32-bit version of Access running on 64-bit version of Windows

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Wow6432Node\Microsoft\Office\<x.0>\Access Connectivity Engine\Engines\ACE




با افزایش MaxLocksPerFile در رجیستری می توانید این خطا را تا حدی کنترل کنید ... یا با SetOption



در ویندوز ، محدودیت های خاصی برای اشتراک گذاری فایل ها ( file-sharing ) به صورت همزمان وجود دارد. اگر به هر علت از این حد فراتر رفت ، عملیات اشتراک گذاری ( sharing ) فایل متوقف می شود. یک عنصر رجیستری به نام ورودی MaxLocksPerFile وجود دارد که حداکثر محدودیت اشتراک فایل را نظارت کرده و از آن مراقبت می نُماید. بنابراین زمانیکه این محدودیت اشتراک از حدی فراتر رود ، آن خطا را در صفحه سیستم خود دریافت خواهید کرد البته شما کمتر دریافت می کنی  و با چنین مشکلی برخورد خواهید کرد









عبارت # Print




how many bricks are used



'Open : For OutPut

Do While Not rst.EOF
    Print #1, rst!Name
    rst.MoveNext
Loop


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

نوشتاری : [ ] اختیاری

Print#فهرست خروجی],شماره فایل]


توجه فرق #Print و #Write :


اگر در آینده می خواهید داده ها را از یک فایل با لستفاده از عبارت یا دستور #Input بخوانید ، بجای عبارت #Print از عبارت #Write برای نوشتن داده ها در فایل استفاده کنید. استفاده از #Write یکپارچگی هر فیلد داده مجزا را با جداسازی صحیح آن تضمین می کند ، به طوری که با استفاده از #Input می توان دوباره آن را خواند.استفاده از #Write همچنین تضمین می کند که می توان آن را در هر محلی به درستی خواند.


it is your job

do the best


the law is not negotiable



۲۲ مرداد ۱۴۰۲ :

کیایی نوشت:

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


Veins are blood vessels located throughout your body that collect oxygen-poor blood and return it to your heart. Veins are part of your circulatory system. They work together with other blood vessels and your heart to keep your blood moving. Veins hold most of the blood in your body.










جستجو در رکوردست


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




البته موارد زیر چندین مرتبه در مطالب بیان شده



از شی ( DAO.RecordSet ( Data Access Object برای دستکاری داده ها در این شئ استفاده می شود 


با دو روش زیر می توان جستجو را انجام داد :

۱-Rst.FindFirst  شرط مورد نظر

۲-DlookUp


فرضا در جدول مورد نظر ( مثل Tbl ) با تابع DlookUp می خواهید شماره موبایل (فیلد Mobile) کد ملی (Meli) خاص را بازیابی کنید.

Ret=DlookUp("Mobile","Tbl","Meli=001200")

اگر نوع داده (DataType) فیلد Meli را Text یا Char انتخاب کرده باشید باید از تک کوتیشن بین رشته داخل آن استفاده کنید

Ret=DlookUp("Mobile","Tbl","Meli='001200'")


تیک Data Access Object Library در محیط ویژوال قسمت Refrences ... (اگر این کتابخانه ها نباشند ما قادر به دستکاری محتویات داخل جداول با استفاده از مجموعه رکوردست نخواهیم بود)

Dim Rs As DAO.Recordset


از FindFirst هم می توان استفاده کرد و ویژگی Rs.NoMatch ، سپس با تابع MsgBox متن وجود ندارد را در کادر ویندوزی به شما نمایش دهد . دیفالت یا پیش فرض NoMatch مقداری غیر صفراست یعنی True و اینکه عبارت جستجو شده غیر معتبر یا Not Valid است !!!


If Rs.NoMatch




The Find method searches for a record in a Recordset that satisfies a specified criteria. If the search is successful, the record pointer will point to the first found record. Note: A current row position (like MoveFirst) must be set before calling this method, otherwise an error will occur.



If a record matching the criteria isn't located, the current record pointer is unknown, and the NoMatch property is set to True. If recordset contains more than one record that satisfies the criteria, FindFirst locates the first occurrence, FindNext locates the next occurrence, and so on.

Each of the Find methods begins its search from the location and in the direction specified in the following table.

Find method

Begins searching at

Search direction

FindFirst

Beginning of recordset

End of recordset

FindLast

End of recordset

Beginning of recordset

FindNext

Current record

End of recordset

FindPrevious

Current record

Beginning of recordset



You should use the U.S. date format (month-day-year) when you search for fields containing dates, even if you're not using the U.S. version of the Microsoft Access database engine; otherwise, the data may not be found. Use the Visual Basic Format function to convert the date.







Dim CurUser As String 

CurUser = Environ("UserName")

Set db = CurrentDb()

Set rst = db.OpenRecordset("rtb1LogTimes")

rst.FindLast "UserLoginlD = '" & CurUser & "'"

rst.Editl:rst!LogOutTime = Now():rst.Update:rst.Close db.Close:Set rst = Nothing:Set db = Nothing 





حجت‌الاسلام سید کاظم موسوی امروز دوشنبه ۲۳ مرداد به خبرنگاران درباره آخرین وضعیت پرونده حمله تروریستی شب گذشته به حرم شاهچراغ گفت: تاکنون و با تحقیقات صورت گرفته ۴ نفر مظنون مرتبط با این حادثه دستگیر شده‌اند.

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

موسوی همچنین اعلام کرد که دو نفر از بازپرسان ویژه به منظور بررسی حادثه در حرم شاهچراغ حاضر شده‌اند و در حال رصد موضوع هستند.

رئیس کل دادگستری فارس همچنین از صدور دستورات قضایی لازم برای دستگیری عوامل حادثه خبر داده و دستگیری یکی از تروریست‌ها را تائید کرده است.

به گزارش ایسنا، ساعت ۱۹ عصر یکشنبه ۲۲ مرداد ۱۴۰۲، بر اثر حمله تروریستی به حرم مطهر حضرت شاهچراغ(ع) یک نفر شهید و هشت نفر مجروح شدند.




۲۹ مرداد ۱۴۰۲  : مملکت خر تو خر و بی صاحب


خبرنگار اجتماعی مهر در پی تماس یکی از شهروندان با خبرگزاری از اتفاق عجیبی که شب گذشته برای همسر این فرد افتاده بود مطلع شد.

این فرد مدعی شد شب گذشته در حین گشت و گذار در مرکز تجاری «ت» واقع در خیابان مدنی در پی دیدن مواردی از بی حجابی و برهنگی به مأموران حراست این مجتمع تجاری تذکر داد.

پس از این تذکر مأمور حراست مدعی شد به تو ربطی ندارد و بعد شروع به زد و خورد و آزار فیزیکی همسرم کرده و تمام وسایل وی را تخریب کردند.

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

و مسئولین خواب انتظامی !!!



قدمهای تمام زائرانت را یقیناً می شمارد حضرت زهرا
برای لحظه های تلخ جان دادن
برای در سراشیبی قبری تیره افتادن
برای ساعت آخر برای بی کسی های صف محشر
























سِلِکت کوئری در اکسس ( جستجو در Date )





IDCodeDt
1100103/06/2018
2100103/15/2018
3100106/10/2018
4100202/10/2018
5100203/08/2018
6100205/08/2018
7100205/08/2018
8100304/05/2019
9100305/05/2019
10100308/15/2019
11100403/15/2019
12100404/01/2019
13100402/01/2019
14100403/11/2019
15100404/22/2019
16100502/15/2019
17100503/15/2019
18100601/15/2019
19100603/09/2019
20100703/09/2019



SELECT All * FROM [tt] where dt between '01/01/2019' And '03/07/2019'





Text1 :

Text2:








پراپرتی Cycle ( چرخه ) در اکسس






The Cycle property uses the following settings.



SettingVisual BasicDescription
All Records0(Default) Pressing the TAB key from the last control on a form moves the focus to the first control in the tab order in the next record.
Current Record1Pressing the TAB key from the last control on a record moves the focus to the first control in the tab order in the same record.
Current Page2Pressing the TAB key from the last control on a page moves the focus back to the first control in the tab order on the page.






سِلِکت کوئری در اکسس




CustomerIDCust_NameCityGradeSalesMan_ID
3002Nick RimandoNew York1005001
3007Brad DavisNew York2005001
3005Graham ZusiCalifornia2005002
3008Julian GreenLondon3005002
3004Fabian JohnsonParis3005006
3009Geoff CameronBerlin1005003
3003Jozy AltidorMoscow2005007
3001Brad GuzanLondon5005


فهرست تعداد Grade هایی که بزرگتر از میانگین عددهایی که مقادیر فیلد City آنها برابر New York است


SELECT Grade,Count(*) From Customer Group By Grade Having Grade>(Select AVG(Grade) From Customer Where City="New York")




Select  {0} From {1} Where {2} Group By {3} Having {4}



CityAvg(Grade)
Berlin100
California200
London150
Moscow200
New York150
Paris300


CityGradeTotGr
New York100100
New York200300
California200200
London300300
Paris300300
Berlin100100
Moscow200200
London0


Citymax(TotGr)countAvg
Berlin1001100
California2001200
London3002150
Moscow2001200
New York3002150
Paris3001300





جدول employee

idnamesalaryrole
1Augustine Hammond10000Developer
2Perice Mundford10000Manager
3Cassy Delafoy30000Developer
4Garwood Saffen40000Manager
5Faydra Beaves50000Developer



جدول awards


idemployee_idaward_date
112022-04-01
232022-05-01



SELECT id, name FROM employee WHERE id IN (SELECT employee_id FROM awards);



idname
1Augustine Hammond
3Cassy Delafoy


SELECT * FROM employee WHERE role = 'Developer' AND salary >  ( SELECT salary FROM employee WHERE role = 'Manager' )



idnamesalaryrole
3Cassy Delafoy30000Developer
5Faydra Beaves50000Developer






OrderIDOriginalVale
11
23
72
81
97
113
121



OrderIDOriginalValeSum
111
234
726
817
9714
11317
12118












ویژگی Dirty


از ویژگی Dirty برای تعیین انجام ویرایش یا عدم ویرایش رکورد جاری از زمان آخرین ذخیره سازی استفاده می شود . برای مثال ، ممکن است از کاربر بخواهید که تغییراتی در رکورد صورت پذیرفته یا خیر ، اگر نه ، به کاربر اجازه دهید بدون ذخیره تغییرات به رکورد بعدی برود . از نوع Boolean و خواندنی و نوشتنی



البته رویه زیر در رویداد After Update تکست باکس فراخوان می شود و اگر تغییر صورت گرفت باتن با نام BtnUndo فعال می شود و ویژگی Value تکست باکس به OldValue تبدیل میشود . البته ویژگی AllowEdition برای جلوگیری از ویرایش ( برگشت به حالت OldValue ) در فرم وجود دارد.


Sub UndoEdits()
    If Me.Dirty Then
       Me!btnUndo.Enabled = True
         ' Enable button
    Else
      Me!btnUndo.Enabled = False
        ' Disable button
    End If
End Sub







Tracking


varOld = Screen.ActiveControl.OldValue 

varNew = Screen.ActiveControl.Value 

strFormName = Screen.ActiveForm.Name strControlName = Screen.ActiveControl.Name 

Set dbs = CurrentDb() 

Set rst = dbs.TableDefs("tblDataChanges").OpenRecordset














ویژگی PrtMip در تنظیم Page Setup درفرم و گزارش اکسس


می توانید از ویژگی PrtMip در ویژوال بیسیک برای تنظیم یا بازگرداندن اطلاعات حالت دستگاه مشخص شده برای فرم یا گزارش در کادر محاوره ای Print استفاده کنید البته در نمای دیزاین امکانپذیر است یعنی اگر فرمت اکسس به accde تبدیل شود در نمای دیزاین قادر به انجام تغییرات نخواهید بود



توضیحات :

تنظیمات ویژگی PrtMip ساختاری ۲۸ بایتی دارد که برای فرم یا گزارش در کادر محاوره ای Page Setup به تنظیمات در برگه حاشیه ها برنامه ریزی می شود




Private Type str_PRTMIP 
strRGB As String * 28
End Type 
Private Type type_PRTMIP 
xLeftMargin As Long 
yTopMargin As Long 
xRightMargin As Long 
yBotMargin As Long 
fDataOnly As Long 
xWidth As Long 
yHeight As Long 
fDefaultSize As Long 
cxColumns As Long 
yColumnSpacing As Long 
xRowSpacing As Long 
rItemLayout As Long 
fFastPrint As Long 
fDatasheet As Long 
End Type











PrtMipString.strRGB = rpt.PrtMip
LSet PM = PrtMipString
PM.cxColumns = 2
PM.xRowSpacing = 0.25 * 1440
PM.yColumnSpacing = 0.5 * 1440














رویداد NoData در شئ گزارش اکسس ( عدم چاپ رکورد خالی)


رویداد NoData بعد از قالب بندی یک گزارش برای چاپ که داده ای ندارد (گزارش باند شده یا محدود به یک رکوردست خالی)، اما قبل از اینکه گزارش پرینت شود رخ می دهد.از این رویداد برای کنسل کردن یا لغو چاپ یک گزارش خالی استفاده می شود.

اگر گزارش محدود به جدول یا کوئری نباشد ( با استفاده از ویژگی RecordSource گزارش ) ، این رویداد عملی ندارد.

این رویداد بعد از رویداد Format برای گزارش اما قبل از اولین رویداد Print اتفاق می اُفتد.

این رویداد برای زیر گزارش ها ( SubReports ) اتفاق نمی اُفتد.اگر نیاز دارید کنترل ها در زیر گزارش زمانیکه داده ای ندارد پنهان شود ( Visible)، تا اینکه کنترل ها در این مورد پرینت نشوند ، میتوانید از ویژگی HasData در ماکرو یا پروسه رویداد که زمان اجرای رویداد Format یا Print اتفاق می اُفتد استفاده کنید.

Description(Object)          Value

Has Data                                 -1

No Data                                     0

Unbound                                  1


یعنی ویژگی Visible  ساب ریپورت می شود مقادیر HasData


رویداد NoData قبل از رویداد اولین Page برای گزارش اتفاق می اُفتد.







کوئری در اکسس ( Group By )


جدول R
IDCodeAmountSum
1A2323
2A225
3B1111


ماکزیمم عدد در هر دسته بندی فیلد Code :



Select Code,Max(Sum) From r Group By Code




CodeMax(sum)
A25
B11
























تابعی برای جمع آوری مقدار از رکوردست






Field2.IsComplex DAO.Property :

مقدار True(عددی غیر صفر) یا False(برابرصفر) را که نشان دهنده وجود یک دیتا تایپ چند مقداری است را باز می گرداند.... ( multi-valued data type )


Null=No Valid Data

named-argument


Join:

اگرExpression خالی باشد Set Result=Null

Static Values As New Collection

Set Records=CurrentDb.OpenRecordSet....

(dbOpenSnapShot)

CollValues Records , Delimiter , Result

Values.Add Result

Join=Result




CollValues:


ByRef Rec As DAO.RecordSet

ByRef Delimiter

ByRef Result





Dim SubRec As DAO.RecordSet

Dim Value As Variant

'If Rec.RecordCount>0 Then

While Not Rec.EOF

      Value=Rec.Field(0).Value

          If Rec.Fields(0).IsComplex Then

                 Set SubRec=Rec.Fields(0).Value

                 CollValues SubRec , Delimiter , Result

         ElseIf Nz(Value)="" Then

         ElseIf IsEmpty(Result)

              Result=Value

         Else

              Result=Result & Delimiter & Value

         End If

Rec.MoveNext

Wend

'Else

'Result=Null

'End If



















Expression,Domain,Criteria : 

Const SqlMask As String = "Select {0} From {1} {2}"
Const SqlLead As String = "Select "
Const SubMask As String = "({0}) As T"

Const FilterMask As String = "Where {0}"

Dim Sql As String
Dim SqlSub As String
Dim Filter As String


اگر Expression خالی باشد باید فکر چاره ای باشید و همینطور آرگومان های بعدی


اگر Select را در Domain( که نام جدول یا کوئری و یا زبان اس کیو ال ممکن است داخلش نوشته شده باشد ) یافت نتیجتا Domain یک عبارت اس کیو ال است.
If InStr(1, LTrim(Domain), SqlLead, vbTextCompare) = 1 Then 

در اینجا اگر در آرگومان Domain عبارت Select را بیابد متغیر SqlSub می شود جایگزین کردن Domain با {0}

SqlSub = Replace(SubMask, "{0}", Domain)
Else

در غیر اینصورت Domain نام جدول یا کوئری است.

SqlSub = Domain

End If
اگر آرگومان Criteria پر باشد 
If Trim(Criteria) <> "" Then 
ساخت یک شرط را خواهیم داشت . که عبارت داخل Criteria را بجای {0} در FilterMask قرار خواهد داد.
Filter = Replace(FilterMask, "{0}", Criteria)
End If 
حالا ساخت نهایی Sql که باتابع Replace تودرتو یا Nested Replace انجام گرفته و اگر اشتباهی در نوشتار نداشته باشیم خروجی یک عبارت Sql درست خواهد بود.
Sql = Replace(Replace(Replace(SqlMask, "{0}", Expression), "{1}", SqlSub), "{2}", Filter) 

یعنی درواقع در Replace های بالا جای ۲ ۱ ۰ عبارت یا رشته هایی که داخل آرگومان ها هستند  قرار داده شدِس.


Example : 


Expression="[First Name] & ' ' & [Last Name] & '<' & [Email Address] & '>'"

Domain="Tbl1"

Criteria="[Job]='" & [Job] & "'"


Change To Sql :


"Select [First Name] & ' ' [Last Name] & '<' & [Email Address] & '>' From Tbl1 Where [Job]=' & [Job] & '"



با قرار دادن Optional قبل از آرگومان ها می شود آنها را در تابع اختیاری کرد نه اجباری ( Required ).



وقتی دیتا تایپ فیلدی عددی نیست مثل نام بای  از تک کوتیشن بین آنها استفاده کنیم : 

"FirstName='" & Variable1 & "'"

اگر بنویسید :

"FirstName=" & Variable1 & ""

قطعا دچار خطا خواهید شد ، برای دیتا تایپ عددی نیازی به قرار دادن تک کوتیشن ها ندارید.









لیست آخرین آیتم براساس گروبندی فیلد SupplierID



تمام برداشت ها از سایت های خارجی جهت آموزش شما دوستان مبتدی اخذشده،نایاب هستند لذا نهایت استفاده را ببرید.


We are looking to make changes



select * from products where productid in(

(select val(lastt) as lastt from (select distinct dlast('ProductId','products',"supplierId=" & [SupplierId]) as Lastt,supplierid from products

order by supplierid)))




w3schools/sql




ProductIDProductNameSupplierIDCategoryIDUnitPrice
Aniseed Syrup 12 - 550 ml bottles 10 
Northwoods Cranberry Sauce 12 - 12 oz jars 40 
12 Queso Manchego La Pastora 10 - 500 g pkgs. 38 
15 Genen Shouyu 24 - 250 ml bottles 15.5 
23 Tunnbröd 12 - 250 g pkgs. 
24 Guaraná Fantástica 10 12 - 355 ml cans 4.5 
27 Schoggi Schokolade 11 100 - 100 g pieces 43.9 
30 Nord-Ost Matjeshering 13 10 - 200 g glasses 25.89 
39 Chartreuse verte 18 750 cc per bottle 18 
41 Jack's New England Clam Chowder 19 12 - 12 oz cans 9.65 
44 Gula Malacca 20 20 - 2 kg bags 19.45 
46 Spegesild 21 



استفاده از عبارت Last 


select * from products where productid in(select lLast from (select distinct last([productId]) As lLast,supplierid from products group by supplierid order by supplierid))



Or 


select * from products where productid in(select distinct last([productId]) As lLast from products group by supplierid)



select * from products where productid in(select distinct last([productId])-1 As lLast from products group by supplierid)



select * from products where productid in(select distinct first([productId]) As ifirst from products group by supplierid)





first-and-lastfunction-in-ms-access




























لوپ For Each با آرایه



اول باید دو متغیر Arr و element را با Dim اعلان کنید


Arr(0)="123"

Arr(1)="456"

Arr(2)="789"

Arr(3)="012"


For Each element in Arr

Debug.Print element

Next






لوپ زدن در فیلدهای جدول



RecordSet.Fields Property ( DAO )



کالکشن یا مجموعه Fields را باز می گرداند که ارائه کننده یا حاوی اشیاء Field ذخیره شده برای شئ مشخص شده است.فقط خواندنی ( ReadOnly )



For Each Fld in Rs.Fields

Debug.Print Fld.Name

'Or your code

Next










بازیابی ردیف ها در رکوردست


متد GetRows برای کپی از یک رکوردست استفاده میشود.این متد یک آرایه دوبعدی را باز می گرداند. اولی نمایانگر فیلدیاستون و دومی شماره ردیف است.برای مثال intField فیلد و intRecord شماره ردیف را نمایش می دهد.


Zero-Base هستند یعنی 0 در جای خود معرف ستون یا ردیف صفر است 


avarRecords(intField, intRecord)


برای گرفتن مقدار فیلد اول در ردیف دوم :


field1 = avarRecords(0,1)


برای گرفتن مقدار فیلد دوم در ردیف اول : 


field2 = avarRecords(1,0)


اگر برای آرایه از تایپ Variant استفاده شود Ubound نیز استفاده کنید و +۱ را





Dim varEmployees As Variant
varEmployees = rstEmployees.GetRows(rstEmployees.RecordCount)
تعداد ردیف های بازیابی شده
Debug.Print "Number of Rows Retrieved: " & UBound(varEmployees, 2) + 1
تعداد فیلد ( ستون های بازیابی شده )
Debug.Print "Number of Fields Retrieved: " & UBound(varEmployees, 1) + 1


چاپ در پنجره Immediate window ( محتوای  ستون ۳ و ردیف ۴)
Debug.Print "Field 3 - Row 5: " & varEmployees(2, 4)
چاپ در پنجره Immediate window ( محتوای ستون ۱ و ردیف ۲)
Debug.Print "Field 1 - Row 2: " & varEmployees(0, 1) 



لوپ در بین هر ردیف :

'Loop thru each Row
For intRowNum = 0 To UBound(varEmployees, 2) 
لوپ در بین هر ستون : 
'Loop thru each Column       
For intColNum = 0 To UBound(varEmployees, 1)   
Debug.Print varEmployees(intColNum, intRowNum),  Next
Debug.Print vbCrLf
Next









  1. Number of Rows Retrieved: 9
  2.  
  3. Number of Fields Retrieved: 5
  4.  
  5. Field 3 - Row 5: 908 W. Capital Way
  6. Field 1 - Row 2: Callahan
  7.  
  8. Last Name     First Name    Address                     City          Region
  9. ---------------------------------------------------------------------------------------------
  10. Buchanan      Steven        14 Garrett Hill             London        Null          
  11.  
  12. Callahan      Laura         4726 - 11th Ave. N.E.       Seattle       WA            
  13.  
  14. Davolio       Nancy         507 - 20th Ave. E., Apt. 2A Seattle       WA            
  15.  
  16. Dodsworth     Anne          7 Houndstooth Rd.           London        Null          
  17.  
  18. Fuller        Andrew        908 W. Capital Way          Tacoma        WA            
  19.  
  20. King          Robert        Edgeham Hollow, Winchester Way            London        Null          
  21.  
  22. Leverling     Janet         722 Moss Bay Blvd.          Kirkland      WA            
  23.  
  24. Peacock       Margaret      4110 Old Redmond Rd.        Redmond       WA            
  25.  
  26. Suyama        Michael       Coventry House, Miner Rd.   London        Null   



CopyFromRecordset : 


محتویات یک شئ ADO یا DAO Recordset را روی یک کاربرگ کپی می کند و از گوشه سمت چپ بالای محدوده مشخص شده آغاز می گردد . اگر شئ رکوردست حاوی فیلدهایی با اشیاء OLE در آنها باشد این روش با شکست مواجه خواهد شد.


For iCols = 0 to rs.Fields.Count - 1 
 ws.Cells(1, iCols + 1).Value = rs.Fields(iCols).Name 
Next 
ws.Range(ws.Cells(1, 1), _ 
 ws.Cells(1, rs.Fields.Count)).Font.Bold = True 
ws.Range("A2").CopyFromRecordset rs