PDA

View Full Version : انتقال داده ها از یک جدول به جدول دیگر



Ali_Fallah
دوشنبه 25 دی 1385, 18:56 عصر
سوال مربوط به
انتقال داده ها از یک جدول به جدول دیگر
در فایل ضمیمه آمده است.
ممنون

MM_Mofidi
سه شنبه 26 دی 1385, 11:43 صبح
با یک sql برات نوشتم query اش را هم گذاشتم

Ali_Fallah
سه شنبه 26 دی 1385, 13:27 عصر
با تشکر از دوست خوبمان
خیلی خوب بود
در مورد سوال دومم که
در صورت تغییر رکودهای قبلی متناظر همان رکورد در جدول P کند
اگر راه حلی هست میتوانید بفرمائید؟

صبا9841
سه شنبه 26 دی 1385, 14:39 عصر
اگر منظور شما از تغییر همزمان جدول p با جدول personel (اینطوریکه من برداشت میکنم) حذف شدن مقادیر از جدول پرسنل باشد، زیر خط کوئری اپند کوئری دلیت را که گذاشتم جواب داد یعنی مقادیر منتقل شده به جدول p از جدول پرسنل حذف شدند. البته در این گونه موارد که شما استادید ولی جهت استحضار این دستور را نوشتم :
DoCmd.RunSQL "DELETE Personel.[Personel Code], Personel.Name, Personel.Family FROM Personel; ", -1

اگر منظور شما موضوع دیگری دارید، بفرمایید

Ali_Fallah
سه شنبه 26 دی 1385, 14:52 عصر
منظور از تغییر همزمان این بود که اگر کدپرسنلی 100013 که نامش مثلاً مهدی است به یک نام دیگر تغییر کرد
در جدول P نیز این تغییر اعمال شود
نه اینکه یک رکورد در جدول P جدید ایجاد شود یا اینکه اصلاً اتفاقی رخ ندهد

MM_Mofidi
چهارشنبه 27 دی 1385, 09:06 صبح
راه حل
1- بروز رسانی کامل p براساس جدول مبداء هر چند وقت یک بار
2- ایجاد log تغییرات و اعمال آن در صورت درخوایت همسان سازی
3- استفاده از یک ماژول هوشمند برای مقایسه و بروزرسانی(اصلا توصیه نمیکنم،کند است ،بار زیاد دارد و..)

صبا9841
یک شنبه 01 بهمن 1385, 10:49 صبح
از این دستور میتوانید استفاده کنید:
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

در فرم p مشخصات تغییر و اپدیت...

Ali_Fallah
یک شنبه 01 بهمن 1385, 12:16 عصر
خدمت دوست عزیزم صبا سلام
عرض کنم که منظورم دقیقاً این هست که اگر محتویات فیلدی در جدول اصلی که بنام Personel هست تغییر کرد این تغییرات در جدول p نیز تغییر کنه . فقط برای همان رکورد و اگر چنانچه رکورد جدیدی به جدول اصلی اضافه شد به جدول p خود بخود اضافه بشه.
البته نه به این شکل که اول با دستور کوئری بیاییم محتویات جدول رو حذف کنیم بعدش هم رکودها رو اضافه کنیم
در این صورت اگر جداول ما دارای رکوردهای زیادی باشه مدت زمان زیادی طول میکشه که این کار انجام بشه
و اگر هم تعداد جداول هم زیاد باشه به همان اندازه نیز مدت زمان بیشتر میشه.

صبا9841
دوشنبه 02 بهمن 1385, 08:36 صبح
بسیار خوب اگر درست متوجه شده باشم منظور شما شبیه رابطه dynaset کوئری با جدولش است. یعنی میخواهید هر تغییری که در یک جدول اتفاق افتاد در جدول دیگر همان تغییرات اعمال شود و این مساله را با کدنویسی میخواهید انجام بدهید.
پیشنهادم این است که روی موضوع ایجاد دایناست بین جدول تاکید شود تا از راهنمایی دوستان بهره مند شویم.

MM_Mofidi
چهارشنبه 04 بهمن 1385, 15:11 عصر
نه به این شکل که اول با دستور کوئری بیاییم محتویات جدول رو حذف کنیم بعدش هم رکودها رو اضافه کنیم
در این صورت اگر جداول ما دارای رکوردهای زیادی باشه مدت زمان زیادی طول میکشه که این کار انجام بشه


1- بر خلاف نظر شما drop کردن یک جدول و ساخت آن و یا پر کردن آن از روی داده های کاملا مشابه جدول دیگر زمان چندانی نمیبرد و بر عکی insert کردن تک به تک رکوردهای مورد اختلاف به مراتب زمانبر تر است
2- در صورت طراحی صحیح بانک داده عملا شما نیازی به این کار آن هم برای چندین جدول ندارید مگر برای نگهداری پشتیبان که آن هم تکلیفش جداست

Ali_Fallah
چهارشنبه 04 بهمن 1385, 18:57 عصر
حذف جدول و ساخت جدول مشابه به نظر من بهتر است و بقول شما راحتتر وسریعتر هست ولی
بیشتر هدف من ایجاد یک جدول بک آپ از تیبل مورد نظر در داخل همان دیتا بیس بود
و میخواستم که عمل حذف تیبل بک آپ و ایجاد مجدد آن و یا عمل insert نباشه و به یک صورت دیگر که در بالاعرض کردم باشه ...

MM_Mofidi
شنبه 07 بهمن 1385, 10:40 صبح
اگر میخواهید عملی شبیه incremental backup را پیاده سازی کنید راه حلش ایجاد یک فیلد زمان است
بعد بر اساس تاریخ یک select عمومی بعد همه باهم یک insert into بشوند هرچند فکر نمیکنم خیلی نیاز باشد.
ترجیحا برای بانکهای بزرگ کاربرددارد و در این حات sql ابزارهای مناسبی برای تهیه پشتیبان در انواع گوناگون دارد.

Ali_Fallah
جمعه 15 آذر 1387, 18:03 عصر
خب این مسئله هم که حل نشد ...

مهدی قربانی
یک شنبه 17 آذر 1387, 15:41 عصر
سلام
شما می خواین که در هر بار انجام عملیات فقط رکوردهایی که قبلاً منتقل نشدن ( تکراری نیستن ) به جدول مقصد منتقل بشه ؟

Ali_Fallah
سه شنبه 19 آذر 1387, 17:41 عصر
سلام
شما می خواین که در هر بار انجام عملیات فقط رکوردهایی که قبلاً منتقل نشدن ( تکراری نیستن ) به جدول مقصد منتقل بشه ؟
دقیقاً
و اینکه اگر رکوردی در جدول اصلی ویرایش شد این ویرایش و تغییرات نیز در جدول دوم دقیقاً بر روی همان رکورد (رکورد متناظر) اعمال شود (نه اینکه بعنوان رکورد جدید ثبت شود)
با تشکر از شما آقای قربانی

fanavar
سه شنبه 19 آذر 1387, 18:47 عصر
سلام :
خب این مشکل به این صورت حل می شه که ابتدادرجدول دومی یاbackup جستجوکنی اگه مشابه اون درجدول اصلی وجوددداشت اون روedit کنه درغیراینصورت add کنه من که دربرنامه هام ازاین روش استفاده می کنم وجواب گرفتم

مهدی قربانی
سه شنبه 19 آذر 1387, 19:22 عصر
سلام
فكر كنم سئوال اين تاپيك يه جورايي با اين تاپيك مرتبط يا مشابه باشه ؟
http://barnamenevis.org/forum/showthread.php?t=115307

Ali_Fallah
سه شنبه 19 آذر 1387, 19:56 عصر
سلام
فكر كنم سئوال اين تاپيك يه جورايي با اين تاپيك مرتبط يا مشابه باشه ؟
http://barnamenevis.org/forum/showthread.php?t=115307

تعجب کردم این سوال (لینک بالا) را هم خودم مطرح کرده بودم ...!