PDA

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 اگر راه حلی به ذهنتان می رسد راهنمائی بفرمائید ممنون