View Full Version : آموزش: کلک های Acess
AbbasSediqi
پنج شنبه 07 بهمن 1395, 17:09 عصر
در این تاپیک سعی میکنم کلک های خاصی ( روش ها ) رو آموزش بدم که هم در بهتر شدن و کم تر شدن خطا ها و سریع تر شدن برنامه کمک کنه
امید وارم همه مشارکت کنن
لیست موارد
1- DataMacro
http://barnamenevis.org/showthread.php?534737-%DA%A9%D9%84%DA%A9-%D9%87%D8%A7%DB%8C-Acess&p=2356413&viewfull=1#post2356413
2-پیام صوتی در اکسس
http://barnamenevis.org/showthread.php?534737-%DA%A9%D9%84%DA%A9-%D9%87%D8%A7%DB%8C-Acess&p=2357232&viewfull=1#post2357232
AbbasSediqi
پنج شنبه 07 بهمن 1395, 17:26 عصر
اولین آموزش که بسیار دیدم باعث سردرگمی تازه کار ها و پرحجم شدن کد نویسی حتی بعضی از کهنه کار ها میشه
5 مقوله است که همه رو میشه به راحتی انجام داد
Insert , Update (Edit) , Delete در یک Table و مقوله پنجم هم همین موارد در Table دیگریست
- مایکروسافت از Access 2007 به بعد قابلیت قدیمی ای رو که البته در اکسس تازگی داشت به فایل هاش اضافه کرد
این قابلیت همون SQLFunction هستش که در اکسس به عنوان DataMacro شناخته میشه
- بسیار هم قدرتمنده و ضریب خطای کمی داره و کد نویسی رو در این موارد بسیار کم میکنه
و اما Datamacro کجاست
144294
144295
دیتا ماکرو رو از اینجا میتونید ایجاد کنید
اما توضیح :
AfterInsert : همون طور که از اسمش مشخصه این حالت کارش اینه که بعد از هر ایجاد رکورد جدید بیاد و ماکرو ای رو که براش تعریف کردید اجرا کنه
AfterUpdate: همون طور که از اسمش مشخصه این حالت کارش اینه که بعد از هر تغییر در رکورد های قبلی بیاد و ماکرو ای رو که براش تعریف کردید اجرا کنه
AfterDelete: همون طور که از اسمش مشخصه این حالت کارش اینه که بعد از هر حذف رکورد بیاد و ماکرو ای رو که براش تعریف کردید اجرا کنه
BeforeDelete : همون طور که از اسمش مشخصه این حالت کارش اینه که قبل از هر حذف رکورد بیاد و ماکرو ای رو که براش تعریف کردید اجرا کنه
و اما BeforeChange : کارش اینه که قبل از هر تغییری بیاد و ماکرو ای رو که براش تعریف کردید رو اجرا کنه
خوب بریم سراغ ایجاد یه دیتا ماکرو :
برای همین روی Create Named Macro کلیک کنید
144296
بعد از این وارد منوی دیتا ماکرو خواهید شد این منو به این شکله
144297
AbbasSediqi
پنج شنبه 07 بهمن 1395, 17:35 عصر
همون طور که تصویر بالا مشاهه میکنید دارای سه بخشه
بخش بالایی سمت چپ که مربوطه Parameters
بخش پایینب سمت چپ مربوطه به ماکرو
بخش سمت راست منوی درختی همون سمت چپ پایینه
از اینجا به بعد خیلی مهم میشه
Parameters : پارامتر ها همون دریافتی های دیتا ماکرو هستن یعنی برای اینکه به دیتا ماکرو بتونید چیزی ارسال کنید باید براش پارامتر تعیین کنید و بعد با استفاده از پارمترهای تعیین شده برای دیتا ماکرو هرچی خواستید ارسال کنید
به زبون ساده تر مثل یه متغییر میمونه برای یک فانکشن که باید برای اینکه فانکشن کارش رو انجام بده متغغیر رو بهش بدید
خوب حالا بر روی CeateParameter در قسمت سمت چپ بالا کلیک کنید
144298
بعد از کلیک کردن یک پارامتر ساخته میشه
144299
هر پارامتر شامل دو بخشه
اول اسم
دوم توضیح که برای خودتون که بدونید این پارامتر چیه
AbbasSediqi
پنج شنبه 07 بهمن 1395, 18:19 عصر
بعد از ساختن یک پارامتر حالا نوبت ایجاد یک Action هستش
فرض کنید میخواهید یک رکورد جدید ایجاد کنید ولی میخواهید تکراری نباشه
من تو این تیبل دو تا Field بیشت ندارم الان ID و Name
فرض کنید میخواهیم یک نام جدید ایجاد کنیم ولی تکراری نباشه
خوب برای این کار به ترتیب این کار ها رو انجام میدیم
از منوی Action باید LookUp A Record In رو انتخاب کنید
144311
بعد از انتخاب این Action مثل شکل زیر میشه
144301
خوب میریم سراغ شماره 1 :
Required : در اینجا مشخص میکنیم در کدوم Table این کار انجام بشه
نکته بسیار مهم :
مهم نیست در کدوم تیبل در حال ساخت دیتا ماکرو هستید
چون در هر کاری در دیتا ماکرو باید تیبل هدف رو مشخص کنید
خوب من یه تیبل بیشتر ندارم و اون رو انتخاب میکنم
خوب میریم سراغ شماره 2 :
در اینجا بهش میگیم بگرد ببین داده ای شبیه به این داری
خوب به این شکل وارد مکنیم
[Name]=[NameParameter]
خوب حالا میریم سراغ شماره 3 :
یعنی زمانی اجرا میشه که داده تکراری ای باشه
خوب اول بهش میگم یه ارور نشون بده
بنابراین RaiseError رو از منوی Action همین Lookup انتخاب کنید
دقت کیند به عکس
یه شماره در Error Number وارد کنید ودر Error Description متنی رو که میخواهید نمایش بده
بعد از این از همون منوی Action باید StopMacro رو انتخاب کنید
144306
خوب بعدش از منوی Action بعدی مثل عکس زیر CreateRecord رو انتخاب کنید
144307
بعد از انتخاب باز ازتون تیبل هدف رو میخواد که بهش میدیم
اما بعد باید از منوی Action همین SetField رو انتخاب کنید
144308
حالا در مقابل Name نام Field رو بنویسید که اینجا میشه [Name]
در مقابل Value هم نام Parameter رو که ایجاد کردید بنویسید که میشه [NameParameter]
بعذ اگه خواستید یه پیام هم مثل قبل برای ایجاد کنید
144309
خوب ابتدای کار تموم شد و حالا ذخیره میکنیم و براش یه اسم در نظر میگیریم
من اسمش رو میذارم Insert
AbbasSediqi
پنج شنبه 07 بهمن 1395, 18:44 عصر
خوب حالا میریم سراغ فراخواین این Datamacro
اول یه فرم بسازید و در اون یه Textbox ایجاد کنید و Button
بعد بر روی OnClick این button کلیک کرده و MacroBuilder رو انتخاب کنید
در منوی ماکرو از منوی Action باید Run DataMacro رو انتخاب کنید
از منوی کشوی مقابل MacroName ماکرو ساخته شده رو انتخاب کنید
میبینید که پارامتر ساخته شده رو ایجاد کرد و ازتون درخواست میکنه
در مقابل پارامتر NameParameter هم [Text2] که در اینجا سام Textbox ساخته شده منه رو انتخاب میکنیم
حالا فراخوانی شد
اما نکته در هنگام استفاده از OnRaiseError در دیتا ماکرو باید کار زیر رو هم انجام بدید
بر روی OnError فرم کلیک کنید و MacroBuilder رو انتخاب کنید
بعد از منوی Action باید If رو انتخاب کنید
در مقابل if بنویسید Error(1234) & Error(1) که یعنی اگر ارور شماره 1234 و ارور 1 که من به عنوان شماره در دیتا ماکرو قرا دادم بوجود اومد چی کار کنه
بعد از منوی کشویی زیر if باید onerror رو انتخاب و فقط از منوی کشویی مقابل Go to آیتم next رو انتخاب کنید و بعد ذخیره کنید
حالا تکمیل شد
تست کنید
نمونه بعدی به زودی
خیلی سخته خدایی ریز به ریز تشریح کردنش
AbbasSediqi
پنج شنبه 07 بهمن 1395, 18:46 عصر
این هم نمونه کار
AbbasSediqi
پنج شنبه 07 بهمن 1395, 19:23 عصر
و اما عزیزانی که در محیط vba برنامه نویسی میکنن در فراخوانی DataMacro ممکن دچار مشکل بشن
فراخوانی دیتا ماکرو در vba درای دو شرطه
اول داده ست شده با هر پارامتر باید با نوع داده وارد شده با Field اصلی برابر باشه
یعنی مثلا اگر فیلدی داشته باشید که از نوع عدد باشه و بعد بخواهید با دیتا ماکرو تغییر یا اضافه کنید بهش باید حتما داده وارد شده عددی باشه
و اما اگه داده string باشه قضیه فرق میکنه باید قبل و بعد داده """" رو اضافه کنید
نکته دوم باید قبل از اجرای دیتا ماکرو تمامی پارامتر ها رو هم ست کنید
برای اینکه ساده تر بشه از این کد استفاده کنید
Public Function SetDataMacro(DataMacroName As String, Parameters, ParameterValue)
Dim i As Integer
i = 0
For Each Item In Parameters
If IsNumeric(ParameterValue(i)) = True Then
DoCmd.SetParameter Item, ParameterValue(i)
Else
DoCmd.SetParameter Item, """" & ParameterValue(i) & """"
End If
i = i + 1
Next
DoCmd.RunDataMacro DataMacroName
End Function
. برای فراخواین این فانکش هم باید مقدار رو به صورت Array وارد کنید
دقت کنید در داده وارد شده باید index پارامتر و ParameterValue باهم برابر باشند
یعنی اگر پارامتر در Array با Index شماره 0 باشه داده برابر هم باید در ParameterValue دارای Index 0 باشه
SetDataMacro "Commodity.Update", Array("IDParameters", "AvailableParameters"), _
Array(Me.cmb_Search.Column(0, Me.cmb_Search.ListIndex), _
Me.cmb_Available.Value)
mazoolagh
جمعه 08 بهمن 1395, 07:59 صبح
آموزش بسیار عالی و دقیق
شبیه مکانیسم trigger در sql هست و کمک کرد (فقط بدلیل نیاز به تریگر) لازم نباشه که به sql کوچ کرد
همینطور کابوس اکسپورت دیتابیس های sql که از تریگر استفاده میکردن به اکسس رو هم برطرف کرد
AbbasSediqi
جمعه 15 بهمن 1395, 15:46 عصر
و اما ترفند بسیار جالب بعدی
پیام صوتی در اکسس
Function SMSG(Message As String)
Dim speaks, speach
speaks = Message
Set speach = CreateObject("sapi.spvoice")
speach.speak speaks
End Function
mazoolagh
شنبه 16 بهمن 1395, 07:49 صبح
جناب صدیقی
مطالب خوبی تهیه میکنین ولی حیف که یکجا کنار هم میگذارین. اینجوری زحماتتون اونجور که شایسه است دیده نمیشه.
اگر لطف کنین برای هر کدوم یک تاپیک جدا بزنین و اینجا رو فقط بعنوان رفرنس این تاپیکها نگه دارین خیلی بهتره
AbbasSediqi
یک شنبه 17 بهمن 1395, 00:13 صبح
جناب صدیقی
مطالب خوبی تهیه میکنین ولی حیف که یکجا کنار هم میگذارین. اینجوری زحماتتون اونجور که شایسه است دیده نمیشه.
اگر لطف کنین برای هر کدوم یک تاپیک جدا بزنین و اینجا رو فقط بعنوان رفرنس این تاپیکها نگه دارین خیلی بهتره
دوست گرامی اگر براتون مقدوره شما این زحمت رو قبول کنید
با تشکر
mosaArabi
دوشنبه 18 بهمن 1395, 19:43 عصر
[QUOTE=AbbasSediqi;2357232]و اما ترفند بسیار جالب بعدی
پیام صوتی در اکسس
سلام جناب صادقی
ممنون از آموزش روشهای خوب شما
اگر در یک فرم از ساب فرم استفاده کرده باشیم و بخواهیم با تغییر اطلاعات ساب فرم (اطلاعیه) پیغام صوتی بدهید از چه راهکاری میشود استفاده کرد.
ممنون
AbbasSediqi
دوشنبه 18 بهمن 1395, 20:01 عصر
[QUOTE=AbbasSediqi;2357232]و اما ترفند بسیار جالب بعدی
پیام صوتی در اکسس
سلام جناب صادقی
ممنون از آموزش روشهای خوب شما
اگر در یک فرم از ساب فرم استفاده کرده باشیم و بخواهیم با تغییر اطلاعات ساب فرم (اطلاعیه) پیغام صوتی بدهید از چه راهکاری میشود استفاده کرد.
ممنون
دوست گرامی نمونه قرار داده شد
mosaArabi
دوشنبه 18 بهمن 1395, 23:36 عصر
جناب صادقی ممنون
مورد خوب بود . فقط زمانیکه از تیبل اطلاعات تغییر میکنه و فرم باز میشه پیغام صوتی نمیده و منوط به اینکه که حتما باید در ساب فرم تغییر انجام بشه.
من در یک برنامه در شبکه فایلی را گذاشتم که یکی از قسمتهای آن ارسال پیام میباشد . من پیام را در فرم جداگانه ای ثبت میکنم و در فرم ورود برنامه ساب فرم اطلاعیه گذاشتم که هر 5 ثانیه رفرش میشه . میخوام زمان رفرش و با تغییر اطلاعیه یا ثبت اطلاعیه جدید پیام صوتی هم پخش به که اگه نگهبان بیرون از اتاق بود با آلارم صوتی متوجه پیام بشه
(تصویر ورود برنامه و محل نمایش پیوست میباشد)
ممنون
AbbasSediqi
سه شنبه 19 بهمن 1395, 19:16 عصر
نمونه قرا داده شد
hada22
جمعه 22 بهمن 1395, 20:03 عصر
سلام جناب صدیقی.تشکر میکنم بابت آموزش جذاب ومفید شما.من سعی کردم با توجه به گفته های شما این ترفند(تلفظ صوتی کلمات) رو در نمونه کار خودم بکار ببرم.ولی متاسفانه جواب نداد.ممنون میشم راهنمایی بفرمایید.با تشکر
AbbasSediqi
جمعه 22 بهمن 1395, 21:53 عصر
سلام جناب صدیقی.تشکر میکنم بابت آموزش جذاب ومفید شما.من سعی کردم با توجه به گفته های شما این ترفند(تلفظ صوتی کلمات) رو در نمونه کار خودم بکار ببرم.ولی متاسفانه جواب نداد.ممنون میشم راهنمایی بفرمایید.با تشکر
نمونه شما اطلاح گردید
hada22
جمعه 22 بهمن 1395, 23:41 عصر
سپاسگزارم جناب صدیقی.آیا امکان پذیر است که با نمایش نتیجه جستجوی کلمات آن کلمه تلفظ شود؟
AbbasSediqi
شنبه 23 بهمن 1395, 03:19 صبح
سپاسگزارم جناب صدیقی.آیا امکان پذیر است که با نمایش نتیجه جستجوی کلمات آن کلمه تلفظ شود؟
نمونه اطلاح شد
Mehr@ban
شنبه 25 شهریور 1396, 18:27 عصر
سلام آقای صدیقی
ممنون میشم در مورد مواردی که توی تصویر زیر هم هست یه توضیحی بفرمایید
مخصوصا اون event log که خاصیتش چیه و چطور میشه ازش استفاده کرد؟
AbbasSediqi
دوشنبه 27 شهریور 1396, 00:22 صبح
سلام آقای صدیقی
ممنون میشم در مورد مواردی که توی تصویر زیر هم هست یه توضیحی بفرمایید
مخصوصا اون event log که خاصیتش چیه و چطور میشه ازش استفاده کرد؟
این ابزار برای اضافه کردن اطلاعات در مورد دیتا ماکرو در USysApplicationLog است
در اصل برای دیباگینک بدرد میخوره
لینک توضیح مایکرو سافت
یا حق
https://msdn.microsoft.com/en-us/library/office/ff192460.aspx
Mehr@ban
پنج شنبه 22 آذر 1397, 22:05 عصر
سلام مجدد خدمت مشترکین این تاپیک!
از آقای صدیقی درخواست دارم تا مجدد این دوره آموزشی کلک های اکسس رو از سر بگیرن و تکمیلش کنند که نکات قابل توجهی رو بهش اشاره میکنند.
یکی از مباحثی که به نظر من برای اکثر کاربران مهم هست، ثبت گزارش فعالیت کاربران در زمان استفاده از برنامه هست.
که به طور خاص میشه به افزودن ویرایش و حذف اطلاعات از جداول هست.
بنابر آموزش هایی که در بحث دیتاماکرو اشاره کردین، میشه از این بخش هم برای ثبت تغییرات استفاده کرد.
اگر فرصتی داشتین ممنون میشم در این موضوع هم مطالبی رو قرار بدین
محمد رضا بهبودی
شنبه 24 آذر 1397, 07:43 صبح
با سلام
جناب صدیقی مطالب درج شده عالی بود . لطفا در صورت امکان ادامه دهید ممنون
محمد رضا بهبودی
شنبه 24 آذر 1397, 07:44 صبح
ممنون از لطف شما
محمد رضا بهبودی
شنبه 24 آذر 1397, 08:26 صبح
لطفا در مورد پست 36 اگر راه حلی به ذهنتان می رسد راهنمائی بفرمائید ممنون
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.