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

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

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

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

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

رفع خطای ثبت MSCOMCTL.OCX در ویندوز ۶۴ بیت




Regsvr32 /u  "C:\Windows\SysWOW64\MSCOMCTL.OCX" Regsvr32 "C:\Windows\SysWOW64\MSCOMCTL.OCX"








عبارت GET در Vba برای خواندن Data



داده را از فایل باز داخل یک متغیر می خواند

Syntax

Get [ # ] filenumber, [ recnumber ], varname



varString=String(10," ")

Get #1,,varString





Serial Port Setting




















Com1:9600,n,8,1






مِتُد Rename در تغییر نام شئ مثل جدول یا کوئری در ویژوال بیسیک


Docmd


expression.Rename (NewNameObjectTypeOldName)


Rename "New","Table","Old"


-آرگومان اول : نام جدید

-آرگومان دوم : نوع شئ مثل Query ، Table یا Form

-آرگومان سوم : نام فعلی


Application

expression.RefreshDatabaseWindow






شئ WshShell برای ایجاد شورتکات یا اجرای برنامه



Wscript.Shell


 زمانیکه نیاز به اجرای برنامه ای بصورت محلی ، دستکاری محتویات رجیستری ، ایجاد شورتکات ، یا دسترسی به پوشه سیستمی دارید می توانید WshShell را ایجاد نمائید.شئ WshShell مجموعه Environment را فراهم می سازد.این مجموعه یا Collection به شما اجازه می دهد تا متغیرهای محیطی ( مانند WINDIR ، PATH یا PROMPT ) را مدیریت کنید.






set oShellLink = WshShell.CreateShortcut(strDesktop & "\Shortcut Script.lnk")
oShellLink.TargetPath = WScript.ScriptFullName
oShellLink.WindowStyle = 1
oShellLink.Hotkey = "CTRL+SHIFT+F"
oShellLink.IconLocation = "notepad.exe, 0"
oShellLink.Description = "Shortcut Script"
oShellLink.WorkingDirectory = strDesktop
oShellLink.Save



 



شئ Shell.Application




بعضی مِتُدها :


Explore : باز کردن یک فولدر

FileRun : باز کردن دیالوگ باکس File-Run

FindFiles : نمایش باکس Search ویندوزی

FindPrinter : نمایش باکس ویندوزی انتخاب پرینتر

MinimizeAll : مینیمایز کردن هرچیزی

("\\:NameSpace("C : ایجاد یک رفرنس شئ به فولدر

Open : بار کردن پوشه خاص

BrowseForFolder : باکس نمایش فولدرها ، نتیجه : یک شئ مرجع به شئ پوشه انتخابی ( شامل ویژگی title و self )

ShellExecute : اجرا کردی اسکریپت یا اپلیکیشن

ShutDownWindowse : نمایش باکس ShutDown ویندوز

ShowBrowseBar : نمایش نوارجستجو

ToggleDesktop : نمایش و مخفی کردن دسکتاپ

UndoMinimizeAll : از حالت مینیمایز در آوردن هر چیزی 



تابع Shell برای اجرای برنامه های اجرائی



نوشتاریِ تابع بصورت زیر و دارای دو آرگومان اجباری (Required) و اختیاری(Optional)است.اولی مسیر و نام فایل ، دومی حالت پنجره مثل vbNormalFocus یا vbHide ( پنهان می شود  )



Shell ( pathname [windowstyle ] )







متد Application.DDEInitiate آغاز مبادله داده های پویا



از تابع DDEInitiate برای شروع ارتباط مبادله داده پویا با سایر برنامه ها استفاده می شود. این تابع یک کانال برای انتقال داده بین سرور DDE و برنامه کلاینت باز می نماید


expression.DDEInitiate (ApplicationTopic)


Application : یک عبارت رشته ای نمایانگر یک برنامه که می تواند در مکالمه DDE همکاری داشته باشد.معمولا این آرگومان نام یک فایل EXE است البته بدون ذکر پسوند فایل برای برنامه های بر پایه ویندوز مثل مایکروسافت اکسل


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

در صورت ارتباط موفق ، این تابع یک مکالمه DDE با برنامه و عنوان مشخص شده توسط برنامه و آرگومان های topic برقرار کرده و مقدار عددی نوع LONG را بر می گرداند.این مقدار بازگشتی یک شماره کانال یونیک و واحدی را نشان می دهد که کانالی را که انتقال داده از طریق آن می تواند انجام شود را مشخص می کند. این شماره کانال متعاقباً با سایر توابع و عبارات DDE استفاده می شود.


Dim chanNum As Variant

شروع تبادل با تابع DDEInitiate ، آرگومان اول اسم فایل Exe و آرگومان دوم نام فایل اکسس 

chanNum = DDEInitiate("MSACCESS", "dde_test.mdb")

اجرای ماکروی یک با تابع DDEExecute

DDEExecute chanNum, "[Macro1]"

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

DDETerminate chanNum

نوشتاری تابع DDEExecute :

expression.DDEExecute (ChanNumCommand)


فرض کنید در حال اجرا کردن Word هستید و می خواهید داده را از پایگاه داده اکسس خاصی درون سندی بریزید.مکالمه DDE با اکسس بوسیله باز کردن کانال DDE با تابع DDEInitiate و مشخص کردن نام فایل پایگاه داده اکسس بعنوان topic را می توانید شروع کنید. سپس داده را از آن پایگاه داده به word از بین این کانال انتقال دهید.مایکروسافت اکسس topic های زیرین را پشتیبانی می نماید : 

-System

-نام دیتابیس

-نام جدول

-نام کوئری

-عبارت Sql 

بعد از انتشار مکالمه DDE ، می توانید از عبارت DDEExecute برای ارسال فرمان از کلاینت به برنامه سرور استفاده کنید.زمان استفاده بعنوان سرور ، اکسس هر یک از فرامین معتبر زیر را تشخیص می دهد:

-نام ماکرو در پایگاه داده جاری

-هر action که شما در ویژوال بیسیک انجام می دهید با استفاده از یکی از متدهای شئ  Docmd.

-اکشن های OpenDatabase و CloseDatabase  ، که فقط برای عملیات های DDE استفاده می شوند.



تابع DDE : 

برای مثال می توانید از این تابع در ویژگی ControlSource کنترل تکست باکس برای مشاهده داده از یک سل مشخص شده داخل شیت اکسل استفاده نمائید

DDE(applicationtopicitem)

-آرگومان اول نام برنامه اجرایی با پسوند Exe است مثل Exel یا MSAccess طبق همان فرمتی که در مسیرش وجود دارد

-آرگومان دوم یا topic اغلب یک سند مثل Sheet است ( در اکسل ) یا فایل داده ای

-آرگومان سوم یا item یک عبارت رشته ای که نام آیتم داده تشخیص داده شده توسط اپلیکیشن است . بطور مثال اگر در حال درخواست داده از اکسل هستید item بایستی بصورت نشانگر ردیف و ستون باشد مثل "R1C1" یا نام محدوده ای از سل ها


-در کمبو باکس هم می توان از داده های ستونی از اکسل استفاده کرد ولی نمی توان درقسمت تکست باکس کمبو چیزی را اضافه نمود.

-در option group و checkbox هم مورد استفاده قرار می گیرد.


















from serial port

جای com1 یا com2 می تواند شماره ip باشد

Chan = DDEInitiate("WinWedge", "Com1") MyData = DDERequest(Chan, "Field(1)")

DDETerminate Chan












جدا کردن عدد از یک متن


48-57

1- لوپ زدن در طول متن که از چندین space تشکیل شده مثل :

For i=1 To Len(sText)

2-استفاده از تابع Mid 

Mid(String,Start,Length)

Var=Mid(sText,1,i)

3-اگر Ascii code کاراکتر بین 48 تا 57 بود آن کاراکتر ( از رشته )  در متغیری موقتا ذخیرشود و در خروجی آن ارقام کنار هم نمایش داده شود.

این کدهای اسکی را می توان در جلوگیری از تایپ حروف نیز بکار برد ( در رویدادی که در  تکست باس موجود است )

می توان برای راحتر شدن از تابع IsNumeric استفاده کرد که اگر کاراکتر عددی بود در متغیری ذخیره شود.


تابع ()Asc در اکسس در مقابل تابع() Chr است.برای برگرداندن مقدار ASCII اولین کاراکتر رشته مورد استفاده قرار می گیرد.



-از تابع Split می توان استفاده کرد

-از شی RegExp در Vba نیز می توان بهره برد با استفاد از ویژگی Pattern می توان صفر تا ۹ را مشخص نمود 

[pt] >> فقط داخل براکت 

[pt^] >> شامل داخل براکت نباشد

[a-z] >> شامل حروف کوچک a تا z باشد

d >> شامل digit یا رقم

D >> شامل digit یا رقم نباشد

.  >> تک کاراکتر

n\  یاnewline

r\ یا vbCr

s\ شامل space باشد 

و استفاده از مِتُد Execute در شئ Vba.RegExp

With objRegex 

برای اجرای تابع که تمام تطابق ها در رشته را شامل شود ویژگی Global به True می بایست تنظیم شود.

.Global = True 

'.Pattern = "[^\d]+" '[NOT digit]  
.Pattern = "[\D]+" '[NOT digit] 

کاراکترهایی که ارقام نیستند را با Null جایگزین می کند 

getNumbersInString = .Replace(strIn, vbNullString) 

End With


 در زیر ویژگی Pattern عبارت A.C است اون نقطه طبق چیزی که بالا گفتیم یعنی تک کاراکتر و پس لوپ زیر تمام عباراتی که شامل سه کارکتر A تا C با داشتن یک تک کاراکتر وسط نامعلوم است را لیست می کند یعنی ABC و ADC و AJC

.Pattern = "A.C"
.Global = True
.IgnoreCase = True
stringOne = "ABC-A1289C-ADC-A1289C-AJC"
Set theMatches = regexOne.Execute(stringOne)
For Each Match In theMatches

Debug.Print Match.Value

Next

برای جدا کردن email ها :
w\ هرچیزی که شامل حرف و رقم باشد
Pattern: [\w\.\-]+@[A-Za-z0-9\.\-]+\.[A-Za-z]{2,24}
داخل براکت اولی : شامل حرف یا عدد ، نقطه یا خط ربط
بعد @
داخل براکت دومی : شامل حروف بزرگ و کوچک و ارقام
بعد دات( dot)
داخل براکت سوم : شامل حروف کوچک یا بزرگ انگلیسی 

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








لایحه جدید قوه قضائیه به مجلس ( خرداد ۱۴۰۲ ) که موجبات مخالفت محجبه ها را فراهم کرد :

هیچ‌کس حق ندارد تحت عنوان امر به معروف و یا نهی از منکر نسبت به بانوانی که حجاب شرعی را رعایت نکرده اند مرتکب اعمال مجرمانه از قبیل توهین، افتراء، تهدید و یا ضرب و جرح و یا نقض حریم خصوصی آنان شوند و در صورت اقدام به مجازات مقرر در قانون محکوم خواهد شد»



















کنترل اعتبار IBAN یا شماره حساب بانکی بین المللی




Example (fictitious United Kingdom bank,2 sort code 12-34-56, account number 98765432):

IBAN :


GB82 WEST 1234 5698 7654 32
انتقال ۴ کاراکتر اول به انتها

W E S T12345698765432 G B82
تبدیل حروف به ارقام ( برای A تا Z شروع از 10 و بهمین ترتیب )


3214282912345698765432161182 Mod 97=1


 

A=10,B=11,C=12,D=13,E=14,F=15,G=16


In this example, the  algorithm for D mod 97 will be applied to D = 3214282912345698765432161182. (The digits are colour-coded to aid the description below.) If the result is one, the IBAN corresponding to D passes the check digit test.

1-Construct N from the first 9 digits of D
N = 321428291
2-Calculate N mod 97 = 70
3-Construct a new 9-digit N from the above result (step 2) followed by the next 7 digits of D.
N = 702345698
4-Calculate N mod 97 = 29
5-Construct a new 9-digit N from the above result (step 4) followed by the next 7 digits of D.
N = 297654321
6-Calculate N mod 97 = 24
7-Construct a new N from the above result (step 6) followed by the remaining 5 digits of D.
N = 2461182
8-Calculate N mod 97 = 1
From step 8, the final result is D mod 97 = 1 and the IBAN has passed this check digit test.








در چک کردن صحَّت شماره حساب ، خود فرد مسئول است و اشتباه بودن حساب شخص ، در سایت خود بانک مشخص خواهد شد نه با الگوریتم 









فرق بین ویژگیهای Text و Value همچنین استفاده از تگ های HTML



-ویژگی Text محتویات جاری کنترل است.

-ویژگی Value مقدار ذخیره شده کنترل تکست باکس است.

-ویژگی Value تا زمانیکه کنترل فوکس دارد همیشه در جریان است .

-ویژگی Value ، ویژگی Default کنترل را تنظیم یا باز می گرداند، که این ویژگی زمانیکه به صراحت نام ویژگی خاصی را مشخص نکردید ، فرض می شود.


ویژگی Value مشابه ویژگی DefaultValue که مقداری را مشخص می کند که یک ویژگی در هنگام ایجاد رکورد جدید به آن اختصاص می یابد نیست



ویژگی TextFormat را برای مشخص کردن اینکه در تکست باکس بتوانید از بعضی تگ های HTML استفاده کنید یا خیر استفاده میشود چنانچه >> به 1  تنظیم شود . بطور مثال میخواهید Bold یا Color بودن را در جاهایی از متن به دلخواه تغییر دهید.












ویژگی AppIcon یا AppTitle در اکسس


ویژگی AppIcon یک عبارت رشته ای که نام یک فایل Bitmap یا Icon است. البته شامل مسیر !!!

راحت ترین راه برای تنظیم این ویژگی استفاده از انتخاب Application Icon در جعبه دیالوگ Access Options است.همچنین می توان با استفاده از ماکرو یا ویژوال بیسیک نیز آنرا تنظیم نمود.


برای تنظیم ویژگی AppIcon با استفاده از ماکرو یا ویژوال بیسیک می بایست یا اول در آن پنجره یادشده یکبار تنظیم نمود یا این ویژگی را طبق راه ها( ی )زیر ایجاد کرد :

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


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


expression .CreateProperty(NameTypeValueDDL)


Type :

dbBoolean

dbText

dbLong

dbByte

Ex:Name="AppIcon";Type=dbText;Value=PathOfIconOrBitmap


خطای ۳۲۷۰ بدین معنی است که ویژگی پیدا نشد.

  • Error 3270 means that the property was not found.

بالا ساختن ویژگی بود و بعد استفاده از مِتُد زیر : 

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

expression .Append(Object)




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

تابع SendMessageA و ارسال پیام ویندوزی WM_SETICON

wParam :

ICON_BIG=1

ICON_SMALL=0

lParam:

Null





























SetWindowTextA  hWndAccessApp,TitleText





مخفی کردن پنجره اصلی اکسس



advanced-installer


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


Private Sub Form_Load() On Error GoTo Err_Handler SetAccessWindow (SW_SHOWMINIMIZED) DoCmd.Restore Exit_Handler: Exit Sub Err_Handler: MsgBox "Error " & Err.Number & " in Form_Load procedure : " & Err.description Resume Exit_Handler End Sub

SetAccessWindow یک تابع نوشته شده توسط فرد است مثل 

SetAccessWindow(frm As Form)

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


یک تابع که جوابش Boolean است ازکتابخانه User32 که اظهار آن در ویندوز ۶۴ بیتی با ۳۲ بیتی فرق میکند


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



*اما زمان  کلیک کردن روی TaskBar پنجره اصلی نمایان میشود


استفاده از تابع SetWindowalongPtrA و بعد استفاده از SW_HIDE برای اپلیکیشن اکسس و سپس SW_SHOW برای فرم لاگین مورد نظر 



استفاده از تابع برای تغییر Attribute پنجره مشخص شده


LONG_PTR SetWindowLongPtrA( [in] HWND hWnd, [in] int nIndex, [in] LONG_PTR dwNewLong );


nIndex :

GWL_EXSTYLE=-20

WS_EX_APPWINDOW=&H40000 


زمانیکه پنجره یا Window قابل رویت است یک پنجره top-level را داخل نوار وظیفه یا TaskBar می گنجاند.


LONG_PTR GetWindowLongPtrA( [in] HWND hWnd, [in] int nIndex );


خلاصه باید Style  را گرفت و موقتاً تغییر داد


lStyle=GetWindowLongPtrA(Login.hWnd,GWL_EXSTYLE) Or WS_EX_APPWINDOW


lStyle در آرگومان dwNewLong قرار داده می شود



می توان در پکیج نصبی از  create-desktop-shortcut استفاده کرد برای معرفی  Icon مورد نظر.  

ویژگی WindowStyle >>>  در Style ، فرضا مقدار ۱ : فعال و نمایش کردن پنجره . اگر پنجره مینیمایز یا ماکزیمایز باشد ، دستگاه آن را به سایز و موقعیت اصلی خودش باز می گرداند.



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


















خواندن یک فایل باینری با عبارت Open در اکسل




Sub Temp()
Dim intFileNum%, bytTemp As Byte, intCellRow%
intFileNum = FreeFile
intCellRow = 0
Open "C:\temp.bin" For Binary Access Read As intFileNum
Do While Not EOF(intFileNum)
intCellRow = intCellRow + 1
Get intFileNum, , bytTemp 

Cells(intCellRow, 1) = bytTemp

Loop 
Close intFileNum 
End Sub


نوشتاری 

Open pathname For mode [ Access access ] [ lock ] As [ # ] filenumber [ Len = reclength ]


mode: ( اجباری )

Append,Binary,Input,OutPut Or Random

Default : Random


access : ( اختیاری )

ReadWrite, or Read Write.


filenumber: ( اجباری )

in range 1 to 511

use FreeFile function : برای بدست آورن شماره فایل موجود بعدی




در حالت های Binary ، Input و Random یک فایل را می توان با استفاده از شماره فایل متفاوت بدون بستن باز نمود. در حالت های Append و OutPut می بایست قبل از باز کردن آن با شماره فایل متفاوت ، آنرا بست.


عبارت یا دستور Get در Vba : ( خواندن داخل یک متغیر )

Reads data from an open disk file into a Variable.
Get [ # ] filenumber, [ recnumber ], varname


عبارت یا دستور Put در Vba : ( نوشتن )

Writes data from a Variable to a disk file.

Put [ # ] filenumber, [ recnumber ], varname


عبارت یا دستور Input در Vba : ( خواندن داده )


Reads data from an open sequential file and assigns the data to Variables

Input #filenumber, varlist



عبارت یا دستور Print در Vba : ( نوشتن در فایل )

Writes display-formatted data to a sequential file.

Print #filenumber, [ outputlist ]







OpenPort


Open "COM4:2400,N,8,1" For Binary Access Read Write As #1
cmnd$ = cmnd$ + Chr(13)
Put #1, , cmnd$
answer = ""
char = Input(1, #1)
While (char <> Chr(13))
If (char > Chr(31)) Then
answer = answer + char
End If
char = Input(1, #1) 'گرفتن کاراکتربعدی
Wend
Close #1



دهه سوم اردیبهشت ۱۴۰۲ :

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














شئ Drive و کالکشن Drives در فهرست گیری درایوهای موجود



دسترسی به ویژگیهای یک Disk Drive خاص یا اشتراک شبکه  رافراهم میسازد . دارای کالکشن Drives  و ویژگیهایی مثل DriveLetter VolumeName ، TotalSize ، FreeSpace  یاSerialNumber ( نه هارد )  و ... است


اسم متغیر Fso که با Set همراه میشود

CreateObject("Scripting.FileSystemObject")

For Each D in Fso.Drives

Debug.Print D.DriveLetter & ";"  & _

       D.SerialNumber & ";" & _

       D.TotalSize

Next


مِتُد GetDrive :

Declare A Variable Like fso

GetDrive("D:")

.DriveLetter

.TotalSize



The drivespec argument can be a drive letter (c), a drive letter with a colon appended (c:), a drive letter with a colon and path separator appended (c:), or any network share specification (\computer2\share1)











احمد شاه قاجار، آخرین شاه سلسله قاجار نهم اسفند ۱۳۰۸ درست ۴ سال و ۴ ماه پس از خلع قاجاریه از سلطنت ایران در ۳۲ سالگی در پاریس و در تبعید درگذشت. وی دچار اضافه وزن و بیماری کلیوی بود. احمدشاه را در تیرماه ۱۲۸۸ در ۱۲ سالگی برجای پدرش نشانده بودند. او در سال ۱۳۰۲ سه سال پس از کودتای رضا خان، از سلطنت خلع شده بود. احمد شاه به اراده خود به اروپا رفت، اما دیگر به او اجازه بازگشت داده نشد.










بررسی وجود یک فولدر با استفاده از شئ Scripting.FileSystemObjecf



در صورتیکه پوشه مورد نظر موجود باشد True و در غیر اینصورت False را بر میگرداند


نوشتاری این متد :

Object.FolderExists(filespec)




Bound Control چیست




کنترل محدود


یک کنترل آگاه از داده یا Data-aware می تواند دسترسی به یک فیلد یا فیلدهای خاص در پایگاه داده را از طریق یک کنترل داده فراهم کند. این کنترل معمولاً از طریق ویژگی های DataSource و DataField به یک کنترل داده متصل می شود. هنگامی که یک کنترل داده از یک رکورد به رکورد دیگر منتقل می شود، همه کنترل های محدود متصل به کنترل داده برای نمایش داده ها از فیلدهای رکورد فعلی تغییر می کنند. هنگامی که کاربران داده ها را در یک کنترل محدود تغییر می دهند و سپس به یک رکورد دیگر منتقل می شوند، تغییرات به طور خودکار در پایگاه داده ذخیره می شوند.





مِتُد GetFile از شئ FileSystemObject



این متد یک شئ File مرتبط به فایل با یک مسیر مشخص را بازمی گرداند


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


شئ File دسترسی به تمام ویژگیهای یک فایل را فراهم می سازد


GetFolder>>>>>File Object >>>> Access to all properties


شئ File شامل کالکشن Files ( برای بازیابی فایل های موجود در یک پوشه ) ، چند متد مثل  Move ، Delete ،  Copy ،  یا OpenAsTextStream ( برای دسترسی به فایل : جهت خواندن یا نوشتن ) و چندین ویژگی مثل DateCreated ، Name Path یا ShortPath و Size و ... است


برای شمارش تعداد فایل های موجود در پوشه خاص :

CreateObject Function:

Creates and returns a reference to an ActiveX object.


-ایجاد شئ Scripting.FileSystemOject با تابع CrateObject و اعلان آن با یک متغیر و استفاده از Set

.GetFolder(folderSpecified).Files.Count






















شمارش زیر فولدرها با استفاده از شئ FileSystemObject



1-ساخت شئ و تنظیم آن ( با Set ) به متغیری جهت استفاده از مجموعه ها و متدهای آنها

CreateObject :Scripting.FileSystemObject

متد GetFolder شئ Folder مرتبط با پوشه با مسیر مشخص را برمیگرداند و می توان به ویژگیهای آن دسترسی پیدا کرد.

GetFolder(PathSpecified)

شئ Folder طبق گفته بالا دسترسی به تمام ویژگیهای یک پوشه را فراهم می سازد.





این شئ فولدر دو تا کالکشن داره یکی کالکشن Files و دیگری SubFolders که مجموعه ای از تمام اشیاء پوشه موجود در یک شئ Folder است



حالا به SubFolders احتیاج داریم که بعد با Count ، تعداد را بگیریم



GetFolder(psPath).SubFolders.Count



هر فولدری می تواند یک زیرپوشه باشد . می توان با لوپ زدن یا ارسال آن به خود تابع تعداد کل پوشه ها در مسیر مشخص را گرفت. مثلا فولدر MyPath دارای چند زیرپوشه است و زیر پوشه images ممکن است خودش دارای پوشه هایی باشد که برای آن زیرپوشه و خودش برای آنها فولدر محسوب میشود.




درصورت مفید بودن لطفا در نظرسنجی "حتی خیلی کم" شرکت نمائید










عبارت Type در ماژول


دستور Type فقط در سطح Module قابل استفاده است . پس از اینکه یک نوع تعریف شده توسط کاربر را با استفاده از Type اعلام کردید ، *می توانید متغیری از آن نوع را در هر جایی از محدوده  اعلان اعلام کرد.از Dim ، Private ، Public ، Redim یا Static برای اعلام یک متغیر از نوع تعریف شده توسط کاربر استفاده کنید


*User-Defined یعنی تعریف شده از طرف کاربر


مثال : 


Type EmployeeRecord    ' Create user-defined type.
    ID As Integer    ' Define elements of data type.
    Name As String * 20
    Address As String * 30
    Phone As Long
    HireDate As Date

End Type 

Sub CreateRecord() 

*طبق گفته بالا اظهار کنید

    Dim MyRecord As EmployeeRecord    ' Declare variable. 
    MyRecord.ID = 12003    ' Assign a value to an element. 
End Sub


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


Type Search
lookin As String
Filename As String
FoundFiles() As Variant
FileCount As Long
End Type 

در تابع تعریف شده : 
اول اعلان توسط یک متغیر
Dim SearchResults As Search
With SearchResults
.lookin = "C:\Temp"
.Filename = "*.mdb" 
.FileCount = 0
.
.
End With










تابع API دانلود فایل از آدرس اینترنتی و یافتن فایل در پوشه خاص




Downloads bits from the Internet and saves them to a file.


Library : Urlmon.lib

DLL        : Urlmon.Dll



HRESULT URLDownloadToFile(

             LPUNKNOWN            pCaller,

             LPCTSTR              szURL,

             LPCTSTR              szFileName,

  _Reserved_ DWORD                dwReserved,

             LPBINDSTATUSCALLBACK lpfnCB

);

برای نوشتن تابع بالا برای ویندوز ۶۴ بیت باید PtrSafe را در  نیز در آن بکار ببرید


-Pcaller : را Null یا Zero انتخاب کنید

-szURL : به یک مقدار رشته ای که حاوی URL برای دانلود است اشاره می کند ( منظور آدرس سایت و پیج مربوطه ) اگر معتبر نباشد INET_E_DOWNLOAD_FAILURE را بر می گرداند البته ایندکسش را

-szFileName  : یک مقدار رشته ای حاوی نام یا مسیر کامل ، اگر حاوی مسیر باشد دایرکتوری مقصد یا هدف می بایست از قبل موجود باشد

-dwReserved : رزورشده است و بایستی صفر باشد.

-lpfnCb : عملیات دانلود می تواند کنسل شود توسط برگشت E_ABORT از هر تابع فراخوانی.این پارامتر می تواند به NULL تنظیم شود 





Windows Internet Explorer 8. URLDownloadToFile does not support IBindStatusCallbackEx and cannot be used to download files over 4 gigabytes (GB) in size. Refer instead to IBindStatusCallbackEx::GetBindInfoEx for a code example.



Sub download_multiple_photos()
dlpath = "C:\DownloadedPics\"
For i = 2 To 7
imgsrc = Cells(i, 2)
imgname = Cells(i, 1)
URLDownloadToFile 0, imgsrc, dlpath & imgname & ".jpg", 0, 0
Next i
End Sub



result = URLDownloadToFile(0, url, filePath, 0, 0)
If result = 0 Then
MsgBox ("Succeeded")
Else
MsgBox ("failed ")
End If



برای چک کردن فایل در مسیر خاص 

Syntax   

نوشتاری تابع

Dir[(pathname [, attributes)]

Dir("         " ,VbDirectory)



If Len(Dir("c:\example.mdb")) = 0 Then 

Msgbox "This file does NOT exist." 

Else 

Msgbox "This file does exist." 

End If


از مِتُد FileExists از شی FileSystemObject هم می توان استفاده کرد 


True را بر می گرداند اگر فایل مشخص شده موجود باشد و False را در زمان نبودن موضوع این است بودن یا نبودن !

Returns True if a specified file exists; False if it does not.

Syntax

نوشتاری متد به شرح ذیل است 

object.FileExists (filespec)

این متد از ۳ بخش تشکیل شده

The FileExists method syntax has these parts:

PartDescription
objectRequired. Always the name of a FileSystemObject
filespecRequired. The name of the file whose existence is to be determined. A complete path specification (either absolute or relative) must be provided if the file isn't expected to exist in the current folder.


نوشتاری موجودیت یک پوشه : 

object.FolderExists (folderspec)



  استفاده از  CreateObject و Set برای استفاده از متدهای این شئ : 



Scripting.FileSystemObject


از Set اگر استفاده نشود،  به آن مجموعه که این متدها و ویژگیها را داراست نمی توان دست یافت و با خطا مواجه خواهید شد یادتان نرود عزیزان شما در اکسس و هر زبانی با یکسری Dll سر وکار دارید و برای دسترسی به آنها باید اقداماتی نمود یا تیک آنها را در کتابخانه زد یا ...

-object.GetFile (filespec)
-object.GetFolder (folderspec)

Methods: 
Add
Copy
CreateTextFile
Delete
Move
-Properties:
DateCreated
DateLastAccessed
DateLastModified
Drive
Files
IsRootFolder
Name
ParentFolder
ShortPath
Size
SubFolders
Type





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

























SetOption , GetOption Method



از متدهای SetOption و GetOption برای تنظیم و گرفتن مقادیر انتخاب ( Option Box ) در جعبه دیالوگ Options استفاده کنید.برای مشاهده این دیالوگ باکس ، اول باتن Office  و سپس Access Options را کلیک نمائید.

مقداری که به متد SetOption بعنوان آرگومان  ارسال می کنید  بستگی به نوع گزینه ای دارد که تنظیم می کنید.


مثال : 


گرفتن مقدار :

Debug.Print Application.GetOption("Selection Behavior")

ارسال مقدار :

Application.SetOption "Selection Behavior", 1

مثال دیگر گرفتن فولدر پیش فرض دیتابیس

Application.GetOption("Default Database Directory")



خاموش کردن تنظیم اعلان های تائید تغییر رکورد ، حذف و کوئری های اکشن  یا استفاده از متد Docmd.SetWarnings False


Application.SetOption "Confirm Record Changes", False

Application.SetOption "Confirm Document Deletions", False

Application.SetOption "Confirm Action Queries", False






















Private Declare Function GetUserNameA Lib "advapi32.dll" Alias _
(ByVal lpBuffer As String, nSize As Long) As Long






غیر فعال کردن تیک CheckBox با فعال کردن کنترل تیک چک باکس دیگر در فرم



لطفا در صورت اعلام نظرسنجی خیلی کم یا کم در همان یادداشت علت را ذکر کنید



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


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


checkbox2=Not Checkbox1

یا

CheckBox2=0


چک کنید کدام درست است و اعلام بفرمائید.


threads/if-checkbox1-is-selected-cannot-select-checkbox2-if-checkbox2-is-selected-cannot-select-checkbox1


چنانچه تعداد چک باکس ها زیاد باشد که معمولا همچین کاری کمتر پیش میاد مگر اینکه خلافش ثابت بشود >>> باید در رویداد Click هر کنترل ، سایر کنترل ها را مقدار صفر دهید که زمانبراست ( البته منظورم چک باکس های بیش از ۸ باکس است ). روشی را باید بیابید که در کنترل های چک باکس با نام معین لوپ بزند و اگر اسم کنترل فعلی که زده شد نبود آنها را False نماید  ... اگر کسی به روش مذبور دست پیدا کرد برای نمایش و استفاده سایر کاربران در نظرات قرار دهد.



اجرای کوئری به روز رسانی : 

تیک چک باکس با نام Acct در کل رکوردهای جدول tblData ، در صورتیکه زده شده باشد ( برابر True یا عددی غیر صفر ) را بر می دارد.


Run an UPDATE query.

CurrentDb.Execute "UPDATE tblData1 SET Acct = False WHERE Acct <> False"


اسنادِ ویژگی ( Property ) و اشیاءِ ( Object ) مایکروسافت آفیس به رایگان برای مطالعه همه قرار داده شده مثل ویژگی زیر .لطفا دنبال کد آماده نباشید!!!  در خود  مثال های خیلی خوب و کاربردی آورده که فقط با مطالعه و تست زیاد می توان یاد گرفت.


ویژگی ControlType (جهت مطالعه)

office-2003















تابع RND در اکسس




تابع RND عددیست بین 0 و 1 .. و مثل یک ضریب عمل می کند 





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


The code module contains the Wichmann-Hill (1982) CLCG (combined LCG) in VBA and is fully functional. It is called RndX() and is used in conjunction with its own RandomizeX(). It has a much longer repeat cycle than Microsoft's Rnd().



فروردین ۱۴۰۲ : خلیل عقاب پدر سیرک ایران و  بالا برنده یک فیل ، هم در ۹۹ سالگی وفات نمود.روحش شاد




دندان های شیری بچه ها دارای سلول های بنیادین پس دورش نندازید حتما مکان هایی وجود دارند که خریدارشن 



حمیرا در پاییز ۱۳۴۴ خورشیدی با خواندن اثر «صبرم عطا کن» به شهرت رسید. با پخش صدایش در رادیو پدر او را می شناسد و برای حفظ آبرو تمام صفحات موسیقی حمیرا را از بازار می‌خرد و در خانه انبار می‌کند و با تشر جدی حمیرا را از هرگونه فعالیت موسیقی منع می‌کند.

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






multivalued field چیست





زمان کلیک روی فلش  کمبوباکس چند انتخابی ، چک باکس ها ظاهر می شوند تا انتخاب های شما را نمایش دهند.



A multivalued field combo box


می توان موارد در فهرست را تیک زد یا تیک را برداشت سپس با فشردن کلید OK ذخیره موارد انتخابی را انجام داد.موارد انتخاب شده در multivalued field نگهداری شده و زمان نمایش با کاما از هم جدا می شوند.( بصورت پیش فرض ) 


A multivalued field with values separated by a comma


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



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



حذف یک multivalued field 

مهم :

 زمان حذف فیلد چند مقداری که حاوی داده است ، آن داده بصورت دائم از دست می رود و نمی توان آنرا undo کرد . به این دلیل بایستی قبل از حذف هر فیلد از جدولی یا سایر اجزاء پایگاه داده بکاپ  ( پشتیبان ) گرفت.



فیلدهای چند مقداری به عنوان اشیاء Recordset در DAO نشان داده می شوند. مجموعه رکوردهای ( Recordset ) یک فیلد ، فرزند مجموعه رکوردهای جدولی است که حاوی فیلد multivalued است . برای نمونه سازی مجموعه رکوردهای فرزند ( Child ) از ویژگی Value فیلد multivalued ( چند مقداری ) استفاده بُنمائید.


Set rsParent=....openrecordset("Tasks")

Set  rsChild=rsParent!assignedto.value

loop in rschild and finish










مهرنوش طوسی ، باوان در نون.خ ۴



صفحه شبکه نسیم ۱۳ فروردین ۱۴۰۲ ( البته یکشنبه ) عدد ۵ و ۱۲ کجای تقویمه 









وقوع زمین لرزه در ایران سال ۱۴۰۲ ؟!!!







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



۱۶ فروردین ۱۴۰۲ : خودکشی یا قتل ؟!!!


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

سید مهدی فلاح میری عنوان کرد: مرحوم کیومرث پوراحمد ساعت یک بامداد روز چهارشنبه مورخ ۱۴۰۲/۱/۱۶ در یکی از واحدهای دهکده ساحلی انزلی دار فانی را وداع گفت.
دادستان مرکز استان در ادامه اظهار کرد: درحال حاضرجسد به پزشکی قانونی انتقال داده شد تا علت تامه مرگ بررسی و پس از آن خبرتکمیلی متعاقبا اطلاع رسانی می شود.


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



* تعهدات سازمان در قبال بیمه‌شدگان اختیاری

کمک‌هزینه ازدواج،ازکارافتادگی جزئی،غرامت دستمزد ایام بیماری و بارداری و بیمه بیکاری شامل بیمه‌شدگان اختیاری نمی‌شود؛زیرا این بیمه‌شدگان دارای کارفرما نیستند همچنین در کارگاه‌های مشمول قانون کار اشتغال ندارند و خود مستقیما خواهان ادامه بیمه به طور اختیاری هستند.



تصاویری از لانا‌ دل‌ ری، خواننده و ترانه‌سرای معروف آمریکایی در حال گرفتن غذای ایرانی از رستوران تهران در لس‌آنجلس





فروردین ۱۴۰۲ و اتاق سیگار فقط مخصوص شاعران : 

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






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

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




تصویر هنرپیشه های ایرانی در کانادا؟!!!




۲۱ دانه سیر و ۷ عدد لیمو سنگی (لیمو ترش بزرگ ) را با مخلوط کن میکس کرده و یک لیتر آب ( ۴ لیوان ) به آن اضافه کنید سپس روی شعله ملایم تا ۴۸ درجه برسانید ، سپس اجازه دهید ترکیب سرد شود . آنرا در یخچال نگهداری کنید و هر شب بعد از شام یک استکان به مدت ۲۰ شب میل نمایید
بعد از شب بیستم یک هفته وقفه بیندازید و پس از گذشت یک هفته همین پروسه را به مدت ۲۰ شب دیگر تکرار کنید اگر خواستید این درمان را دو باره انجام بدهید باید پس از یک سال اقدام نمایید .
تمام گرفتگی رگ ها در سراسر بدن بخصوص قلب باز می شود و چربی ها ی درون رگ ها می سوزد .
این درمان برای همه افراد حتی کسانی که مشکل حاد ندارند نیز توصیه می شود.
کسانی که طبق تشخیص پزشک به عمل جراحی نیاز دارند بهتر است قبل از اقدام به عمل یک بار این شیوه را امتحان کنند شاید پس از آن نیازی به عمل نباشد.