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

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

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

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

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

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



موارد زیر به کراّت در این بلاگ یادآوری شده



Scripting.FileSystemObject




 پراپرتی یا ویژگیها

Properties

Drives
می توان در این مجموعه برای گرفتن درایوها لوپ زد  پراپرتی های شئ Drive را در پائینتر مشاهده کنید
'Returns a collection of all Drive objects on the computer.
Name
'Sets or returns the name of a specified file or folder.
Path
'Returns the path for a specified file, folder, or drive.
Size
'For files, returns the size, in bytes, of the specified file; for folders, returns the size, in bytes, of all files and subfolders contained in the folder.
Type
'Returns information about the type of a file or folder (for example, for files ending in .TXT, "Text Document" is returned).






Drive Object Properties : 

AvailableSpace
'Returns the amount of available space to a user on a specified drive or network share.
DriveLetter
'Returns one uppercase letter that identifies the local drive or a network share.
DriveType
'Returns the type of a specified drive.FileSystemReturns the file system in use for a specified drive.
FreeSpace
'Returns the amount of free space to a user on a specified drive or network share.
IsReady
'Returns true if the specified drive is ready, and false if not.
Path
'Returns an uppercase letter followed by a colon that indicates the path name for a specified drive.
RootFolder
'Returns a Folder object that represents the root folder of a specified drive.
SerialNumber
'Returns the serial number of a specified drive.
ShareName
'Returns the network share name for a specified drive.
TotalSize
'Returns the total size of a specified drive or network share.
VolumeName
'Sets or returns the volume name of a specified drive.



متدهای شئ FileSystemObject


Methods : 

CopyFile
CopyFolder
CreateFolder
CreateTextFile

DeleteFile
DeleteFolder
DriveExists
FileExists
FolderExists

GetAbsolutePathName
GetBaseName
'Returns the base name of a specified file or folder.
GetDrive
'Returns a Drive object corresponding to the drive in a specified path.
GetDriveName
'Returns the drive name of a specified path.
GetExtensionName
'Returns the file extension name for the last component in a specified path.
GetFile
'Returns a File object for a specified path.
GetFileName
'Returns the file name or folder name for the last component in a specified path.
GetFolder
'Returns a Folder object for a specified path.
GetParentFolderName
'Returns the name of the parent folder of the last component in a specified path.
GetSpecialFolder
'Returns the path to some of Windows' special folders.
Move
MoveFile
MoveFolder
OpenAsTextStream

'Opens a specified file and returns a TextStream object that can be used to read from, write to, or append to the file.
OpenTextFile
'Opens a file and returns a TextStream object that can be used to access the file.
WriteLine
'Writes a specified string and new-line character to a TextStream file.



در ابتدا با استفاده از متد CreateObject شئ FileSystemObject را ایجاد کنید و بعد از متدها و ویژگیهای آن استفاده کنید.





آذر سال ۱۴۰۲ :













MacAddress




کلاس Win32_NetworkAdapterConfiguration : 


MACAddress

Data type: string

Access type: Read-only

Qualifiers: MappingStrings ("Win32API|Device Input and Output Functions|DeviceIoControl")

Media Access Control (MAC) address of the network adapter. A MAC address is assigned by the manufacturer to uniquely identify the network adapter.

Example: "00:80:C7:8F:6C:96"





باز کردن Windows Explorer




open Windows Explorer.

 


شئ WScript.Application


تابع CreateObject یک مرجع به یک شی
 اکتیو ایکس ایجاد و برمی گرداند.

عبارت Set : 

یک مرجع شی را به یک متغیر یا ویژگی اختصاص می دهد.

در زیر objApp یک متغیر است


objApp "\\Server64\folder1"









گرفتن 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 
















حمله به غزه


impressed me a lot

cease killing


ترسم که جان شیرین هجران به لب رساند
تا وقت آن که باشد ما را به هم رسیدن

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



مرگ بر اسرائیل : 

کلمه « اسرائیل » 43 بار در قرآن مجید ذکر شده که 41 بار آن به لفظ بنی اسرائیل می باشد . این کلمه ترکیب شده از « اسراء » که در زبان سریانی به معنای عبد و « ایل » که به معنای الله است یعنی « عبدالله » می باشد لذا یعقوب (ع) را بدان جهت اسرائیل نامیدند.






در خبر زیر کاملا هشدار از طرف سازمان ملل داده شده ( ۷ اکتبر ۲۰۲۳ در پی بدرفتاری در مسجد الاقصی و طبعاً پاسخ حماس با  حمله موشکی ، بیش از ۸۰۰۰ نفر توسط اسرائیل و پشتیبانی آمریکا کشته شدند : حمله به منازل-بیمارستان و مساجد و کلیسا )



اسرائیل : ما می جنگیم تا زنده بمانیم !!!




خبر ۹ آبان ۱۳۹۴ ( متن زیر ) : هشدار سازمان ملل در این تاریخ 


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



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

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

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

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



10 آبانماه ۱۴۰۲  بیت رهبری :

یک سری احمق گفته اند تظاهرات ( در بمباران مردم غزه ) علیه اسرائیل ؛ در انگلیس کار ایرانه ، آقای خامنه ای : حتما بسیج لندن یا بسیج پاریس بوده ( با خنده )




بیانیه زیر برای همدردی با آرمان های صهیونیستی یهودی که به هیئت وزیران ارائه شده و به تصویب رسیده است.


Balfour Declaration 1917


November 2nd, 1917


Dear Lord Rothschild,
I have much pleasure in conveying to you, on behalf of His Majesty's Government, the following declaration of sympathy with Jewish Zionist aspirations which has been submitted to, and approved by, the Cabinet.
"His Majesty's Government view with favour the establishment in Palestine of a national home for the Jewish people, and will use their best endeavours to facilitate the achievement of this object, it being clearly understood that nothing shall be done which may prejudice the civil and religious rights of existing non-Jewish communities in Palestine, or the rights and political status enjoyed by Jews in any other country."
I should be grateful if you would bring this declaration to the knowledge of the Zionist Federation.
Yours sincerely,

Arthur James Balfour





مرگ بر آمریکا : 



قیمت ایمپلنت دندان آمریکایی

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

  • ایمپلنت آمریکایی زیمر
  • ایمپلنت آمریکایی بیومت BIOMET 3i
  • ایمپلنت آمریکایی بیکون BICON
  • ایمپلنت آمریکایی شورت Short
  • ایمپلنت آمریکایی بیکون مکس Bicon MAX 2.5
  • ایمپلنت آمریکایی سینتوگرفت SynthoGraft



دارین حمزه : 



اخیراً در مصاحبه‌ای جنجالی به MTV لبنان گفت: وقتی رفتم فکر می‌کردم آن‌ها (ایرانیان) در داخل خانه هم حجاب می‌پوشند، منم حجاب پوشیدم، بالاخره نظام اسلامی است نه مثل ما. ولی من فکر می‌کردم نظام اسلامی‌اشان مثل کشورهای عربی است، نمی‌دانستم آنها فرق می‌کنند. کارگردان من را برای شام به خانه‌اش دعوت کرد و غذای ایرانی خوشمزه برایم درست کردند. منم با حجاب کامل از بالا تا پایین آنجا رفتم. ولی دیدم زن کارگردان لباس کوتاه پوشیده و همه بی‌حجاب و عادی انگار که اینجاست، موسیقی و مشروب و همه چی بود. در داخل خانه هر دلشان می‌خواهند می‌پوشند، حکومت به داخل خانه‌ها کاری ندارد. در کل مهمانی من تنها مثل پیرزن‌ها لباس پوشیده بودم و آنها همه لخت بودند.



به قولی در داخل خانه بعضی ایرانی ها عیسی به دین خود و موسی به دین خود است و مثل همیشه خدا ناظر بر رفتارشان





۱۱ آبان ۱۴۰۲ :



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

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



آبان ماه ۱۴۰۲  پس از رونمایی تندیس حاج قاسم سلیمانی در ورزشگاه جلوی ورودی بازیکنان :


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















تابع 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