PDA

View Full Version : اعلام پیام در زمان ورود اطلاعات یک رکورد بشرطی که رکورد قبلا وجود دارد و یک کنترل آن



سعید مشکین فر
دوشنبه 17 اردیبهشت 1386, 00:29 صبح
یک بانک اطلاعات تردد پرسنل دارم با فیلد های شماره،نام،نام خانوادگی،تاریخ شروع تردد،تاریخ خاتمه تردد،و وضعیت تردد میخواهم در صورتی که در یک رکورد ذخیره شده مقدار وضعیت تردد که کامبو باکسی با مقادیر مجاز و غیر مجاز دارد اگر مقدار این کامبو باکس برای رکوردی غیر مجاز ثبت شده باشد هنگامی که کاربر اطلاعات رکورد را وارد مینماید مسیج باکسی اعلام نماید که وضعیت تردد این کاربر غیر مجاز است و در صورتی که مقدار مجاز باشد رکورد ذخیره شود بی نهایت از دوستان عزیزم که مرا راهنمایی میکنند سپاسگزارم

انگوران
دوشنبه 17 اردیبهشت 1386, 06:24 صبح
چیزی که من از سئوالتون متوجه شدم شما در رویداد خروج کمبو باکست بنویس

if me.comboname.value="غیرمجاز" then
msgbox"وضعیت تردد این کابر غیرمجاز است"
cancel=true
end if

سعید مشکین فر
جمعه 21 اردیبهشت 1386, 03:52 صبح
.فرم موجود یک رکورد دارد که مقدار وضعیت تردد شخص ذکر شده روی غیر مجاز ست شده ، البته در حالت پیش فرض این مقدار مجاز است اما به دلایلی این شخص غیر مجاز تشخیص داده شده و وضعیت تردد آنرا به غیر مجاز تغییر داده اند ، اکنون کاربر برنامه را برای اولین با باز میکند و اطلاعات همان شخص را با شماره پروانه تردد جدید و تاریخ جدید وارد میکند طبیعی است که بدلیل تغییر شماره یکتا رکورد پذیرفته میشود .اما بنده میخواهم با توجه به اینکه کاربر اطلاعی از غیر مجاز بودن شخص ندارد در صورت ورود اطلاعات، برنامه با توجه به رکوردی که قبلا ذخیره شده در مسیج باکسی به کاربر اعلام کند که این شخص برای ورود به شرکت غیر مجاز است از اینکه لطف شما شامل حال بنده و همه دوستان است بی نهایت سپاسگذارم

صبا9841
جمعه 21 اردیبهشت 1386, 08:43 صبح
حجم این نمونه که گذاشتی زیاد است و احتمالا کسی نمیتونه اونو دانلود کنه تا راهنمایی کنه .
تصاویر را حذف کن و سایر غیرضروریهارا و در آخر کمپک کن

سعید مشکین فر
جمعه 21 اردیبهشت 1386, 15:39 عصر
بفرمایید برنامه با حجم کم .از راهنمایی شما هم ممنون .

صبا9841
شنبه 22 اردیبهشت 1386, 11:15 صبح
اگر مشکلت اینجوری حل میشه خوب اینو که اقای انگوران توضیح داد.

سعید مشکین فر
شنبه 22 اردیبهشت 1386, 23:12 عصر
جناب صبا احتمالا من نتونستم سوالم رو خوب مطرح کنم توجه کنید که کاربر خودش مقدار کامبو رو در مرحله دوم روی غیر مجاز قرار نمیده فرض کنید ما 30000 رکورد داریم یکی از اونها هم مربوط به یه شخص ممنوع الوروده که شش ماه پیش ممنوع شده و کاربر از اون اطلاعی نداره اکنون یک برگ تردد اومده که باید ثبت بشه در پیش فرض مقدار کامبو تردد روی مجازه و کاربر اطلاعی نداره که این شخص ممنوع برگه تردد هم باید ثبت بشه اما برای شخصی که مجاز باشه خوب حالا با توجه به اینکه کاربر طبق روال عادی مقدار کمبو رو در حالت پیش فرض یعنی مجاز قرار میده چطور بفهمیم که این شخص در ششماه قبل غیر مجاز شده؟ از توجه شما و انگوران عزیز سپاسگزارم

انگوران
یک شنبه 23 اردیبهشت 1386, 06:25 صبح
آیا زمانی که شخص ممنوع الورود میشه جائی مشخص میشه ؟ ( یعنی فیلد خاصی برای این مورد در نظر گرفتی یا مقدار کمبو رو به غیر مجاز تغییر می دی یا نه ؟ ) اگه اینجوری باشه با dlookup فکر کنم بشه کاری کرد .

صبا9841
یک شنبه 23 اردیبهشت 1386, 08:08 صبح
با این نحوه طرح مشکل به نظرم موضوع را خیلی پیچیده میکنی.
فکر کنم میخواهید برنامه کاری بکنه که تردد شخص علی را که در 01/01/86 مثلا غیر مجاز شده را شناسایی کنه و الان که مثلا 22/02/86 هست و بایستی ترددش را ثبت کنه این سابقه اش را اعلام کنه. اینطوری میخواهی بشه؟ یا ....

سنبله کار
یک شنبه 23 اردیبهشت 1386, 10:54 صبح
نمونه هایی که قرار دادید به نظر من یک اشکلاتی دارن .
بهتر این هست که اطلاعات پرسنل در یک جدول به همراه وضعیت تردد ثبت بشوند و در جدول دیگری آی دی شخص و زمان عبور درج بشه .
با ساختن فرمی برای جدول دوم و تعیین رویداد روی نام شخص می تونید به محض ثبت نام فردغیر مجاز پیغام سیستم رو به کاربر نمایش بدید .
به نمونه زیر توجه کنید امیدوارم منظور شما رو خوب متوجه شده باشم .

سعید مشکین فر
یک شنبه 23 اردیبهشت 1386, 21:45 عصر
جناب انگوران همونطور که فرمودید در صورتی که شخص غیر مجاز شد رکورد سرچ شده و وضعیت تردد او در آخرین برگه تردد بر مبنای تاریخ از مجاز به غیر مجاز تغییر میکنه چون شخص بعنوان کارگر پیمانکار وارد شرکت میشه در تاریخهای مختلف برای او برگه تردد صادر میشه منتها با شماره برگه های متفاوت و تاریخهای متفاوت از حسن نظر و وقت گذاشتن برای مشکل بنده ممنونم

سعید مشکین فر
یک شنبه 23 اردیبهشت 1386, 21:48 عصر
دوست عزیز صبا دقیقا این که فرمودید همان مشکل بنده است.اگر شخص علی ترددش غیر مجاز نشده باشه که اطلاعاتش ذخیره میشه اما اگر در همان تاریخی که فرمودید غیر مجاز بود سابقه اش اعلام بشه از لطف و محبتتون ممنونم

سعید مشکین فر
دوشنبه 24 اردیبهشت 1386, 14:39 عصر
جناب سنبله کار با تشکر میشه یه توضیح مبسوط در مورد فایل نمونه بدین شاید این روش بتونه مشکل رو حل کنه مثلا تاریخ جاری برای چیه ؟اگه ممکنه بر مبنای فایل خودم یه نمونه کاملتر بدین ممنونم

انگوران
سه شنبه 25 اردیبهشت 1386, 09:58 صبح
دوست عزیز چیزی که من از خواسته شما متوجه شدم باید برنامه رو به شکل ضمیمه طراحی کنید که به دفعات شماره پرسنلی وارد میشه و زمانی که برای آخرین بار وضعیت تردد به غیر مجاز تغییر پیدا کنه بعد از اون پیغام می ده که کاربر در تاریخ ؟ غیرمجاز شده .
برای نمونه شماره پرسنلی 1010 رو وارد کنید .

سعید مشکین فر
سه شنبه 25 اردیبهشت 1386, 11:56 صبح
جناب انگوران عزیز بمن اجازه بدهید تادر برنامه خودم اعمالش کنم اگه مشکلی بود چاره ای جز مزاحم شما و دیگر دوستان شدن ندارم.ضمنا من مطمئن هستم این مشکل بسیاری از دوستان هست که در محیطهای متفاوت به اشکال مختلف با آن مواجه هستند و اگه جواب من باشه جواب اونها هم هست بهر صورت از حسن توجه و گذاشتن وقت گرانبهایتان برای حل مشکل بنده سپاسگذارم.

سعید مشکین فر
پنج شنبه 27 اردیبهشت 1386, 09:33 صبح
جناب انگوران عزیزگر جه مثال ذکر شده کاربرد مفید بسیاری دارد اما متاسفانه با برنامه بنده جور نیست و مشکل من را حل نمیکند دقت بفرمایید من مجددا مشکل را توضیح میدهم . بانک اطلاعات ثبت تردد پرسنل است یک شخص در طول سال ممکن است چندین درخواست تردد داشته باشد که در تاریخهای متفاوت با شماره برگه ترددهای مختلف برای او پروانه تردد صادر میشود پس شخص با یک نام و نام خانوادگی میتواند چندین برگه تردد با شماره برگه تردد متفاوت (نه شماره پرسنلی) داشته باشد اکنون به دلیلی یک شخص ممنوع الورود میشود در برنامه آخرین رکورد با آخرین تاریخی که پروانه تردد بنام او ثبت شده یافته میشود و کامبو باکس وضعیت تردد او که تا کنون روی مجاز بوده به غیر مجاز تغییر داده میشود . مشکل از اینجا شروع میشود فرض کنید همین شخص سه ماه بعد میآید و درخواست ورود به شرکت را میدهد در صورتی که در بانک اطلاعات او غیر مجاز ثبت شده و کاربر نمیداند که این شخص ممنوع الورود است میخواهیم در زمان ورود اطلاعات این شخص در فرم اصلی ورود اطلاعات برنامه به کاربر اعلام کند که این شخص ممنوع الورود است دقت بفرمایید (در فرم ورود اطلاعات و در زمان ورود رکورد آن شخص)این مورد در یک پروسه جستجو توسط کاربر اتفاق نمی افتد و در همان زمان ورود و ثبت اطلاعات باید به کاربر اعلام شود

مهدی قربانی
پنج شنبه 27 اردیبهشت 1386, 14:36 عصر
سلام
آقا سعید مبنای شناسایی شخص مورد نظر رو چی در نظر گرفتی ( شماره پرسنلی ، id ، شماره یا کد شرکت ) به هر حال وقتی رکورد شخص مورد نظر در حال ثبته برنامه باید یک شاخص شناسایی داشته باشه تا بتونه وضعیتش چک کنه مگر اینکه برای اولین دفعه قصد ثبت اطلاعات فرد یا افراد مرتبط با یک شرکت رو داشته باشی که تازه شماره ، id یا هر شاخص مورد نظرت به اون تعلق میگیره .

سعید مشکین فر
پنج شنبه 27 اردیبهشت 1386, 14:42 عصر
با سلام خدمت شما مهدی عزیز: مبنای شناسایی همان شماره گیت پاس یا (برگه تردده) که یک شماره شش رقمی است و من بعنوان فیلد یکتا اونو در نظر گرفته ام چون هیچ وقت دو نفر با یک شماره گیت پاس وجود نداره و این توی شرکت و روی برگه هایی هم که صادر میشه صادقه

مهدی قربانی
پنج شنبه 27 اردیبهشت 1386, 14:48 عصر
سعید جان بدنیست این نمونه معمولی رو هم یه نگاه بنداز ی البته احتمالا ً ممکنه نظرت رو تامین نکنه ، با نمونه های دوستان هم فرق چندانی نداره !

سعید مشکین فر
پنج شنبه 27 اردیبهشت 1386, 14:59 عصر
مهدی جان نمونه شما هم با همه بدرد بخور بودنش اما مشکل رو حل نمیکنه چرا چون کاربر مجبوره برای پیدا کردن شخص غیر مجاز جستجو کنه در صورتی که در برنامه من اونقدر برگه های تردد صادره زیاد هستند که کاربر نمیتونه برای اینکه هربار یک برگه تردد رو ثبت کنه اول یه سرچ بزنه تا بفهمه این شخص برای ورود به شرکت غیر مجازه و برگه اون رو ثبت نکنه بلکه در همان فرم اصلی که اطلاعات وارد میشه باید این جستجو و اعلام پیام غیر مجاز بودن اتفاق بیافته

مهدی قربانی
پنج شنبه 27 اردیبهشت 1386, 15:13 عصر
کجا به برنامه می فهمونی که فرد غیر مجازه ، مثلاً اگر شما به محض درخواست ورد یک نفر برگه اش رو ثبت کنی و بعد از مدتی اعلام بشه که این شخص از امروز غیر مجازه کجا به برنامه میگی که فرد مذکور غیر مجازه تا دفعه بعد که دوباره شخص تقاضای تردد کرد حالا برنامه ترتیبی بده که غیر مجاز بودنش اعلام بشه ؟

سعید مشکین فر
پنج شنبه 27 اردیبهشت 1386, 17:32 عصر
مهدی جان قبل از هر چیز اجازه بده یه خیلی مخلصتیم تقدیم کنم اونم بخاطر لطف و توجه شما بعد هم اینکه این فرم رو ببین وقتی یه شخصی ممنوع شد حالا بعد از یک ماه یا یک سال یه برگه برای کاربر برنامه میاد که استناد ممنوعیت ورود شخصه حالا کاربر در بخش ویرایش برنامه رکورد اون شخص رو جستجو میکنه و در سمت چپ پایین فرم تعیین وضعیت تردد شخص رو به غیر مجاز تغییر میده.البته ما در بخش جستجو لیست افراد غیر مجاز را داریم اما در صورت تعدد این لیست کاربر فراموش میکنه که این شخص در فلان تاریخ ممنوع الورود شده و ممکنه اون شخص با یه شرکت دیگری استخدام بشه و بخواد وارد شرکت بشه اینه که لازمه برنامه هنگام ورود اطلاعات کاربر رو باخبر کنه مهدی جان نمیدونم چرا از آپلود فایل ایراد میگیره بعد میفرستم :بوس:

مهدی قربانی
پنج شنبه 27 اردیبهشت 1386, 17:42 عصر
اختیار داری وظیفه است انشاءالله که کاری از دستمون بر بیاد به هر حال در اولین فرصت فایلت رو آپ کن تا بینم سواد ناچیزم قد میده راهی براش پیدا کنم یا نه در ضمن حتماً دوستان خوب و توانمندمون هم که تجربیات بیشتری دارن کمک می کنن

مهدی قربانی
جمعه 28 اردیبهشت 1386, 00:00 صبح
سلام
سعید جان روی نمونه دیگه کار کردم فکر کنم بهت جواب بده توضیح اینکه باید فرم 3 رو برای ورود اطلاعات باز کنی اگر تو فیلد نام ali رو وارد کنی سیستم پیغام میده و بعد از طریق deletequery که با نام query3 ساخته شده اقدام به پاک کردن رکورد جدید میکنه لطفاً به تمام کدهای نوشته شده تو فرمهای 1 و 2 دقت کن و همینطور اجزای query های موجود متوجه میشی .
موفق باشی .

سعید مشکین فر
جمعه 28 اردیبهشت 1386, 00:11 صبح
مهدی جان سلام خدمتتان ببخشید بخدا اینقدر سرعت پایینه که برای لود یه صفحه آدم دیوونه میشه . نوکرتیم

مهدی قربانی
جمعه 28 اردیبهشت 1386, 20:43 عصر
سعید جان بازم سلام نمونه خودتو دستکاری کردم برات آپ می کنم . نمونه قبلی من اشکال داره که تو این برطرفش کردم یادآوری میکنم که فرم gate هیدن باز میشه که در اصل بوسیله فیلتر ، fname رو برمی گردونه همینطور روی afterupdate فیلد fname فرم mainform کدهای مربوطه رو نوشتم که اگر وضعیت تردد شخص ممنوع باشه پیغام ظاهر میشه,و نهایتاً بوسیله delete query فیلد غیرمجاز رو پاک میکنه.
در ضمن pasno رو دستی update میکنی ؟

سعید مشکین فر
شنبه 29 اردیبهشت 1386, 09:34 صبح
مهدی جان واقعاً دستت درد نکنه نه فقط برای اینکار بلکه برای توجه و پیگیری و اهمیت رفع مشکل این حقیر.من نمونه رو چک کردم خیلی خوبه فقط باید نام و نام خانوادگی در همان فیلد Fname وارد بشه ؟ دوم مسئله Is Null فیلد Lname در Query2 که کوئری حذفه چیه ؟ چون اگه نام و نام خانوادگی هر دو در فیلد نام وارد بشه و فیلد Lname خالی بمونه بعد از شناسایی فرد غیر مجاز و حذف اون رکورد یه خطای کوچک داره و کلمه Delete رو در تمام فیلدها نشون میده که باید برنامه بسته و دوباره باز بشه . و یه سوال دیگه اینکه بنظرت چکار باید کرد که برنامه پاسهای با تاریخ یکسان و شماره پاس مختلف رو تشخیص بده یعنی اینکه برای یک نفر در یک تاریخ دو تقاضای برگه تردد صادر نشه چون اگه برگه از دو محل یا اداره مختلف صادر بشه شماره پاسها دیگه یکسان نیست و طبق روال برنامه هر دو رو میپذیره .

مهدی قربانی
شنبه 29 اردیبهشت 1386, 15:11 عصر
سلام
آقا سعید چوبکاری میکنی عزیز مختصر کاریه که از دست حقیر بر میاد بابر کن خودم بیشتر یاد میگیرم و به نوعی کسب تجربه است ماشاالله دوستان فروم هم که همگی توانمند و با تجربه اند و از معلوماتشون همیشه استفاده میکنم .
درمورد سئوال اول :

فقط باید نام و نام خانوادگی در همان فیلد Fname وارد بشه ؟
روی هر فیلدی می تونی قرار بدی ولی توجه داشته باش که هیچ جنسی مثل عدد قابلیت بازیابی رو نداره بطور مثال اسم علیرضا اگر علی رضا وارد بشه مشکل ایجاد می کنه بنابراین باید سعی کنی که از فیلدی استفاده کنی که حتی المقدور کد ، شماره یا id باشه تا بهتر بشه بازیابی و پرس و جوی اطلاعاتی کرد.
در مورد سئوال دوم :

دوم مسئله Is Null فیلد Lname در Query2 که کوئری حذفه چیه ؟ چون اگه نام و نام خانوادگی هر دو در فیلد نام وارد بشه و فیلد Lname خالی بمونه بعد از شناسایی فرد غیر مجاز و حذف اون رکورد یه خطای کوچک داره و کلمه Delete رو در تمام فیلدها نشون میده که باید برنامه بسته و دوباره باز بشه
از اونجائیکه رکورد شما وارد جدول میشه و غیر مجاز هم هست لازمه که در اولین فرصت حذف بشه بنابراین عبارت IsNull باید توی یکی از فیلدهایی قرار بگیره که ترجیحاً بعد از فیلد fname باشه چون قطعاً فیلدهای بعدی هنوز مقدار دهی نشدن و در صورت غیرمجاز بودن ، کاربر قادر نیست که به فیلدهای بعدی بره پس میتونی شرط IsNull به فیلد مثلاً نام پدر ، ش شناسنامه یا هر فیلدی که به نظرت بهتره بدی فقط یادت باشه که روی فیلدی قرار بگیره که کابر ملزم به ثبت اون باشه و اونرو خالی رد نکنه .
سئوال سوم :

و یه سوال دیگه اینکه بنظرت چکار باید کرد که برنامه پاسهای با تاریخ یکسان و شماره پاس مختلف رو تشخیص بده یعنی اینکه برای یک نفر در یک تاریخ دو تقاضای برگه تردد صادر نشه چون اگه برگه از دو محل یا اداره مختلف صادر بشه شماره پاسها دیگه یکسان نیست و طبق روال برنامه هر دو رو میپذیره .
کد زیر رو در ادامه کدهای نوشته شده روی فیلد fname‌ اضافه کن :

Private Sub txtFname_AfterUpdate()
DoCmd.OpenForm "gate", , , , , acHidden
If Form_gate.Gate.Value = "ممنوع" Then
MsgBox "تردد این شخص از تاریخ" & Space(1) & Form_gate.StartDay & Space(1) & _
"غیر مجاز است", vbCritical, "شخص غیر مجاز"
DoCmd.SetWarnings False

DoCmd.OpenQuery "query2"
DoCmd.Requery
PasNo.SetFocus
DoCmd.Close acForm, "gate"

DoCmd.SetWarnings True

DoCmd.GoToRecord , , acNewRec
DoCmd.OpenForm "gate", , , , , acHidden

'این قسمت اضافه کن ::::::::::::::::::::::::::::::

ElseIf StartDay.Value = Form_gate.StartDay Then

MsgBox "!توجه" & vbCrLf & "در این تاریخ قبلاً برای متقاضی مجوز تردد صادر شده است", _
vbCritical + vbMsgBoxRight, "درخواست تکراری"

DoCmd.SetWarnings False


DoCmd.OpenQuery "query2"
DoCmd.Requery
PasNo.SetFocus
DoCmd.Close acForm, "gate"

DoCmd.SetWarnings True

DoCmd.GoToRecord , , acNewRec
DoCmd.OpenForm "gate", , , , , acHidden
End If

بازم تاکید می کنم به جای Fname سعی کن یه فیلد عددی استفاده کنی مثلاً لازمه ورود اطلاعات شخص ، اول صدور یه کد شناسایی توسط یه فرم دیگه باشه بعد تو فرم اصلی قبل از نام این کد وارد بشه و مراحل کنترل هم روی این فیلد (کد) تعریف بشه . موفق باشی

سعید مشکین فر
یک شنبه 30 اردیبهشت 1386, 14:07 عصر
مهدی جان اون قطعه کدی که فرمودی اضافه کنم به فرم برای شناسایی تاریخ تکراری یه نگاهی کن جواب نمیده ما خیلی ارادت داریم

مهدی قربانی
سه شنبه 01 خرداد 1386, 00:44 صبح
سلام
آقا شرمنده یخورده دیر شد فایلت رو دستکاری کردم و تغییراتی روش اعمال کردم که امیدوارم بدردت بخوره همونطور که گفته بودم بهتره که مبنای بررسی یک فیلد عددی باشه به همین خاطر هم این فیلد رو با امکانات مربوطه برات ایجاد کردم لازم به ذکر که برای ورود اطلاعات و ثبت مجوز باید کد متقاضی رو وارد کنی ، برای این حالت سیستم به یک فرم لیست متقاضی ارجاعت میده تا اون شخص رو بر اساس نام خانوادگی پیدا و نامش رو وارد کنی در صورتیکه اسمش نباشه اضافه کردن شخص و اختصاص کدش رو برات فراهم میکنه بعد از اینکه کد شخص در فرم اصلی وارد شد اگر غیر مجاز باشه پیغام میده اگر هم مجوز تکرای باشه بعد از update فیلد" تاریخ شروع" پیغام میده ، در ضمن توضیحات لازم داخل کد نویسی فرمها ذکر شده .

سعید مشکین فر
سه شنبه 01 خرداد 1386, 16:30 عصر
:قلب: :خجالت: مهدی جان چیزی از نمونه آخر متوجه نشدم آیا کاربر باید هر دو فرم رو پر کنه ؟ این خیلی بد میشه چون با ثبت روزانه حدود 500 برگه تردد واقعا کار مشکل میشه ، و دوم اینکه من تست کردم حالا دیکه فرم اصلی نه شخص ممنوع رو اعلام میکنه و نه درخواست با تاریخ تکراری رو.میشه کمی بیشتر راهنمایی کنی ممنونم ، سوالم در مورد منبع برای کد نویسی هم جواب ندادی؟ اسیرتیم::گیج: :متفکر:

سعید مشکین فر
پنج شنبه 03 خرداد 1386, 01:39 صبح
مهدی جان فایل رو سعی کردم طبق دستوراتی که فرمودید از حالت تک تیبل به چند تیبلی تغییر بدم ببین این حالت چطوره ؟ در مورد روابط بین جداول هم نظرت رو بگو ،با در نظر گرفتن شرایط موجود و توضیحاتی که خدمتتون دادم آیا راه بهتری هم هست ؟ چه در برقراری روابط و چه در طراحی جداول؟

مهدی قربانی
چهارشنبه 23 خرداد 1386, 00:09 صبح
سعید عزیز سلام
با عرض معذرت از طولانی شدن زمان پاسخگویی ، نمونه شما رو یه تغییراتی دادم ببین نظرت رو تامین می کنه ؟ اگر مشکلی یا سوالی بود در خدمتم .

سعید مشکین فر
چهارشنبه 23 خرداد 1386, 00:52 صبح
مهدی جان چی میتونم بگم جز ممنون و متشکر ببخشید میدونم که خیلی مزاحم شدم و یقینا مفید واقع خواهد شد شک ندارم .بازم سپاسگذارم