تكنیك‌های پیشرفته در اكسس
      

 
Persian Forum Network - Try to be a Professional
صفحه نخست .:.  کاربران .:.   .:. تقویم  .:. کاربران آنلاین
خوش آمدید میهمان ( ورود | ثبت نام )
  /     /  


12»»

تكنیك‌های پیشرفته در اكسس باز / بسته
نویسنده
پیغام
ارسال شده در تاریخ چهار شنبه 20 دی 1385 - 4:25 بعدازظهر


تازه اول راهه

تازه اول راههتازه اول راههتازه اول راههتازه اول راههتازه اول راههتازه اول راههتازه اول راههتازه اول راههتازه اول راههتازه اول راهه

گروه: کاربران
آخرین بازدید: شنبه 14 اردیبهشت 1387 - 11:36 بعدازظهر
پست ها: 17, بازدید ها: 18
یك مقاله عالی برای كسانی كه از اكسس انتظارات بیشتری دارند:

http://www.sayan.ir/ViewArticle.aspx?ArticleID=147

نظرتون چیه؟




تا شقايق هست، سيب هم بايد خورد (سهراب جان ببخشيد)ـ
پست شماره 12108
تبلیغات
ارسال شده در تاریخ چهار شنبه 20 دی 1385 - 9:08 بعدازظهر


Most Valuable Professional

Most Valuable Professional

گروه: مدیر انجمن (ویژه 2)
آخرین بازدید: جمعه 14 تیر 1387 - 7:19 بعدازظهر
پست ها: 1,476, بازدید ها: 2,143
سلام

با اجازه من میخوام مطالب رو اینجا کپی کنم تا دوستان راحتتر استفاده کنن !

منبع مطالب پایین : www.sayan.ir

fmh12007-01-16 06:58:30





   
پست شماره 82734
ارسال شده در تاریخ چهار شنبه 20 دی 1385 - 9:10 بعدازظهر


Most Valuable Professional

Most Valuable Professional

گروه: مدیر انجمن (ویژه 2)
آخرین بازدید: جمعه 14 تیر 1387 - 7:19 بعدازظهر
پست ها: 1,476, بازدید ها: 2,143

چكیده:

در
برنامه‌نویسی MS Access به میزان زیادی می‌توان از امكان ویزارد استفاده
نمود. محیط راحت و سریع این نرم‌افزار معمولا باعث می‌شود كه
برنامه‌نویسان بسیاری از ویژگی‌های تعبیه شده برای یك جدول یا یك فرم را
نادیده بگیرد و از قدرتی كه این ویژگی‌ها می‌توانند برای یك برنامه‌نویس
حرفه‌ای ایجاد كنند، غافل بماند.
كلید واژه:

MS Access, programming, Object, enhancifier



مقاله حاضر نشان
خواهد می‌دهد كه چگونه باید به خصوصیات اشیا متفاوت
مایكروسافت اكسس[1]
از طریق كد
VBA دسترسی پیدا كرد و تغییراتی را در
آنها اعمال نمود. بنابراین، در این مقاله به ایجاد یك بهبود
دهنده برای اكسس می‌پردازیم. غلط‌یاب املایی برنامه ورد[2] به من می‌گوید كه هیچ
پیشنهاد املایی
‌ای برای این كلمه [منظور كلمه
enhancifier است
كه در عنوان مقاله استفاده شده است. - ویراستار] وجود ندارد، ولی من
بیشتر و بیشتر به این كلمه علاقه‌مند می‌شوم، اگر
این كلمه متداول شود، می‌تواند یكی از لغات زبان
انگلیسی شود. (امیدوارم كه كاخ سفید این سایت
را تحت نظر داشته باشد. اگر رییس جمهور بوش در سخنرانی بعدی خود از این
كلمه استفاده كند، افتخارش نصیب من خواهد شد!)[3]



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



1.       درون جدول sales از پایگاه نمونه Pub و لیست خصوصیاتش بگردید.



2.       درون فیلدهای جدول sales بگردید و برای
هر یك توضیحی بنویسید.



3.       درون كنترل‌های فرم بگردی و
خصوصیت
RowSource كنترل Combo box را بخوانید.



4.       درون كنترل‌های فرم بگردید
و برای هر كدام
status bar و متن جایگزین قرار بدهید.



دریافت
فایل استفاده شده در مقاله



از كار با جداول لذت ببرید



برای پیوند
دوباره جداول، باید درون مجموعه
TableDefs (مجموعه‌ای شامل
تعاریف تمامی جدول‌هایی كه در پایگاه داده خود
دارید) بچرخید، صفت اتصال[4] آنها
را تنظیم كنید و مقدار اولیه‌ای به متد
RefreshLink
تمام اشیا بدهید.



خصوصیات جدول‌ها را لیست كنید



ابتدا، به
بررسی كد لازم برای پیاده‌سازی یك حلقه روی صفات تمام
جدول‌ها می‌پردازیم. تابع
ListTableProperties نام جدولی را از پایگاه داده به
عنوان پارامتر ورودی دریافت می‌كند. (برای رعایت اختصار،
این مثال كدی را كه وجود جدول مورد نظر را بررسی می‌كند، شامل
نمی‌شود.) برای این كه بتوانید صفات را بررسی كنید،
باید یك شی صفت، یك شی تعریف جدول[5] و یك شی
پایگاه داده ایجاد كنید.



برخی
كاربران حرفه‌ای اكسس ممكن است انتساب
شی پایگاه داده را فراموش كنند و تنها از CurrentDb() كه شی dbs شماست استفاده كنند، ولی من با نمونه‌هایی كه
به این صورت ایجاد می‌شود مشكل دارم، بنابراین
همیشه یك شی سطح بالای پایگاه داده ایجاد
می‌كنم و هنگامی كه كار تمام شد آن را از بین می‌برم.






[1] Microsoft Access





[2] Word





[3] اشاره به این مطلب است كه جورج بوش در سخنرانی‌هایش
به دفعات از كلمات نادرست و غیرمصطلح استفاده كرده است. - ویراستار





[4] Connect Property





[5] TableDef object









   
پست شماره 82735
ارسال شده در تاریخ چهار شنبه 20 دی 1385 - 9:15 بعدازظهر


Most Valuable Professional

Most Valuable Professional

گروه: مدیر انجمن (ویژه 2)
آخرین بازدید: جمعه 14 تیر 1387 - 7:19 بعدازظهر
پست ها: 1,476, بازدید ها: 2,143


برای
تخصیص شی
TableDef، از دستور SET به همان صورت كه در كد زیر نشان داده شده است، استفاده
می‌شود. از آن جایی كه در این مثال روی صفت
خاصی بحث نمی‌كنیم، یك حلقه
For
Each
برای
چرخیدن روی تمام صفات و گزارش‌دهی روی نام و مقدار آنها ایجاد
شده است. متغیر رشته
strOut برای ساختن لیست به كار برده می‌شود و
نتایج نهایی در یك كادر پیام[6]
قرار داده شده و به عنوان خروجی تابع نشان داده می‌شود.



 



Public Function
ListTableProperties(ByVal sTable As String) As String



 On Error GoTo Err_Handler



 



 Dim dbs As DAO.Database



 Dim tdf As DAO.TableDef



 Dim prp As DAO.Property



 Dim strProp As String



 Dim strOut As String



 DoCmd.Hourglass True



 Set dbs = CurrentDb



 



 strOut = sTable &
vbCrLf & String(40, "-") & vbCrLf



 



 Set tdf =
dbs.TableDefs(sTable)



 For Each prp In
tdf.Properties



 If prp.Name =
"NameMap" Or prp.Name = "GUID" Then



 ' Do nothing for these...
they return funky data



 Else



 ' Output the property
name and value where value exists



 If prp.Value <>
"" Then



 strOut = strOut &
prp.Name & " = " & prp.Value & vbCrLf



 End If



 End If



 Next



 



 ListTableProperties =
strOut



 



 MsgBox strOut



' -------------- Sample
Output --------------



 'Print
ListTableProperties("authors")



 '



 'authors



 '----------------------------------------



 'Name = authors



 'Updatable = True



 'DateCreated = 3/8/2006 7:14:56 AM



 'LastUpdated = 9/6/2006 1:28:49 PM



 'Attributes = 0



 'RecordCount = 23



 'Orientation = 0



 'OrderByOn = False



 'DefaultView = 2



' -------------- Sample
Output --------------



Exit_Here:



 Set tdf = Nothing



 Set dbs = Nothing



 DoCmd.Hourglass False



 Exit Function



Err_Handler:



 MsgBox Err.Description,
vbExclamation, "Error"



 Resume Exit_Here



End Function



 



توجه كنید
كه در این كد هر صفتی كه مقدار تخصیص‌یافته ندارد حذف شده
است. بنابراین، صفات دیگری از جدول را می‌توان مد نظر قرار داد.
برخی از این صفات می‌توانند ویرایش شوند و
برخی نمی‌توانند. به عنوان مثال، نمی‌توانید تاریخ
ایجاد یك جدول را به‌سادگی با تخصیص مجدد مقدار به صفت آن
تغییر دهید. ولی می‌توانید صفات
Orientation و OrderByOn را به‌سادگی
با تخصیص
مقادیری جدید به آنها تغییر دهید.






[6] message box









   
پست شماره 82736
ارسال شده در تاریخ چهار شنبه 20 دی 1385 - 9:17 بعدازظهر


Most Valuable Professional

Most Valuable Professional

گروه: مدیر انجمن (ویژه 2)
آخرین بازدید: جمعه 14 تیر 1387 - 7:19 بعدازظهر
پست ها: 1,476, بازدید ها: 2,143


ستون توضیحات جدول را
تنظیم كنید



برای
نمایش فرآیند تخصیص یك مقدار به یك صفت،
مثالی از دنیای واقعی، كه ممكن است واقعا به آن
نیاز پیدا كنید، می‌آورم. در این مثال، صفت توضیحات
تمام فیلدهای جدول موردنظر به یك نسخه سازگار[7]
از نام ستون تنظیم شده‌اند. توجه كنید كه در شكل زیر، هر
فیلد جدول دارای صفت توضیحاتی است كه با نسخه‌ای از
نام ستون كه برای انسان خواناتر است، با فاصله‌هایی میان كلمات،
تنظیم شده است. ممكن است این كار هنوز چندان پخته نباشد، ولی به هر
حال یكی از قابلیت‌های بهبود دهنده من است.



به علاوه، ممكن
است تغییر صفات جالب به نظر برسد، زیرا هنگامی كه از
ویزارد برای ایجاد یك فرم از یك جدول استفاده
می‌كنید، اكسس از مقدار صفت توضیحات جهت به‌روزرسانی
اتوماتیك متن نوار وضعیت (كه در مثال بعد آن را پیاده‌سازی
خواهیم كرد) استفاده می‌كند. این كار "غذای سگ خود
را خوردن"[8] خوانده
می‌شود و مایكروسافت این كار را به خوبی انجام می‌دهد.
بنابراین، اگر این كد را برای مجهز كردن هر فیلد به
توضیحات به كار ببرید، این مقادیر در فرم‌هایی
كه با ویزارد فرم ایجاد شده‌اند منتشر خواهند شد.





Public Function
SetTableColumnDescriptions(sTable As String) As Boolean



 On Error Resume Next



 



 Dim dbs As DAO.Database



 Dim tdf As DAO.TableDef



 Dim fld As DAO.Field



 Dim prp As DAO.Property



 Dim strValue As String



 Dim strOut As String



 



 Set dbs = CurrentDb



 Set tdf =
dbs.TableDefs(sTable)



 



 ' Loop through all the
fields (columns)



 For Each fld In
tdf.Fields



 ' Grab the field name and
add spaces to make it human readable



 strValue = fld.Name



 ' See the AddSpacesToName
function below. (see download file)



 strValue =
AddSpacesToName(strValue)



 



 ' Attempt to read and set
the property



 If
fld.Properties("Description") = "" Then



 fld.Properties("Description")
= strValue



 End If



 



 ' If the property didn't
exist, there will have been an error and



 ' it needs to be added.



 If Err.Number = 0 Then



 ' No problem. Property
existed and the value was set.



 ElseIf Err.Number = 3270
Then



 ' This error means the
property was not found.



 ' We need to create it.



 Err.Clear



 



 Set prp = fld.CreateProperty("Description",
dbText, strValue)



 fld.Properties.Append prp



 



 If Err.Number <> 0
Then



 MsgBox Err.Description,
vbExclamation, "Error"



 End If



 Else



 ' Not sure what the error
was. Report to user.



 MsgBox Err.Description,
vbExclamation, "Error"



 End If



 Next



 



 Set prp = Nothing



 Set tdf = Nothing



 Set dbs = Nothing



End Function



در این
مثال ترفندی نهفته است، زیرا هنگامی كه مقدار اولیه‌ای
برای توضیحات در نظر گرفته نشده باشد، در واقع صفت اصلا وجود ندارد
[بنابراین، نمی‌توان مقداری به آن نسبت داد. -ویراستار]. چندی پیش
مثالی در گروه خبری دیدم كه از مثال فوق بسیار جالب‌تر
بود، ولی در عین حال با همین روش كار می‌كرد. با
روشی ساده صفت را مقداردهی می‌كند و اگر خطایی با
شماره 3270 رخ دهد، آنگاه متوجه می‌شوید كه نیاز به ایجاد
صفت می‌باشد.



برای
ایجاد یك صفت، باید هنگام ایجاد شی صفت متد
Field.CreateProperty
را فراخوانی كنید و سپس به روش گفته شده آن را به مجموعه
Field.Properties
اضافه كنید. من از تابعی اضافه استفاده می‌كنم كه كد آن در
هیچ جای این مقاله آورده نشده است، اما در فایل این مقاله وجود
دارد.






[7] adapted





[8] ترجمه eating your own dog
food
می‌باشد.
این اصطلاح بیشتر برای شركت‌هایی استفاده می‌شود كه از محصولات تولیدی خودشان
استفاده می‌كنند.(به علت تنوع محصولات یا امكانات تمام كارها را با محصولات خودشان
انجام می‌دهند) - ویراستار









   
پست شماره 82737