تاریخ اعمال ۶اسفند ۹۹ و تاریخ اعتبار قیمت ۳ ماه
خصوصی ساعتی 250
گروهی ساعتی 200
درصورت درخواست در نظرات قید گردد
اعتبار به پایان رسید لطفا از طریق کتاب های آموزشی اقدام نمائید و سعی کنید به VB6 یا VB.NET شیفت کنید ACCESS قابل اطمینان نیست.
جدول titles :
title _id type price-------- --------- -----T01 history 21.99T02 history 19.95T06 biography 19.95T13 history 29.99T12 biography 12.9
SELECT title_id, type, priceFROM titles('WHERE (type = 'history('OR type = 'biographyAND price < 20;
title_id type price-------- --------- -----T06 biography 19.95T02 history 19.95T12 biography 12.99
User31.dll
اکسس برای فرم ها و گزارشات خاصیتی رو اعمال کرده ولی برای باتن کلوز اپلیکیشن اکسس تابعی وجود ندارد و با توابع API اینکار امکانپذیر است که باید تابعی نوشت و زمان لود شدن فرم اصلی آنرا فراخوانی نمود .
WM_SYSCOMMAND message
یک پنجره وقتی که یوزر کامند را از پنجره ی منو انتخاب میکند این پیام را دریافت میکند
SC_CLOSE=&HF060& ' Close The Window
SC_MAXIMIZE=&HF030& ' Maximize The Window
SC_MINIMIZE=&HF020& ' Minimize The Window
MF_BYCOMMAND=&H0& ' Indicates that the uPositi
parameter gives the identifier of the menu item
غیرفعال کردن آیتم منو و خاکستری کردن آن بطوریکه نشود انتخاب کرد
MF_GRAYED=&H1& ' Disables the menu item and grays it so that it cannot be selected.
Window Styles
WS_MAXIMIZEBOX=&10000
WS_MINIMIZEBOX=&20000
پنجره در نوار عنوان منودارد که میتوان با این آیتم آنرا برداشت هم کلوز هم باکس Min و Max
WS_SYSMENU=&80000 ' The window has a windomenu
on its title bar.
WS_BORDER=&800000
GetSystemMenu hWnd(A handle to the window that
will own a copy of the window menu.),bRevet(it can be
modified. If this parameter is TRUE)
تابع بالا برنامه را برای دسترسی به منوی پنجره (همچنین به عنوان منوی سیستم یا منوی کنترل) برای کپی کردن و اصلاح، فعال می کند.
نام فرم یا اپلیکیشن اکسس =hWnd
تابع بالا= hMenu
تابع زیر آیتم منوی مشخص شده را فعال یا غیرفعال می کند.
EnableMenuItem hMenu,uIDEnableItem(The menu
item to be enabled, disabled, or grayed : Like )
(SC_CLOSE),uEnable(MF_GRAYED)
FORM.hWnd
شما می توانید از ویژگی hWnd برای تعیین دسته (یک مقدار Integer Long Integrated) که مایکروسافت ویندوز را به پنجره فعلی اختصاص داده است، استفاده کنید.
مثال زیر از ویژگی hWnd با عملکرد API و تابع IsZoomed برای تعیین اینکه آیا یک پنجره Maximize می شود استفاده می شود.
Declare Function IsZoomed Lib "user32" (ByVal hWnd
As Long) As Long
()Sub Form_Activate
Dim intWindowHandle As Long
intWindowHandle = Screen.ActiveForm.hWnd
باز کردن فرم یا گزارش در نمای دیزاین باز کردن پراپرتی سکشن Detail رفتن به تب Format و انتخاب گزینه های انتخابی خاصیت AlterNate Back Color که اگر None شود رنگ پیش زمینه برداشته میشود .
راهنمای انجام کار سایت آفیس به آدرس ذیل .... و سطرهای آخر
استفاده از توابع ویندوز API
در اکسس تابعی برای این موضوع در نظر گرفته نشده ولی میشود با این توابع و هندل کردن ویندو پنجره ای را بست کامند باتن هایی که در Title Bar هست را برداشت مثل خاصیت MinMax Button =No در پراپرتی شیت فرم اکسس ، یا تغییر پوزیشن نمایش Msgbox سیستمی و یا Icon را در Title Bar فرم انداخت ویا پوزیشن پنجره را تغییر داد و خیلی کارهای دیگر یا حتی گرفتن تکست در Title Bar که همان Caption هست و یا تغییر
Declare Function ShowWindow Lib "User32" ( Byval Hwnd As Long , Byval ncmdShow As Long ) As Long
نحوه ی نگارش تابع در ( Win64 و Win32 ) فرق میکند و باید در Win64 قبل از فانکشن Ptrsafe را قرار داد و کل دیتا تایپ Long در تابع به LongPtr تبدیل شوند اگر باید در هر دو 32 بیت و 64 کار کند باید از if Win64 Then # و Else .. End If استفاده کرد که قبل از Else با PtrSafe و LongPtr طبق روش بالا و برای بعد از Else همان تابع بدون PtrSafe و Long قرار می گیرد
Hwnd نام کنترل مثلا فرم یا اپلیکیشن اکسس ؛ مثلا در اکسس
نکته : قبل از گذاشتن تابع زیر جهت مخفی شدن پنجره ی اصلی اکسس حواستان باشد در رویداد کلوز فرم حتما دستور خروج از اپلیکیشن که Quit هست با Docmd را بدهید وگرنه برای بستن باید از Task Manager ویندوز استفاده کنید چون برنامه ی شما هنوز باز است و ویندوز تنها با دریافت مسیج حاصل از زدن دکمه ی کلوز پنجره ی اصلی اپلیکیشن اکسس را خواهد بست !!!
ShowWindow Application.hWndaccessApp , 0
Hide 0
Normal 1
Minimized 2
Maximized 3
مثال زیر اکتیو کنترل را به متغیر ctlCurrentControl تخصیص میدهد و اعمال خاصی را بسته به Value ی خاصیت Name کنترل فوکس داده شده انجام میدهد.
Dim ctlCurrentControl As Control
Set ctlCurrentControl=Screen.ActiveControl
If ctlCurrentControl.Name="txtCustomerId" Then
انجام عمل خاصی وقتی فوکس به تی اکس تی کاستمرآیدی برسد
"ElseIf ctlCurrentControl.Name="btnCustomerDetail
Then
انجام عمل خاصی وقتی فوکس به باتن کاستمر دیتیل برسد
End If
تذکر : اگر فوکس به کنترلی انجام نشود در حال استفاده از ActiveControl یا اگر تمام کنترل های فرم هاید یا غیرفعال شوند خطا اتفاق می افتد
ControlName : List0
اگر خاصیت MultiSelect از پراپرتی خود لیست باکس انتخاب شود ( Simple Or Extended ) با متد زیر مقادیر Bound Column لیست باکس صفر در پنجره ی Immediate Windo w محیط VBE لیست خواهد گردید.
If Me.List0.ItemsSelected.Count>0 Then
Dim VarItem As Variant
For Each VarItem In List0.ItemsSelected
(Debug.Print List0.ItemData(VarItem
Next
End If
چنانچه لیست باکس چند ستونه باشد و بخواهید مقادیر Column ها با توجه به Row انتخابی را بدست آورید باید بطریق ذیل عمل بنمائید
(Debug.Print List0.Column(0,2
که مقدارکالمن 0 و ردیف سوم را برمی گرداند ایندکس ها از صفر شروع می شوند
برای تعداد ردیف یا Row
List0.ListCount
Dim i
For i=0 To List0.Listcount-1
برای ستون یا Column
List0.ColumnCount
INDEX : یک Long Integer که محدوده میتونه از صفر باشه تا ColumnCount منهای یک
ROW : یک Integer که محدوده میتونه از صفر باشه تا ListCount منهای یک
صفر را برای ارجاع به ستون اول بکارمی برید یک برای ستون دوم و ....
صفر را برای ارجاع به ردیف اول بکار میبرید یک برای ردیف دو م و ....
(FORMS!CONTACTS!COSTUMERS.COLUMN(1,4
مثال بالا ارجاع میکند به کالمن یا ستون دوم و راو یا ردیف پنجم
Private Sub Form_Current()With Me![Subform].FormIf .RecordsetClone.RecordCount = 0 Then.Visible = FalseElse.Visible = TrueEnd IfEnd WithEnd Sub
Dim Ctl
For Each Ctl In Me.Controls
If Ctl.ControlType=acTextBox Then
Ctl=Null
End If
Next
مثال شمارش تعداد ro در رشته ی x
"X="Roturzrxro
اول در آوردن فاصله در طول رشته ی x اگر وجود داشته باشد
(""," ",Replace(x=
راه حل خیلی ساده استفاده از توابع Replace و Len
(" ","Len(x)-Len(Replace(x,"ro
طول رشته ی X میشود 10 و طول رشته در تابع Replace (جایگزینی فاصله بجای ro ) میشود 8
در نتیجه تفاضل آنها 2 میشود یعنی دو تا ro در رشته ی x وجود دارد.