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

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

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

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

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

گرفتن ComputerName یا UserName در اکسس




فقط سیستم محلی 


Environ("COMPUTERNAME")

Environ("USERNAME")

Environ("PATH")




"Wscript.Network"  Object 


Properties:
UserName
UserDomain
ComputerName

Methods :
AddWindowsPrinterConnection
'Add a printer in Windows 2000 and higher
AddPrinterConnection
'Add a printer in older systems

EnumNetworkDrives

'List the mapped drives on the computer EnumPrinterConnections
'List the installed printers

MapNetworkDrive

'Map a network drive

RemoveNetworkDrive

'Remove a network drive

RemovePrinterConnection

'Remove a printer connection

SetDefaultPrinter

'Set the default printer 



Set objArgs = WScript.Arguments
For I = 0 to objArgs.Count - 1 WScript.Echo objArgs(I)
Next




تابع GetUserNameA : 




Library : Advapi32.lib

DLL : Advapi32.dll


BOOL GetUserNameA( [out] LPSTR lpBuffer, [in, out] LPDWORD pcbBuffer



lpBuffer : 

نشانگری به Buffer برای دریافت نام کاربر logon . اگر این Buffer به اندازه کافی  بزرگ نباشد که کل نام کاربری را در خود جای دهد ، این تابع از کار می افتد ( fail ) .

Len+1


pcbBuffer : 

این متغیر سایز Buffer را مشخص می کند 


در صورت نگرفتن پاسخ مناسب حتما یادداشت های این تابع را در سایت office مشاهده کنید









گرفتن یا تسخیر یک تصویر



می توان از یک Bitmap برای گرفتن یک تصویر استفاده  و تصویر گرفته شده را در حافظه ذخیره نموده ، آنرا در یک محل دیگر در پنجره اپلیکیشن یا سایر پنجره ها نمایش داد.


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


برای ذخیره موقت یک تصویر ، برنامه شما باید CreateCompatibleDC را برای ایجاد یک DC سازگار با DC پنجره جاری یا فعال فراخوانی کند. بعد از ایجاد یک DC سازگار ، می توان یک bitmap با ابعاد متناسب با فراخوانی  تابع CreateCompatibleBitmap ایجاد کرد و سپس آنرا به داخل DC با فراخوانی تابع SelectObject انتخاب کرد.


بعد از ایجاد DC سازگار و bitmap متناسبی  که داخل آن انتخاب شده ، می توان تصویر را گرفت یا ثبت کرد . تابع BitBlt تصاویر را می گیرد . این تابع انتقال بلوک بیت را انجام می دهد ، یعنی داده ها از یک Bitmap منبع را در یک Bitmap مقصد کپی می کند. وقتی BitBlt انتقال را کامل کرد، تصویر در حافظه ذخیره می شود . برای نمایش مجدد تصویر برای باز دوم این تابع را فراخوانی کنید و DC سازگار را بعنوان منبع DC و یک پنجره ( یا چاپگر ) را بعنوان DC هدف مشخص کنید.


Device Context :

یک ساختار داده ویندوز است که حاوی اطلاعاتی در مورد ویژگیهای طراحی یک دستگاه مانند نمایشگر یا چاپگر است . همه فراخوانی طراحی از طریق یک شئ DC انجام می شوند ، که API های ویندوز را برای ترسیم خطوط ، اشکال و متن محصور می کند . DC های دستگاه امکان طراحی مستقل از دستگاه در ویندوز را فراهم می کند . DC های دستگاه را می توان برای کشیدن به صفحه ، چاپگر یا MetaFile استفاده کرد.




memDC = CreateCompatibleDC ( hDC );

memBM = CreateCompatibleBitmap ( hDC, nWidth, nHeight );

SelectObject ( memDC, memBM ); 










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



ساختار DISPLAY_DEVICE :

const cchdevicename as long = 32

const cchformname as long = 32

Type display_device

cb as long

devicename as string * cchdevicename

devicestring as string * 128

stateflags as long

deviceid as string * 128

devicekey as string * 128

End Type


Dim indAdapter As Long
indDisplay As Long
Dim ddAdapters As DISPLAY_DEVICE
ddDisplays As DISPLAY_DEVICE
ddAdapters.cb = Len(ddAdapters)
ddDisplays.cb = Len(ddDisplays)

indAdapter = 0
Do Until EnumDisplayDevices(vbNullString, indAdapter, ddAdapters, 0) = 0










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


یادداشت : برنامه هایی که برای هدف ویندوز ۸ و نسخه های جدیدتر طراحی می کنید ، دیگر نمی توانند پرس و جو کنند یا حالت های نمایش کمتر از ۳۲ بیت در هر پیکسل را تنظیم کنند.




Type DEVMODE
dmDeviceName As String * CCHDEVICENAME
dmSize As Integer
dmYResolution As Integer
dmPelsWidth As Long
dmPelsHeight As Long
End Type



Dim dmode As DEVMODE

dmode.dmSize = Len(dmode)

EnumDisplaySettings DeviceName, ENUM_CURRENT_SETTINGS, dmode

MsgBox "Width: " & dmode.dmPelsWidth

MsgBox "Height: " & dmode.dmPelsHeight 












تابع CDbl برای تبدیل عبارت به دیتا تایپ عددی Double



تابعی که یک عبارت را به ( Double ( Number  تغییر می دهد


نوشتاری :
CDbl (expression)


در زیر به مقدار پوینت هایی که می تواند این دیتا تایپ در مقادیر منفی و مثبت ذخیره کند اشاره شده



The Double data type stores precision floating point numbers from -1.79769313486232E308 to -4.94065645841247E-324 for negative values or 1.79769313486232E308 to 4.94065645841247E-324 for positive values.



CDbl نمی توانو مقادیر Null را مدیریت کند لذا برای تبدیل Null ها به یک عدد معتبر از تابع Nz استفاده کنید




Examples

Dim dblDemo as Double

dblDemo = CDbl(12 * 0.000001)







تابع Nz یا Null Zero




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




برای مثال عبارت VarX+2 زمانیکه varX با دیتا تایپ Variant نال است همیشه یک مقدار Null را بر می گرداند . هر چند ، ۲+(Nz(varX عدد ۲ را نتیجه می دهد.


می توان گاهی بعنوان یک جایگزین برای تابع IIf از تابع Nz بهره جست. برای مثال در کد زیر ، دو عبارت حاوی تابع IIf به بازگشت یک نتیجه معقول اجبار می شوند. اولین عبارت حاوی تابع IIf برای بررسی مقدار یک متغیر و تبدیل آن به صفر اگر Null باشد استفاده شده.

varTemp = IIf(IsNull(varFreight), 0, varFreight)
varResult = IIf(varTemp > 50, "High", "Low")

در مثال بعدی تابع Nz عملکرد مشابهی مثل عبارت اول را ارائه می دهد ولی نتیجه مطلوب به جای دو مرحله در یک مرحله بدست می آید.


varResult = IIf(Nz(varFreight) > 50, "High", "Low")









Sum(CDBL(Nz(YourField),0))) 







فیلتر بین دو تاریخ در پرس و جوی اکسس




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







پرس و جو با باکس های داده تهی :



برای انجام ، دو فیلد در پرس و جو اضافه کنید ، با نام های تکست باکس در آنها

[forms]![Menu].[txtStart]
[forms]![Menu].[txtEnd]

اکسس بطور خودکار اسمی را برای هر فیلد اضافه می کند ، Expr1 و Expr2. سپس در ردیف دوم شرط ( OR ) در هر یک از ستون های جدید Is Null را تایپ کنید. 

شرط های جدید را در همان ردیف شرط های موجود قرار ندهید ، در غیر اینصورت با Run کردن یا اجرای پرس و جو هیچ نتیجه ای دریافت نخواهید کرد.

براساس عملگرهای منطقی 

& : AND
|  : OR
x       y       x&y      x|y
true  true    true    true
true  false  false   true
true  null    null     true
false true   false   true
false false  false  false
false null    false  null
null   true   null     true
null  false  false   null
null  null    null     null

MS Access IsNull() Function
The IsNull() function checks whether an expression contains Null (no data). This function returns a Boolean value. TRUE (-1) indicates that the expression is a Null value, and FALSE (0) indicates that the expression is not a Null value.


IsNull - Test for a NULL expression.
Nz - Test for a NULL expression or Zero Length String.






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

دیماه ۱۴۰۲ 













تصویر بهمراه متن در کامند باتن








ویژگی ترتیب کپشن و تصویر در کامند باتن


CommandButton.PictureCaptionArrangement property



acBottom

The caption appears below the picture.
acGeneral

The caption uses the General alignment setting
acLeft
The caption appears to the left of the picture
acNoPictureCaption
The caption is not displayed
acRight
The caption appears to the right of the picture
acTop
The caption appears above the picture.



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






۱۸ آبان ۱۴۰۲ : 



فارس: یک منبع آگاه در گفت‌وگو با فارس اظهار کرد: متولیان مسجد مکی در راستای کسب منافع نامتعارف و شخصی به صورت غیرقانونی با کمک عوامل خارجی، تعدادی ماینر وارد کشور کرده و با سوءاستفاده از برق رایگان مسجد و مدرسه مکی اقدام به استخراج رمز ارز کرد. این منبع آگاه افزود: تا قبل از مردادماه امسال برق مصرفی روند ثابتی داشته است لیکن در قبض مردادماه به طور جهشی مصرف برق بیش از ۱۶ هزار کیلووات (معادل ریالی تعرفه عادی، به مبلغ بیش از یک میلیارد تومان) افزایش داشته، این افزایش همزمان با راه‌اندازی تعداد۸۰ دستگاه ماینر در مکان فوق بوده است.














چاپ تکست X در سل های A5,B4,C3,D2,E1






Sub x()
Dim i As Long
For i = 1 To 5 Cells(6 - i, i).Value = "x"
Next i
End Sub






۶-۱,۱ ' ردیف ۵ و ستون ۱

۶-۲,۲

۶-۳,۳












نوشتن فایل متنی ( از درون اکسل )


در کد زیر نوشتن روی یک تکست فایل نمایش داده شده .iLastRow و iLastCol متغیرهایی هستند که به ترتیب شماره آخرین ردیف ( No Blank ) و آخرین ستون ( No Blank ) را در خود ذخیره می کنند. از عبارت Open و حالت OutPut برای باز کردن فایل FundPrices استفاده شده و در داخل لوپ هایی محتویات داخل سلول ها طبق آدرس ردیف و ستون مورد نظر گرفته و در تکست فایل Print می شوند و در آخر با دستور Shell تکست فایل در فایل اجرایی notepad به صورت نرمال باز می شود جهت نمایش روی Screen



iLastRow = Range("A" & Rows.Count).End(xlUp).Row
iLastCol = Cells(1, Columns.Count).End(xlToLeft).Column
Open "C:\Users\Ryan\Documents\wellsr\FundPrices.txt" For Output As #1
For i = 1 To iLastRow
For j = 1 To iLastCol
If j <> iLastCol Then
Print #1, Cells(i, j),

Else

Print #1, Cells(i, j)

End If
Next j
Next i
Close #1
Shell "notepad.exe ""C:\Users\Ryan\Documents\wellsr\FundPrices.txt", vbNormalFocus



برای اضافه کردن به انتهای فایل باید از عبات Append استفاده شود.



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




  • Output: Write to file, overwrite any existing file
  • Append: Appends to an existing file
  • Input: Read from file (needs to read a file sequentially)
  • Random: Read/Write to/from a file (non-sequential, needs fixed data length)
  • Binary: For binary files






















متد Docmd.Findrecord و شئ Screen



این متد عمل FindRecord در ویژوال بیسیک را انجام می دهد


نوشتاری :


expression.FindRecord (FindWhatMatchMatchCaseSearchSearchAsFormattedOnlyCurrentFieldFindFirst)


-FindWhat : متن مورد جستجو [ اجباری ]


-Match : ( آرگومان اختیاری)

ثابت AcFindMatch جایی که برای انطباق جستجو می شود را مشخص می نماید . مقدار پیش فرض acEntir است 


acAnywhere : جستجوی داده در هر قسمتی از فیلد



-MatchCase : ( آرگومان اختیاری)


استفاده از True برای جستجوی حساس به حروف  کوچک و بزرگ  و False برای جستجویی که حساسیتی در آن نیست ( حساسیت به حروف بزرگ و کوچک ) . اگر این آرگومان خالی رها شود ، پیش فرض False است .

-Search :(آرگومان اختیاری)


یک ثابت AcSearchDirection که مسیر جستجو را تعیین می کند و پیش فرض acSearchAll است.


دو ثابت دیگر acDown جستجو در تمام رکوردها پائین رکورد فعلی ( CurrentRecord ) و دیگری acUp جستجو در تمام رکوردها از بالای رکورد جاری



-OnlyCurrentField :اختیاری


ثابتی که مشخص میکند جستجو در تمام فیلد انجام شود یا فقط در فیلد جاری . پیش فرض acCurrent است.



-FindFirst :اختیاری


استفاده از True برای شروع جستجو در رکورد اول و False برای آغاز جستجو در رکورد بعد از رکورد جاری . پیش فرض True است



DoCmd.RunCommand acCmdFind


شئ Screen :


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


بعنوان مثال ، استفاده از شئ Screen بهمراه ویژگی ActiveForm برای ارجاع به فرم در پنجره فعال بدون دانستن نام فرم. 




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


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
















تابع ChooseFont


تابع ChooseFont : 


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


Boolean : 

ChooseFont(lpcf)


lpcf :


نشانگری به ساختار CHOOSEFONT که حاوی اطلاعاتی است که برای مقداردهی اولیه کادر محاوره ای استفاده می شود. هنگامیکه ChooseFont بر می گرداند. این ساختار حاوی اطلاعاتی در مورد انتخاب فونت کاربر است.



Comdlg32.lib



استراکچر CHOOSEFONTA :


حاوی اطلاعاتی است که تابع ChooseFont برای مقداردهی اولیه کادر محاوره ای فونت استفاده می کند. پس از بستن کادر محاوره ای توسط کاربر ، سیستم اطلاعات مربوط به انتخاب کاربر در این ساختار را بر می گرداند



Type FONTSTRUC
lStructSize As Long
hwndOwner As LongPtr
hdc As LongPtr
lpLogFont As LongPtr
iPointSize As Long ' 10 * size in points of selected font flags As Long
rgbColors As Long
lCustData As LongPtr 
 lpfnHook As LongPtr ' ptr. to hook function
hInstance As LongPtr ' instance handle of.EXE that ' contains cust. dlg. template
lpszStyle As String ' return the style field here ' must be LF_FACESIZE or bigger
nFontType As Integer ' same value reported to the EnumFonts ' call back with the extra FONTTYPE_ ' bits added MISSING_ALIGNMENT As Integer
nSizeMin As Long ' minimum pt size allowed & nSizeMax As Long ' max pt size allowed if ' CF_LIMITSIZE is used
End Type

HWND :
دستگیره یا پل ارتباطی به پنجره ای که مالک کادر محاوره ایست ، این عضو می تواند هر دستگیره پنجره معتبری باشد ، یا اگر کادر محاوره ای مالکی نداشته باشد، می تواند NULL باشد.



-متد Application.hWndAccessApp :


استفاده از متد hWndAccessApp برای تعیین دستگیره معین شده توسط ویندوز به پنجره اصلی مایکروسافت اکسس






hDC :


این عضو توسط تابع ChooseFont نادیده گرفته می شود.


استراکچر LOGFONTA :


تعیین ویژگیهای یک فونت 


Private Type LOGFONT
  lfHeight As Long
  lfWidth As Long
  lfEscapement As Long
  lfOrientation As Long
  lfWeight As Long
  lfItalic As Byte
  lfUnderline As Byte
  lfStrikeOut As Byte
  lfCharSet As Byte
  lfOutPrecision As Byte
  lfClipPrecision As Byte
  lfQuality As Byte
  lfPitchAndFamily As Byte
  lfFaceName(LF_FACESIZE) As Byte
End Type





تابع MulDiv :


دو مقدار 32 بیتی را ضرب می کند و سپس نتیجه 64 بیتی را بر یک مقدار 32 بیتی سوم تقسیم می کند. نتیجه نهایی به نزدیکترین عدد صحیح گرد می شود.


int MulDiv( [in] int nNumber, [in] int nNumerator, [in] int nDenominator );


Kernel32.lib



Private Function MulDiv(In1 As Long, In2 As Long, In3 As Long) As Long

Dim lngTemp As Long

On Error GoTo MulDiv_err

If In3 <> 0 Then

دو مقدار 32 بیتی را ضرب می کند :

lngTemp = In1 * In2

نتیجه 64 بیتی را بر یک مقدار 32 بیتی سوم تقسیم می کند :

lngTemp = lngTemp / In3

Else

lngTemp = -1

End If

MulDiv_end:

MulDiv = lngTemp

Exit Function

MulDiv_err:

lngTemp = -1

Resume MulDiv_err

End Function 



تابع GetDeviceCaps : 


اطلاعات مربوط به دستگاه ( Device ) را برای دستگاه مشخص شده بازیابی می کند.


int GetDeviceCaps( [in] HDC hdc, [in] int index );


Gdi32.lib



LOGPIXELSY

Number of pixels per logical inch along the screen height. In a system with multiple display monitors, this value is the same for all monitors



LF.lfHeight = -MulDiv(CLng(f.Height), GetDeviceCaps(GetDC(hWndOwner), LOGPIXELSY), 72)

StringToByte(f.Name, LF.lfFaceName()) 




Private Sub StringToByte(InString As String, ByteArray() As Byte) Dim intLbound As Long Dim intUbound As Long Dim intLen As Long Dim intX As Long intLbound = LBound(ByteArray) intUbound = UBound(ByteArray) intLen = LenB(InString) If intLen > intUbound - intLbound Then intLen = intUbound - intLbound For intX = 1 To intLen ByteArray(intX - 1 + intLbound) = AscB(MidB(InString, intX, 1)) Next End Sub 



Dim abData() As Byte Dim Str As String Dim i As Long Str = "Hello world!" ' Convert string to bytes abData = StrConv(Str, vbFromUnicode) For i = 0 To UBound(abData) Debug.Print Hex(abData(i)); "='" & Chr(abData(i)) & "'" Next ' Convert bytes to string Str = StrConv(abData, vbUnicode) Debug.Print "'" & Str & "'"





Private Declare PtrSafe Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long


Private Declare PtrSafe Function GetDeviceCaps Lib "gdi32" (ByVal hDC As LongPtr, ByVal nIndex As Long) As Long


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


Private Declare PtrSafe Function ReleaseDC Lib "user32" (ByVal hWnd As LongPtr, ByVal hDC As LongPtr) As Long


Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr


Private Declare PtrSafe Function MonitorFromWindow Lib "user32" _ (ByVal hWnd As LongPtr, ByVal dwFlags As Long) As LongPtr


Private Declare PtrSafe Function GetMonitorInfo Lib "user32" Alias "GetMonitorInfoA" _ (ByVal hMonitor As LongPtr, ByRef lpMI As MONITORINFOEX) As Boolean 


Private Declare PtrSafe Function CreateDC Lib "gdi32" Alias "CreateDCA" _ (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitData As LongPtr) As LongPtr


Private Declare PtrSafe Function DeleteDC Lib "gdi32" (ByVal hDC As LongPtr) As Long 
















تابع IIF در اکسس



=IIF(ConditionValue If TrueValue If False)


برای مثال


=IIF(State="NY""Yes""No")


تابع IIF کلمه Yes را باز خواهد گرداند اگر فیلد State برای  NY باشد.


=IIF(State="NY"0.8750)


 اگر State برابر NY باشد نرخ مالیات ۸.۷۵ درصد است در غیر اینصورت صفر.


اگر بخواهید از IIF در یک پرس و جو  استفاده کنید ، فقط یک فیلد " محاسبه شده " جدید خالی از آن ایجاد کنید مانند این : 




TaxRate: IIF(State="NY"0.8750)




در زیر از Sum و IIF مشترکاً استفاده شده


SELECT
SUM(IIF (status = 1, 1, 0)) AS Pending,
SUM(IIF (status = 2, 1, 0)) AS Processing,SUM(IIF (status = 3, 1, 0)) AS Rejected,SUM(IIF (status = 5, 1, 0)) AS Completed,Count(*) As Total From .....








absolutely right


کاملاً درسته




۶ آبان ۱۴۰۲ : آرمیتا گراوند دختر دانش آموز تهرانی که اوایل مهر امسال هنگام عزیمت به مدرسه در ایستگاه مترو میدان شهدا دچار افت فشار و بیهوشی شده بود، پس از به ثمر ننشستن معالجات گسترده پزشکی و بیست و هشت روز بستری در بخش مراقب‌های ویژه در گذشت.
















Dlookup در اکسس



در کد های زیر از چندین تابع و متد استفاده شده ابتدا چک میکند  درصورت Null بودن نام کاربری ( username ) در جدول tbl_registration ورودی هایی را برای ارسال و درج در فیلدهای این جدول مثل fname یا password دریافت می کند.



If (IsNull(DLookup ("username", "tbl_registration", "username="" & Me.txt_username.Value & "'"))) Then
Dim query As String

نوشتن کوئری Append :

query="insert into tbl_registration (fname, Iname, username, usertype, email, password, gender) values ('" & Me.txt_fname.Value & "'," & Me.txt_lname.Value & "','" & Me.txt_username.Value & "', " & Me.combo_usertype. Column (1) & ", & Me.txt_email.Value & & Me.txt_pswrd.Value & ", " & Me.combo_gender.Column (1) & ")"
اجرای action query یا sql :
CurrentDb.Execute (query,dbFailOnError)
MsgBox ("Successfully Registered")




ورودی های متنی باید داخل تک کوتیشن ها قرار بگیرند فرضا تکست باکس text1 نام را می گیرد روش نوشتاری آن به شرح ذیل است :

' " & text1 & " ' "



waiting for a goal....


Everything you need to know about.....












مخفی کردن کالمن یا ستون در اکسل




'Hide Columns 

Columns("B:C").EntireColumn.Hidden = True 

'Unhide Columns Columns("B:C").EntireColumn.Hidden = False




متد Selection.Copy و پراپرتی CutCopyMode




lRow=Selection.Row()

Rows(lRow).Select




متد Selection.Copy :

کپی کردن انتخاب مشخص شده به کلیپ بورد


پراپرتی Application.CutCopyMode :

تنظیم یا بازیابی عنوان حالت Cut یا Copy . می تواند True یا False باشد ، یا ثابت XLCutCopyMode 





شمارش سلول های خالی در اکسل و هایلایت کردن



تابع CountBlank تعداد سل های خالی رنج مشخص شده را بر می گرداند







=Or(Row()=.....,Column()=...)








دو رویداد SelectionChange و BeforeDoubleClick در شیت اکسل


دوم آبانماه ۱۴۰۲


به گزارش خبرنگار اعزامی فارس از چین، با اعتراض چین و بررسی اتفاقی که در ماده F56 پرتاب نیزه بانوان افتاد، کمیته برگزاری بازی‌های پاراآسیایی هانگ‌ژو، مدال طلا و نقره هاشمیه متقیان و زینب مرادی را پس گرفت



کد های زیر در رویداد SelectionChange نوشته شده با جابجا شدن روی سل ها ، رنگ کل ستون و ردیف انتخابی به رنگ هایی در می آیند



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.ColorIndex = xlNone
With ActiveCell
.EntireRow.Interior.Color = RGB(248, 203, 173)
.EntireColumn.Interior.Color = RGB(180, 198, 231)
End With
End Sub

کدهای زیردر رویداد BeforeDoubleClick نوشته شده تغییر رنگ ، فونت و برجسته شدن متن ناحیه دابل کلیک شده

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
With Target
.Interior.Color = vbBlue
.Font.Color = vbWhite
.Font.Bold = True
End With
End Sub



Interior : 

Properties



ایجاد  یک ردیف در محدوده خاص و پاک کردن قالب ها

With Range("B2:E5")
.Insert xlShiftDown
.ClearFormats
End With



Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

Select Case Target.Column

Case Is = 3
MsgBox "You're in column 3"

Case Is = 1, 2, 4
MsgBox "You're in column " & Target.Column

Case Is >= 5
MsgBox "You're in column " & Target.Column

End Select

End Sub


رئیس فدراسیون جانبازان: پس گرفتن مدال توسط چین یک سرقت ورزشی بود ( آبانماه ۱۴۰۲ )

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

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

این سرقت مدالی توسط تشکیلات ورزش چین با توجه به نفوذی که داشتند، صورت گرفته و وقتی مدال طلا و نقره ورزشکاران ما را گرفتند، ورزشکار چین که سوم شده بود، به مدال طلا رسید.



مرگ بر چین کمونیست



دهه اول آبانماه ۱۴۰۲


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


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








تغییر رنگ سلول مجاور



در مثال زیر با تغییر عدد مربوط در هر کدام از سل های درون ستون A  رنگ سلول ستون مجاور یعنی B و همان ردیف به رنگ قرمز در می آید.

کد در رویداد Change برگه کاری یا شیت فعلی که در آن هستید نوشته شده



Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
اگر در کالمن ( ستون یک) A باشد
    If Target.Column = 1 Then 
شماره ردیف در متغیر ThisRow ذخیره می شود
        ThisRow = Target.Row 
اگر مقدار داخل ردیفی که در آن هستید  بزرگتر از ۱۰۰ شود ایندکس کالر سلول ستون  B و همین ردیف به ۳ یا رنگ قرمز در می آید و اگر به کوچکتر از ۱۰۰ تغییر یابد به No Color یا بی رنگ تنظیم می شود.
        If Target.Value > 100 Then 
            Range("B" & ThisRow).Interior.ColorIndex = 3 
        Else 
            Range("B" & ThisRow).Interior.ColorIndex = xlColorIndexNone 
        End If 
    End If 
End Sub


مثال دیگر : تغییر رنگ فونت در سلول A1 از شیت یک به قرمز

This example changes the font color in cell A1 on Sheet1 to red.

Worksheets("Sheet1").Range("A1").Font.ColorIndex = 3


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






سخن خداوند است که: و اگر مردمِ آبادى‌ها ایمان مى آوردند و تقوا پیشه مى کردند، برکت هایى از آسمان و زمین به روى آنان مى گشودیم، لیکن تکذیب کردند.
























ایجاد ردیف بین دو ردیف با تغییر مقدار



X=Target.Row

Y=Target.Column

Msgboc X & "," & Y


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


Sub InsertRows()
  Dim lastRow As Long
  Dim rowPtr As Long
 ذخیره شمارش ردیف ها ( البته ستونی که بهیچ عنوان خالی نیست را انتخاب کنید
  lastRow = Range("C" & Rows.Count).End(xlUp).Row
لوپ در آخرین ردیف و ماقبلش 
  For rowPtr = lastRow To 2 Step -1
چک کردن خالی نبودن سل مربوطه
    If Not IsEmpty(Range("C" & rowPtr)) Then
      If Range("C" & rowPtr) <> Range("C" & rowPtr - 1) Then
ایجاد یا Insert یک ردیف
        Range("C" & rowPtr).EntireRow.Insert
      End If
    End If
  Next
End Sub







رویداد Selection Change ناحیه کاربری برای اجرا هر ماکرویی بصورت خودکار زمان تغییر سلول یا انتخاب سلول یا رنج  مشخص













AutoFilter در اکسل و جمع ستون



در تصویر اول از عملگر Or در ستون ۷ یا Owner استفاده نُموده و همانطور که می بینید Ben و John در حالت انتخاب قرار گرفته اند. در تصویر دوم فیلتر در دو ستون ۷ و ۹ صورت گرفته




انجام فیلتر در Vba معمولا در گزارشات می تواند موثر باشد که با کدهایی که داده میشه آیتم (هایی) فیلتر شود(ند) و کانت یا جمع آن در شیت یا ورک بوک ( ناحیه کاری : سند دیگری ) ریخته شود.فرضا محصولات مختلفی دارید که هرکدام در هر ماه طی روزهایش به تعدادی تولید می شود یا باید با Pivot table اطلاعات گزارش را تهیه کنید یا به تعداد عنوان محصولات فیلتر کنید و جمع تعداد را در شیت دیگری برای ارائه به مدیریت منتقل کنید ... با کمک Vba می توان هر محصول را در آن محدود بصورت خودکار فیلتر کرد و بعد تعداد اتومات گرفته و کپی شود و از فیلتر خارج شده و دوباره به همین منوال تا پایان کار ... با رکورد ماکرو هم می توان این کار را به انجام رسانید یعنی فرآیند کاری شما از pivot گرفتن تا انتخاب و کپی کردن اعداد به شیت مربوطه ضبط یا رکورد می شود و بعد زمان اجرای آن بصورت اتومات ملاحظه می کنید که همان کارهایی که خودتان به آرامی و دقت انجام دادید به سرعت جلوی چشمتان انجام خواهد گرفت.


در زیر متغیر LastRow شمارش تعداد ردیف ها در آن موقتاً ذخیره می شود و در انتهای ستون S جمع اعداد وارد شده در ستون را درج می کند توجه داشته باشید اگر در ستون مربوطه Cell یا سلولی خالی باشد تا همانجا را شمارش می کند پس لازم است برای LastRow از ستونی استفاده شود که نباید خالی بماند 


Dim LastRow As Long
LastRow = Cells(Cells.Rows.Count, "S").End(xlUp).Row + 1
Range("S" & LastRow) = WorksheetFunction.Sum(Range("S2:S" & LastRow - 1))



می توانید کد زیر را در ماژولی کپی کنید در ستون یک اعداد یا حروفی را تایپ کنید و بینشان را خالی بگذارید تابع Msgbox عدد ذخیره شده در متغیر lastLine اظهار شده توسط شما را نشان خواهد داد و به چگونگی عملکرد آن نیز پی خواهید برد.


Sub checkLastFilledLine()

Dim lastLine As Long

lastLine = Cell(Rows.Count, 1).End(xlUp).Row

msgbox lastLine

End Sub


SumIf :



البته خود SumIf را غیر از محیط VBE اکسل داخل شیت هم می توان استفاده نمود 

نوشتاری آن به شرح زیر آمده :

SUMIF(range, criteria, [sum_range])

که Range همان ستونیست که شرط شما درآن وجود دارد و آرگومان آخر محدوده ( ستونیست ) جمع شماست . در تصویر بالا  جمع محدوده B را به شرط برقراری عبارت متنی Product B در محدود A  آمده..... تابع SumIfs شرط های بیشتری را می توانید دخیل کنید که نوشتاری آن به شرح زیر می باشد :


SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)


 اول محدوده Sum ( فرضا می خواهید جمع محدوده ای در ستون X را بگیرید ) و بعد محدوده شرط اول ( مثل رنج A در مثال قبل ) و خود شرط ( "Product B" ) و محدوده شرط دوم و شرط دوم و به همین منوال .... یعنی مانور شما برای Sum گرفتن از محدوده ای حاوی چندین شرط متفاوت را مهیا می سازد.



۲۸ مهر ۱۴۰۲ ۱۸ عصر :


سلمان رشدی: از جنگ حماس و اسرائیل در هراسم و امیدوارم متوقف شود 

سلمان رشدی نویسنده سرشناس بریتانیایی-آمریکایی هندی‌تبار در کنفرانس مطبوعاتی در حاشیه برگزاری نمایشگاه بین‌المللی کتاب فرانکفورت خواستار پایان جنگ حماس و اسرائیل شد.  

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



آرمیتاژ مشهد مهر ۱۴۰۲

شاکی بازداشت شد

در نهایت همه این افراد با شکایت مدیر فود کورت پاساژ آرمیتاژ به کلانتری «هفت تیر» که در نزدیکی پاساژ واقع شده، منتقل می‌شوند. به گفته مدیر روابط عمومی پاساژ، در ابتدای امر مقامات انتظامی از برخورد با افرادی که در پاساژ درگیری ایجاد کرده بودند، می‌گویند اما در ادامه آنان آزاد می‌شوند و مدیر فود کورت پاساژ که از طرف مجموعه برای شکایت رفته بود، بازداشت شد. عادل سوختانلو، مدیر فود کورت پاساژ است که برای شکایت رفته بود ولی بازداشت شد. او به «شبکه شرق» می‌گوید: «در کلانتری به یکباره همه چیز برعکس شد. این افراد مجوز نداشتند، به دروغ خود را مأموران فرمانداری معرفی کرده بودند، از شوکر استفاده کردند، به دختر مردم سیلی زدند اما من بازداشت شدم و یک شب هم در بازداشت بودم. فردای آن روز هم من را نزد قاضی کشیک فرستادند و به قید وثیقه آزاد شدم.» مدیر روابط عمومی پاساژ آرمیتاژ در اینستاگرامش نوشته که برای سوختانلو پرونده‌ای با اتهام «ممانعت از امر به معروف» تشکیل شده و در انتظار تشکیل جلسه رسیدگی است.



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


















گرفتن مقدارفعلی گزینه های انتخاب در دایالوگ باکس Options



متد GetOption مقدار فعلی یک انتخاب در باکس Options را برمی گرداند (فرضا تیک خورده یا نخورده-انتخاب شده یا نشده ).اگر روی دکمه Options در سمت چپ و بالای پنجره اکسس کلیک کنید پنجره ای باز میشود که حاوی تنظیم هایی است فرضا رفتار Enter که به فیلد بعد برود یا رکورد بعدی.

متدهای GetOption و SetOption وسیله ای برای تغییر گزینه های احاطه  شده کد ویژوال بیسیک را ارائه می دهد.با این روش ها می توان هر انتخاب موجودی در دیالوگ باکس Options را خواند یا تنظیم کرد.




تائید تغییرات رکورد
تائید حذف اسناد
تائید پرس و جوهای اکشن مثل Append کوئری
"Confirm Record Changes"
"Confirm Document Deletions"
"Confirm Action Queries"

bAction = application.getoption("Confirm Action Queries"

application.setoption("Confirm Action Queries",bAction)


SetOption "Show Status Bar", True







Arr(0)= "Show Status Bar"

Arr(1)="Show Startup Dialog Box"

Arr(2)="Show New Object Shortcuts"

Arr(3)="Show Hidden Objects"

Arr(4)="Show System Objects"

Arr(5)="ShowWindowsInTaskbar"

Arr(6)="Show Macro Names Column"

Arr(7)="Show Conditions Column"


For i=0 To 7
On Error Goto Err
Debug.Print Arr(i) & "... " & GetOption """ & Arr(i) & """
Err:
Debug.Print Arr(i) & "Wrong Decleration"
Resume Next
DoEvents
Next


مهر ۱۴۰۲ طوفان الاقصی با بیش از ۳۰۰۰ کشته در غزه و حمایت بایدن از دفاع اسرائیل در برابر حماس ( بمباران بیمارستان معمدانی ، تخریب مساجد و مناطق مسکونی برای توهم فرضی  نابودی نیروهای پناه گرفته حماس(












RunCommand برای اجرای دستورات داخلی



یک دستور داخلی را اجرا می کند


فرضا باز کردن دایالوگ باکس Options


Public Sub OpenDialogBoxOptions(

RunCommand acOptions

End Sub



هر کدوم از این عملکردها یه مقدار ثابتی در اکسس دارد که در زیر بعضی از آنها آورده شده و می توانید به داکیومنت آفیس برای مشاهده دستورات دیگر مراجعه نُمائید.



انجام ماکزیمم ، مینیمم و به حالت اول درآوردن  اندازه پنجره اپلیکیشن.


acCmdAppMaximize

acCmdAppMinimize

acCmdAppMove

acCmdAppRestore


تبدیل کنترل ها ( فرضا در فرم  کنترل لیست با کس دارید که می خواهید به به تکست باکس تبدیل کنید ) البته در نمای View امگانپذیر نیست و همینطور زمانیکه فرمت فایل اکسس به اجرایی Mde یا accde تبدیل شده باشد.


acCmdChangeToLabel
acCmdChangeToListBox
acCmdChangeToOptionButton
acCmdChangeToTextBox



بستن پنجره دیتابیس

acCmdCloseDatabase
acCmdCloseWindow

acCmdCompactDatabase

متن در تکست باکس یا فیلدها
acCmdCopy
acCmdCut
acCmdDelete
acCmdPaste
acCmdPasteSpecial
acCmdUndo
acCmdRedo


acCmdDeleteRecord
acCmdDeleteRows
حالت نمایش پنجره فرم ، گزارش و پیش نمایش چاپ
acCmdDesignView
acCmdLayoutView
acCmdReportView
acCmdPrintPreview
چاپ فوری
acCmdQuickPrint

اکسپورت و ذخیره اکسپورت
acCmdExportAccess
acCmdExportExcel
acCmdExportHTML
acCmdExportText
acCmdSavedExports

نمایش باکس جستجو
acCmdFind
acCmdFindNext

خروجی اکسل و تکست
acCmdOutputToExcel
acCmdOutputToText

پیمایش در رکوردها
acCmdRecordsGoToFirst
acCmdRecordsGoToLast
acCmdRecordsGoToNew
acCmdRecordsGoToNext
acCmdRecordsGoToPrevious

خارج کردن از فیلتر یا سورت شدگی
acCmdRemoveAllFilters
acCmdRemoveAllSorts
acCmdSortAscending
acCmdSortDescending
انتخاب ، ذخیر رکورد(ها)
acCmdSelectRecord
acCmdSaveRecord
acCmdSelectAllRecords
acCmdSelectEntireRow

پنهان کردن و نمایش پنجره
acCmdWindowHide
acCmdWindowUnhide
زوم کردن ( بزرگنمایی )
acCmdZoom10
acCmdZoom25
acCmdZoom75
acCmdZoom100
acCmdZoom150
acCmdZoom200
acCmdZoom500
acCmdZoom1000
acCmdZoomBox
acCmdZoomSelection








متد انتخاب آبجکت ( شئ باز ) در اکسس و مخفی کردن آنها



این متد شئ مورد نظر در پنجره اکسس را انتخاب می کند دیفالت آرگومان سوم در صورت انتخاب نشدن False یا عدد صفر  و انتخابی یا Optional است. آرگومان اول نوع آبجکت را مشخص می کند مثل acTable ( نشاندهنده جدول )

این متد Docmd.SelectObject ، عمل یا اکشن SelectObject در ویژوال بیسیک است.


در کد زیر فرم Customers انتخاب شده است ( فرمی که باز است )


DoCmd.SelectObject acForm, "Customers", True



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


 'Set focus on the database window/navigation pane
  DoCmd.SelectObject acTable, "", True
 
  If bolHide Then
    DoCmd.RunCommand acCmdWindowHide
  Else
    On Error Resume Next
    DoCmd.RunCommand acCmdWindowUnhide
  End If


bolHide یک پارامتر نوع Boolean در تابع است که در باتنی قرار داده و با False و True کردن پنهان کردن و یا نمایش دادن را تنظیم می کند



Use the NavigateTo method to control the display of database objects in the navigation pane

    
' Move focus to the navigation pane/database container
DoCmd.NavigateTo ("acNavigationCategoryObjectType")






تئوری پنهان کردن پنجره اصلی اکسس


ماده ۱۴- ایجاد نقاط امنویرایش

‌ماده ۱۴- دولت‌های متعاهد در زمان صلح و دولت‌های متخاصم پس از شروع جنگ می‌توانند در خاک خود و در صورت لزوم در اراضی اشغالی، نواحی و نقاط‌ بهداری و امنیت ایجاد کرده و تشکیلات آن را طوری بدهند که زخمداران و بیماران و معلولین و پیران و اطفال کمتر از ۱۵ سال و زنان‌ باردار و مادران اطفال‌ کمتر از ۷ سال را از اثرات جنگ پناه دهند... ‌از دولت‌های حامی و کمیتهٔ بین‌المللی صلیب سرخ دعوت می‌شود که برای تسهیل ایجاد و شناسائی نقاط و نواحی مزبور وساطت و کمک نمایند.




این یک تئوری است که هر شخصی می تواند خودش مورد آزمایش قرار دهد البته این روش (ها) بعلت هک شدن پنجره توسط هکر(ها)  مورد توصیه Office نیست ... در ضمن کامل نیست چون عوامل غیر قابل پیش بینی دیگری ممکن است برای عدم موفقیت آن دخیل باشند.


زمانیکه می خواهید اینترفیس اپلیکیشن ( رابط برنامه )  را پنهان کنید تمام فرم ها می بایست به حالت popup تنظیم شوند تا  مستقل از بقیه اینترفیس اپلیکیشن که پنهان می کنید ظاهر شوند.


ساده ترین روش برای مخفی کردن رابط برنامه استفاده از تابع ویندوزی ShowWindow در رویداد Load فرم است ( SHOWMINIMIZED) به همراه متد Docmd.Restore که باید error handling ( بررسی خطاها ) را هم شامل شود. ( به شدت توصیه می شود)


اگر چه کد خیلی ساده ایست ولی یک مطلب مهمی وجود دارد ، اگر کاربری روی آیکون اکسس در نوار وظیفه ( taskbar ) کلیک کند رابط برنامه بازیابی میشه ( نمایان می شود ).بسیار بعید است که بسیار مطلوب باشد ولی برای برطرف کردن آن در  فرم ( نه فرم Split ) از Painting ، تابع ویندوزی  SetWindowLong و متد Docmd.Restore استفاده می نُمایند.


WS_EX_APPWINDOW=&H40000 :


زمانیکه پنجره قابل مشاهده است ، یک پنجره top-level را داخل نوار وظیفه ( taskbar ) تحمیل می کند.

.

اول استفاده از SetWindowLong  سپس ShowWindow برای مخفی کردن اپلیکیش اکسس و دوباره نمایش فرم جاری.

هر چند در بعضی موارد نمایش آیکون در taskbar اتفاق می افتد و راه حلی وجود ندارد.

برای فرم Split ( که شامل یک نمای datasheet در بالا یا پائین آن است ) باید در تابع ویندوزی SetWindowLong ، از تابع GetParent استفاده کرد ( برای گرفتن هندل [ یک مقدار که همیشه تغییر می کند ] پنجره والد یا مالک )  و تابع ShowWindow برای نمایش والد فرم ( استفاده از GetParent فرم در آرگومان hWnd )  و بدون هاید کردن رابط برنامه 


گزارشات را به همین روش فرم ها نمی توان مدیریت کرد.برای مثال کاربران راهی برای چاپ گزارشات لازم دارند.برنامه یا اپلیکیشن شامل چندین متد نمایش گزارشات زمان مخفی شدن اینترفیس برنامه است.

۱-استفاده از report view و شامل یک دکمه چاپ ( print button ) روی خود گزارش

۲-استفاده از print preview با بازیابی ( برگرداندن ) نوار پیش نمایش چاپ ( print preview ribbon ) در حالیکه گزارش باز است و پس از بسته شدن دوباره پنهان می شود.

انجام این کار قابلیت های اضافی از جمله گزینه ذخیره بعنوان PDF ( و غیره ) را می دهد.

هنگامیکه پنجره برنامه اکسس پنهان است ، فرم های بدون حاشیه ( Border ) برای یک رابط تمیز به خوبی کار می کنند. با این حال ، از آنجایی که فرم های بدون حاشیه ( Border ) نوار عنوان ( title bar ) ندارند ، معمولاً نمی توان آن ها را روی صفحه جابجا کرد.


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


WM_NCLBUTTONDOWN :

&HA1 Or Decimal >>>161=10(A)×16+1

ویندوزمسیج_نان کلاینت باتن داون

هنگامیکه کاربر دکمه چپ ماوس را می فشرد در حالیکه کرسر ( مکان نما ) داخل منطقه nonclient پنجره است ، این پیام ارسال میشود.این به پنجره ای که کرسر را داخل خود دارد ارسال می شود .اگر پنجره ای ماوس را گرفته باشد ، این پیام پست نمی شود.


یک پنجره این پیام را از طریق ( through ) تابع WindowProc خودش دریافت می کند.


موقعیت مکان نما 

Hittest

HTCAPTION=2
HTMINBUTTON=8
HTMAXBUTTON=9


ReleaseCapture :

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

HotSpot نقطه ای در مکان نما است که با سایر عناصر روی صفحه در تعامل است.

SendMessageA(hWnd,Msg,wParam, lParam )

Msg:WM_NCLBUTTONDOWN

wParam : HTCAPTION

lParam : Zero


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


SetWindowPos :


تغییر سایز ، موقعیت و ترتیب پنجره چایلد ، پاپ آپ یا تاپ لول . این پنجره ها طبق نُمودشان در صفحه مرتب می شوند . بالاترین پنجره بالاترین رتبه را دریافت کرده و اولین پنجره در Z Order است.



BOOL SetWindowPos( [in] HWND hWnd, [in, optional] HWND hWndInsertAfter, [in] int X, [in] int Y, [in] int cx, [in] int cy, [in] UINT uFlags );


HWND : 

HWND_TOP(HWND)=0

قراردادن پنجره در بالای Z Order

Places the window at the top of the Z order.
HWND_TOPMOST(HWND)=-1

قرار دادن پنجره بالای تمام پنجره هایی که حالت topmost نیستند.پنجره حتی زمان غیرفعال بودن نیز در حالت topmost خودش باقی می ماند.

Places the window above all non-topmost windows. The window maintains its topmost position even when it is deactivated

uFlags : 

می تواند ترکیبی از مقادیر باینری زیر باشد

SWP_NOACTIVATE=&H10
SWP_NOSIZE=&H1
SWP_NOMOVE=&H2
SWP_NOOWNERZORDER=&H200
SWP_SHOWWINDOW=&H40
SWP_HIDEWINDOW=&H80






SendDlgItemMessage wParam, &H1324,EM_SETPASSWORDCHAR, asc("*"), &H0



Public Function NewProc(ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPtr
If  Msg < HC_ACTION Then
NewProc = CallNextHookEx(hHook, Msg , wParam, lParam)
Exit Function
End If
'This line will ensure that any other hooks that may be in place are
'called correctly.

' ClassName Of InputBox Or Messagebox =&32770

CallNextHookEx hHook, Msg, wParam, lParam
End Function



Function InputBoxhk(Prompt, Title) As String
Dim lngThreadID As Long
lngThreadID = GetCurrentThreadId
lngModHwnd = GetModuleHandle(vbNullString)
hHook = SetWindowsHookEx(WH_CBT, AddressOf NewProc, lngModHwnd, lngThreadID)
InputBoxhk= InputBox(Prompt, Title)
UnhookWindowsHookEx hHook
End Function






If IsNull(txtBatteryID + cmbModelNumber + cmbChemistryType + txtSpecVoltage + txtSpecCapacity) = False Then






قتل کارگردان و نویسنده مهرجویی و همسرش مهر ۱۴۰۲

اما همسو با جریان ضدانقلاب خارج نشین، یک جریان داخلی نیز سعی کرد از این فرصت استفاده کرده تا روایت ضدحکومتی مطلوب خود را بسازد. نکته نخست اینکه چهره‌های امنیتی و سیاسی جریان اصلاح‌طلب با صدور پیام‌های بی‌سابقه‌ای با تأکید روی کلیدواژه‌هایی مانند «نگرانی مردم» و «لزوم شفاف سازی» تلاش کردند دامنه ابهام این حادثه را توسعه دهند و نکته دوم و مهم‌تر اینکه افرادی مانند عمادالدین باقی و مهدی یزدانی خرم از طریق موازی نمایی قتل داریوش مهرجویی با قتل‌های زنجیره‌ای در دهه ۷۰، همسو با گروهک منافقین و طیف‌های رادیکال ضدانقلاب، انگاره سیاسی بودن قتل را بدون ذکر هیچ مدرکی و صرفاً براساس ذوقیات و تشابه اسمی و زمانی (فصل پاییز) بازنمایی کردند!


آخر و عاقبت یک کارگردان مشهور ۸۵ ساله

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

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


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


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





PALESTINIAN RESISTANCE IS JUSTIFIED WHEN OUR PEOPLE ARE OCUUPIED

مقاومت فلسطین موجه است وقتی مردممان اشغال شده اند


 چپگرا و راستگرا Leftist and rightist


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



متد GetPressedMso و ExecuteMso



مقداری را برمی گرداند که نشان می دهد آیا کنترل toggleButton شناسایی شده توسط پارامتر idMso فشرده شده است یا خیر.


متد ExecuteMso کنترل شناسایی شده توسط پارامتر idMso را اجرا می کند.


expression.ExecuteMso "MinimizeRibbon"