CurrentDb.TableDefs("Cost Down TableX9").Fields("Select").Properties("DisplayControl") = acCheckBox
در کد بالا به زبان ساده آدرس نویسی شده از کالکشن و متد و پراپرتی استفاده شده و مشخص کرده که پراپرتی DisplayControl فیلد Select در جدول TableX9 را از نوع CheckBox قرار بده
دوستان عزیز لطفا نظر سنجی فراموش نشود.
TableDefs.CreatePropert Methods
CreateProperty(Name, Type, Value, DDL)
دوستان عزیز لطفا اگر مطلبی کمکتون میکنه یا براتون مفیده لطفا لایک و نظر بدهید در نظرسنجی هم شرکت کنید.
مثال زیر ماژولی است که می توانید در استاندارد ماژول برنامتون اضافه کنید البته اگر بار دوم اجرا بشود چون ساخته شده ارور ران می شود ( اجرا ). یک فیلد از نوع Yes/No ایجاد میکند و خاصیت نمایش کنترل را بصورت چک باکس تنظیم میکند.برای انجام و ایجاد باید دیتابیس را به دیتابیس جاری تنظیم نمایید با
Set dbs=CurrentDb
اگر دیتا بیس دیگری باشد باید از OpenDataBase استفاده بنمائید.سپس جدول دیتابیس جاری را به tdf تنظیم کرده و در آخر ایجاد فیلدبا نامی که پارامتر دوم فانکشن یعنی StrFieldName مشخص کرده.بعد از ایجاد کردن فیلد مورد نظرتون پراپرتی فیلد را تنظیم نموده
Public Sub CreateYesNoField(strTableName As String, _ strFieldName As String) Dim dbs As DAO.Database Dim tdf As DAO.TableDef Dim fld As DAO.Field Dim prop As DAO.Property
Set dbs = CurrentDb
(Set tdf= dbs.TableDefs(strTableNameSet fld = tdf.CreateField(strFieldName,dbBooleanساختن و اضافه کردن فیلد :tdf.Fields.Append fld
Set prop=dbs.CreateProperty("DisplayControl
dbInteger, acCheckBox)
اضاف کردن پراپرتی به مجموعه پراپرتی های شی :
fld.Properties.Append prop
پاک کردن از حافظه موقت :Set prop = Nothing Set fld = Nothing Set tdf = Nothing Set dbs = Nothing End Sub
تغییر پراپرتی کپشن یک فیلد از جدول مشخص شده با استفاده از کالکشن TableDefs ، حدس بزنید و زیر این یادداشت نظر بدهید
A TableDefs collection contains all stored TableDef objects in a database (Microsoft Access workspaces only)
مجموعه TableDefs حاوی تمام اشیا TableDef ذخیره شده در یک دیتا بیس است.
اگر فیلد مورد نظر پراپرتی کپشن نداشته باشد اکسس اروری را ران می کند و چنانچه این قابلیت اضافه شدن را داشته باشد با CreateProperty میشود این خاصیت را به آن فیلد اضافه کرد مثلا فیلد تاریخ کپشن نمی تواند داشته باشد پس سعی در اضافه کردن نداشته باشید
مایکروسافت اکسس فرم ها را به داده متصل می کند و بصورت خودکار آن داده ها ذخیره خواهند شد چه شما بین رکوردها جابجا شوید یا فرمی که در آن کار می کنید را ببندید.این عمل که بصورت خودکار انجام میگیرد خوب است بخاطر اینکه شما داده ای را از دست نخواهید داد حتی اگر بطور اتفاقی بعد از ویرایش ببندید.
اگر این عمل چیزی نیست که شما دنبالش هستید.پیشنهاد میکنم از حالت اتصال به فرم خارج کنید و خاصیت رکورد سورس را Blank بگذارید ( اگر در رکورد سورس چیزی هست پاک کنید ) سپس از کنترل هایی که با Tools می سازید استفاده کنید ( منظور از فیلدهای جدول یا منبع فرم استفاده نکنید ) و بالطبع باید برنامه نویسی برای اضافه کردن به جدول یا ویرایش یا حتی حذف آنها بکار ببرید.
انتخاب دیگر که تمایل به انجامش را داشته باشید این است که از رویداد BeforeUpdate فرم برای اینکه از کاربران بپرسند آیا میخواهند تغییرات ذخیره شود استفاده کنید
اگر نگرانی اصلی شما اضافه شدن بطور ناگهانی رکوردهای جدید است خاصیت Allow Addition را به false تنظیم کنید و رکورد جدید را بصورت برنامه نویسی شده ایجاد نمائید.
در زیر کدی نوشته شده که در سینگل فرم از کاربر می پرسد که میخواهد رکورد حاضر را ذخیره کند یا خیر اگر خیر باشد پارامتر کنسل True می شود و در نتیجه تا زمانیکه Escape را نزنید از رکورد خارج نمیشود امتحان بنمائید !
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim intAns As Integer
intAns = MsgBox("Are you sure you want to save this record?", vbQuestion + vbYesNo, "Save Record") If intAns = vbNo Then Cancel = 1
End Sub
A Form object is a member of the Forms collection, which is a collection of all currently open forms. Within the Forms collection, individual forms are indexed beginning with zero. You can refer to an individual Form object in the Forms collection either by referring to the form by name, or by referring to its index within the collection.
شی form عضوی از کالکشن یا مجموعه forms است که محل جمع آوری تمام فرم هایی است که بازشده اند ، داخل این مجموعه forms فرم های تکی وجود دارند که ایندکس گذاری شده اند و با صفر شروع می شوند.شی فرم تکی در مجموعه forms یا با ارجاع به فرم از طریق اسم یا ایندکسشون انجام می پذیرد.
If you want to refer to a specific form in the Forms collection, it's better to refer to the form by name because a form's collection index may change. If the form name includes a space, the name must be surrounded by brackets ([ ]).
نکته خیلی مهم :
اگر می خواهید به فرم خاصی در مجموعه forms ارجاع بدهید بهتر است توسط نامش باشد چرا که ایندکس آن می تواند تغییر پیدا کند.اگر اسم فرم شامل Space باشد ( فضای خالی بین اسم باشد ) اسم فرم می بایست توسط براکت احاطه شده باشد.
Each Form object has a Controls collection, which contains all controls on the form. You can refer to a control on a form either by implicitly or explicitly referring to the Controls collection. Your code will be faster if you refer to the Controls collection implicitly.
هر شی آبجکت یک مجموعه کنترل هایی دارد که محتوی تمام کنترل ها در فرم است. شما می توانید به یک کنترل در فرم یا بطور ضمنی یا صریح ارجاع بدهید.کد شما سریعتر عمل خواهد کرد اگر بصورت ضمنی به مجموعه کنترل ها ارجاع دهید.
Forms!OrderForm.ctlSubForm.Form!Controls.NewData
فرم Order که سابفرم ctlSubform دارد و کنترل NewData در آن است که به این کنترل ارجاع داده شده.
AllForms!formname | AllForms!OrderForm |
AllForms![form name] | AllForms![Order Form] |
AllForms("formname") | AllForms("OrderForm") |
AllForms(index) | AllForms(0) |
تشریح یکی از خاصیت های مربوطه ( RecordSoutce ) :
The next example changes a form's record source to a single record in the Customers table, depending on the company name selected in the cmboCompanyName combo box control. The combo box is filled by an SQL statement that returns the customer ID (in the bound column) and the company name. The CustomerID has a Text data type.
مثال پائین منبع رکورد فرم در جدول Custom را به رکورد منفرد تغییر میدهد طبق نام شرکت که در کنترل کمبو باکس cmbocompanyname انتخاب شود.کنترل کمبو توسط زبان اس کیو ال پر شده و آیدی مشتری نام شرکت را بر می گرداند.دیتا تایپ آیدی مشتری از نوع تکست است.
Sub cmboCompanyName_AfterUpdate()
Dim strNewRecord As String
strNewRecord = "SELECT * FROM Customer Where CustomerID='" & Me!cmboCompanyName.Value & "'"
Me.RecordSource = strNewRecord
End Sub
خاصیت آیتم از آبجکت AllForms در اکسس :
The Item property returns a specific member of a collection either by position or by index. Read-only AccessObject.
You can use the SetFocus method to move the focus to a subform, which is a type of control. You can also move the focus to a control on a subform by using the SetFocus method twice, moving the focus first to the subform and then to the control on the subform.
شما می توانید برای انتقال فوکس به سابفرم که نوعی از کنترل هست از روش SetFocus استفاده نمائید همچنین می توانید فوکس را به یک کنترل در سابفرم با بکارگیری دوبار از این متد ببرید. انتقال فوکس اول به سابفرم و سپس به کنترل موجود در آن.
فراگیران عزیز سوالات در زمینه اکسس را در نظرات همین یادداشت بنویسید تا سایر دوستان نیز در جوابگویی کمک کنند و خواهشا در نظر سنجی نیز شرکت بفرمائید.
دوستان اکسسی یک کوئری ( یا پرس و جو از جدولی ) را طبق درخواست ( در ادامه ) بنویسید و در نظرات این یادداشت قید کنید که جمع گروه خاصی رو پشت سرهم نمایش بدهد ، فرضا در جدول سه رکورد A می سازید با قیمت های ۱۲۰۰۰ ۱۸۰۰۰ ۲۳۰۰۰ و چهار رکورد B با قیمت های ۸۰۰۰ ۴۵۰۰ ۱۴۳۰۰ ۸۷۰۰ ... کوئری باید طوری نوشته شود که جمع فعلی را با قبلی زده و مانند ذیل بشود.
A 12000
A 12000+18000
A 12000+18000+23000
B 8000
B 8000+4500
B 8000+4500+14300
B 8000+4500+14300+8700
از ساب کوئری استفاده کنید وکد را در نظرات بنویسید تا دیگران هم طریقه استفاده از SubQuery را فرابگیرند ... اجرکم عندا...
ا ول باز کردن فرآیند
دوم اجرای اپلیکیشن
سوم منتظر برای اعلام اتمام فرآیند
چهارم بستن پنجره
Option Compare Database
Option ExplicitPublic Declare Function OpenProcess Lib "kernel32" _(ByVal dwDesiredAccess As Long, _ByVal dwProcessId As Long) As LongByVal bInheritHandle As Long, _(ByVal hProcess As Long, lpExitCode As Long) As LongPublic Declare Function GetExitCodeProcess Lib "kernel32" _Public Const PROCESS_QUERY_INFORMATION = &H400Public Declare Function CloseHandle Lib "kernel32" _(ByVal hObject As Long) As LongDim hProcess As LongPublic Const STATUS_PENDING = &H103&Public Function checkShell(Optional procID As Long)Dim processID As LonghProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, processID)Dim exitCode As Long'processID = procIDprocessID = Shell("c:\windows\notepad.exe")DoMsgBox "The shelled process " & processID & " has ended."Call GetExitCodeProcess(hProcess, exitCode)DoEventsCall CloseHandle(hProcess)Loop While exitCode = STATUS_PENDINGEnd Function
Once your application has located a file object, the next step is often to act on it in some way. For instance, your application might want to launch another application that allows the user to modify a data file. If the file of interest is an executable, your application might want to simply launch it
اقدام بعدی بعد از قرار گرفتن فایل اغلب برای عمل کردن روی آن است مثلا اپلیکیشن شما می تواند درخواست لانچ یا پرتاب کردن اپلیکیشن دیگری را داده و به کاربر اجازه اصلاح داده های آن سند که در اپلیکیشنش باز شده را بدهد ( Word یک اپلیکیشن است و سند آن با پسوند Doc و Docx در آن باز میشود جهت ویرایش یا اضافه کردن ) . اگر فایل مورد نظر شما اجرایی باشد اپلیکیش شما به راحتی آنرا پرتاب میکند ( باز )
عملی را روی فایل خاصی انجام میدهد.
مثل Edit ، Open یا Explore ، Print و جنس آن از نوع String است.
طبق روش زیر برای ویندوز ۶۴ بیت قبل از فانکشن PtrSafe قرار گرفته بغیر از hWnd که نمایانگر پنجره است و nShowCmd که نمایانگر نمایش پنجره در وضعیت هایی است و از نوع عددی ( Long ) هستند بقیه پارامترها از نوع String می باشند.
#If VBA7 Then
Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#Else
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#End If
lpFile specifies a document file, lpParameters should be NULL.
اگر lpFile سندی را مشخص کند lpParameters نمی تواند Null باشد.
The flags that specify how an application is to be displayed when it is opened. If lpFile specifies a document file,
nShow مشخص میکند چگونه یک اپلیکیشن زمانیکه باز میشود نمایش داده شود اگر lpFile یک فایلی مثل Word را مشخص نماید.
If the function succeeds, it returns a value greater than 32. If the function fails, it returns an error value that indicates the cause of the failure.
اگر تابع درست انجام شود یک مقداری بزرگتر از ۳۲ را برمی گرداند می توانید با Msgbox در اکسس ببینید و اگر Fail دهد یا درست انجام نشود مقداری که علت انجام نشدنش باشد را نشان می دهد فرضا اگر دسترسی به فایل نداشته باشیم.
مثال بالا که از سایت گرفته شده نمایانگر این است که اگر دسترسی به فایلی امکانپذیر نبود بعلت محدودیت از طرف ادمین جعبه پیامی را باز کرده و به شما اعلام می نماید. ( GetDeskTopWindow یک هندل است که می بایست تابع آنرا در Module اضافه کنید در اینترنت تابع مورد نظر موجود است حتما از CloseHandle استفاده کنید.
Constant | Value | Description |
vbHide | 0 | Window is hidden and focus is passed to the hidden window. |
vbNormalFocus | 1 | Window has focus and is restored to its original size and position. |
vbMinimizedFocus | 2 | Window is displayed as an icon with focus. |
vbMaximizedFocus | 3 | Window is maximized with focus. |
vbNormalNoFocus | 4 | Window is restored to its most recent size and position. The currently active window remains active. |
vbMinimizedNoFocus | 6 | Window is displayed as an icon. The currently active window remains active. |