PDA

View Full Version : اتصال یک جدول چندین فیلدی با یک جدول چند فیلدی



Profesorjd
پنج شنبه 10 آبان 1386, 17:52 عصر
با سلام
یک بانک اطلاعاتی دارم که مبنای آن اطلاعات پرسنلی است با حدود 6 تا 8 فیلد که فیلد کلید آن شماره پرسنلی است . این جدول دستی نوشته میشود ولی شرکت الان خواسته است که بانک با اطلاعات جدول حقوقی اصلی که از چندین فیلد تشکیل شده اتصال داشته باشد بعبارتی وقتی در قسمتهای بانک گزارش گرفته میشود یا اطلاعات وارد میشود مبنای پرسنلی آن این جدول باشد نه جدول موجود .
1- جدول حقوقی مربوط به کارکنان ماه جاری است یعنی هرکس این ماه در شرکت حقوق گرفته است مشخصاتش در جدول هست ولی جدول پرسنلی بانک مربوط به مشخصات کسانی است که به نحوی اطلاعاتی ازشان ثبت شده باشد و حتی از شرکت اخراج شده باشند .
2- جداول دیگر بانک وابسته به این جدول پرسنلی هستند و همه کلیدشان با شماره پرسنلی است .
سئوال اینجاست آیا راهی وجود دارد که بشود اطلاعات جدول اول بروز شود بطوریکه اطلاعات قبلی پاک نشوند و هر فیلدی که تغییر کرده بروز شود ( مثلا نوع وظیفه در شرکت) و رکوردهای جدید اضافه شود و رکوردهایی که در جدول حقوقی نیستند در جدول پرسنلی تغییر یابند .
( با عرض شرمندگی از طولانی شدن سئوالات چون به هم وابسته هستند و نمیشد جداگانه مطرح کرد )

مهدی قربانی
جمعه 11 آبان 1386, 00:48 صبح
سلام
دوست من همونطور که می دونید وقتی بخوایم دو تا جدول رو به هم مرتبط کنیم چند شرط لازمه اول اینکه فیلدهای مشترک باید از نظر data type هم نوع بشند و دوم "سایزشون" هم اندازه باشه و سوم "هم نام" باشند و چهارم زمانیکه عمل اتصال صورت می گیره هر دو جدول خالی باشند و ..... بنابراین برای شما بهتره جداول مورد بحث رو دوباره سازی و فیلدهای لازم رو ایجاد و بعد Relation ها رو بین جدوال برقرار کنید و نهایتاً با استفاده از کوئریهای Append برای انتقال اطلاعات از جداول سابق به ترتیب اولویت به جداول جدید و Update برای اصلاح یا بروزآوری اطلاعات مورد نظراستفاده کنید اونچه که مهمه برای ثبت اطلاعات حقوق پرسنل در جدول مربوطه یقیناً این جدول باید به جدول اطلاعات پرسنل مرتبط و اطلاعات پرسنلی رو از اونجا بیاره اگر هم پرسنلی در جدول باشند که مستعفی ، قطع ارتباط ، اخراجی و یا از این دست باشند با چند تا شرط ساده میشه از ثبت اطلاعات اونها در جدول حقوق جلوگیری کرد البته لازم به ذکره که اون جداولی که فیلد کلیدیشون شماره پرسنلیه وقتی به جدول اصلی اطلاعات پرسنل وصل بشن دیگه لازم نیست فیلد کلیدیشون شماره پرسنلی باشه . نمیدونم درست متوجه منظور شما شدم یا نه و اگر هم زیادی توضیح دادم صرفاً بدلیل در نظر گرفتن تمام جوانب امر بود قطعاً شما در بیشتر این موارد استاد هستید .

Profesorjd
جمعه 11 آبان 1386, 15:11 عصر
سلام و تشکر
دوست گرامی همه مطالبی که گفته اید درست هستند و بنده هم رعایت میکنم اما :
1- اطلاعات اصلی جدول پرسنلی هستند که براساس این اطلاعات جداول دیگر ( گزارشها و .. ) آرایش می یابند. توضیح اینکه اطلاعات پرسنلی یک جدول - حقوق یک جدول خدمات اداری یک جدول - خدمات رفاهی یک جدول و .. که همه اینها با شماره پرسنلی مشترک و بعبارتی کلید اصلی مرتبط هستند . بنابراین هر اطلاعاتی در جدول پرسنلی تغییر کند دیگر جداول را دستخوش تغییر قرار میدهد .
2- هر گونه ثبت اطلاعاتی بصورت کل است یعنی کارهای انجام شده در طول مدت شروع سیستم است و ارتباطی به اینکه فرد الان در شرکت هست یا نه ندارد بنابراین اطلاعات نباید وابسته به جدول حقوقی ( خارج از این سیستم ) شود .
3- ورود اطلاعات جدول پرسنلی دستی انجام شده است مشکل از اینجا شروع شده که گزارش اقدامات مربوط به هر واحد اخذ میشود . اطلاعات پرسنلی شامل نام و نام خانوادگی - نام پدر - شماره پرونده - تاریخ استخدام - محل کار و شماره پرسنلی ( کلید) است . آنچه که اینجا تغییر پذیر است محل کار ( واحد یا بخش ) است که در صورت تغییر محل ارائه گزارش هم باید تغییر کند . برای این منظور از جدول حقوقی که خارج از این سیستم است باید استفاده شود که اولا محل کار مشخص است و ثانیا اینکه شاغل است یا خیر .
4- اطلاعات مربوط به حدود 4000 نفر است که شامل 38 بخش و واحد است ولی شاغلین فقط 1500 نفرند بنابراین باید با استفاده از این جدول حقوقی و بصورت برنامه ای همه ماهه اطلاعات شاغل بودن و محل کار جدید مشخص شود که گزارش اشتباه نشود .
( بازهم شرمنده از طولانی شدن ضمناً دارم سعی میکنم برنامه را کوچک و مختصر کنم تا بشود آپلود کنم )

مهدی قربانی
جمعه 11 آبان 1386, 15:33 عصر
درست متوجه شدم جدول حقوق شما در بانک دیگه ای قرار داره یعنی جدول پرسنل در یک فایل و جدول حقوق در فایل دیگه ؟

Profesorjd
جمعه 11 آبان 1386, 22:14 عصر
بله . مشکل هم همینه انطباق دو جدول متفاوت از دو فایل جداگانه

مهدی قربانی
شنبه 12 آبان 1386, 18:18 عصر
سلام
دوست عزیز با توجه به فرمایشات شما و اینکه به لحاظ روبرو بودن با دو بانک و دو دسته اطلاعات راهی که به نظر حقیر می رسه اینه که شما اول یک جدول که قابلیت دریافت اطلاعات پرسنلی لازم رو از جداول پرسنل و حقوق داشته باشه ایجاد کنید ( بدون کلید ) بعد با استفاده از یک کوئری find duplicate رکوردهای بدست اومده ای که تکراری هستند رو حذف تا اطلاعات افراد یکتا و قابل انتقال به جدول دارای کلید باشه بعد هم از جداول موجود که با جدول پرسنل مرتبطند کپی تهیه کنید تا بتونید اطلاعات موجود در اونها رو پاک و ارتباطات جدید رو بین اونها برقرار کنید و نهایتاً به ترتیب اولویت اطلاعات رو از جداول کپی شده به جداول جدید منتقل کنید .

Profesorjd
شنبه 12 آبان 1386, 19:58 عصر
سلام
این راه حل اگر بخواهد همه ماهه اجرا شود مشکل است ( مثل اینکه نرم افزار با نویسنده ارسال شود! البته جهت مزاح)
بعد مشکل این است که فقط بعضی از فیلدها تغییر میکند . ببینید من راهی فکر کردم که کافی است کد محل کار تغییر کند آنوقت مشکل گزارشات رفع میشود . مثلا اگر کد محل کار 01 بود یعنی این فرد در محل حسابداری کار میکند و اگر 40 بود فرد اخراج شده و اگر 39 بود بازنشسته و ... . اما مشکل اینجاست که چگونه با استفاده از فایل حقوقی که مربوط به شاغلین هست کد محل کار اگر تغییر کرده بود آپدیت شود ؟ کدهایی که مثال زدم در فایل حقوقی هست و براحتی میشود متناظر سازی کرد میماند تکلیف آنهایی که اسمشان در فایل نبود بازنشسته هستند یا اخراجی و یا که با قابلیت خود اکسس قابل شناسایی هست و ما زیاد با آنها کاری نداریم . مهم این است که کارمند حسابداری ( اگر در حسابداری کار میکند ) این ماه چه کارهایی برایش انجام شده که با ارسال گزارش به مسئول واحد در جریان قرار بگیرد .

daskar
یک شنبه 13 آبان 1386, 08:59 صبح
سلام
دوست عزیز
من چند نکته کلی رو بیان میکنم توجه داشته باش که ..
1- برنامه پرسنلی در اصل یک برنامه کارگزینی بوده و بایستی قابلیت ها ی نظیر مرخصی ، ماموریت ، صدور حکم کارگزینی ، سابقه افراد و نظایر آن را برعهده داشته باشد .
2-برنامه حقوق همانطور که از نام ان پیداست بایستی لیست حقوق ، فیش حقوقی و دیسکتهای ارسال به بیمه و بانک و ... را داشته باشد .
3- در برنامه های نظیر MIS برنامه ها در قالبهای جدا ولی با مدیریت مجتمع نوشته میشوند به نحوی که با هم در ارتباط باشند. لینک میشوند.
4- در MIS معمولاً برنامه به این صورت عمل میکند که پس از صدور حکم کارگزینی برنامه حقوق و دست مزد با نک احکام رو باز کرده و شروع به محاسبه حقوق مینماید و... بدیهی است در صورتی که حکم کارگزینی صادر نشده باشد برنامه حقوق دست مزد از احکام قبلی جهت محاسبه حقوق و دست مزد استفاده مینماید و در صورت اینکه احکام قبلی نداشته باشد برنامه حقوق دست مزد چیزی محاسبه نمی نماید .
5- شما بایستی در برنامه کارگزینی فیلدی شامل وضعیت استخدامی داشته باشید که شامل بازنشتگی ، از کارافتادگی ، اخراج ، اخراج موقت و .... و همچنین فیلدی شامل اشتغال به کار که داده آن دارد یا ندارد باشد
6- برنامه حقوق بایستی برای کسانی محاسبه نماید که فیلد اشتغال به کار انها، دارد باشد و ....

daskar
یک شنبه 13 آبان 1386, 12:16 عصر
ادامه مطلب قبلی
دوست گرامی جهت استفاده از بانک دیگر در برنامه خود بایستی در برنامه اصلی به اینصورت ..
1- فایل personal بانک اصلی 2- فایل dastmozd بانک محاسب حقوق
شما بایستی در فایل dastmozd لینک ای از فایل و بانک مربوطه را که دارید بسازید یعنی in port بصورت لینک ...
امیدوارم تونسته باشم درست توضیح داده باشم