سوال مربوط به
انتقال داده ها از یک جدول به جدول دیگر
در فایل ضمیمه آمده است.
ممنون
سوال مربوط به
انتقال داده ها از یک جدول به جدول دیگر
در فایل ضمیمه آمده است.
ممنون
با یک sql برات نوشتم query اش را هم گذاشتم
با تشکر از دوست خوبمان
خیلی خوب بود
در مورد سوال دومم که
در صورت تغییر رکودهای قبلی متناظر همان رکورد در جدول P کند
اگر راه حلی هست میتوانید بفرمائید؟
اگر منظور شما از تغییر همزمان جدول p با جدول personel (اینطوریکه من برداشت میکنم) حذف شدن مقادیر از جدول پرسنل باشد، زیر خط کوئری اپند کوئری دلیت را که گذاشتم جواب داد یعنی مقادیر منتقل شده به جدول p از جدول پرسنل حذف شدند. البته در این گونه موارد که شما استادید ولی جهت استحضار این دستور را نوشتم :
DoCmd.RunSQL "DELETE Personel.[Personel Code], Personel.Name, Personel.Family FROM Personel; ", -1
اگر منظور شما موضوع دیگری دارید، بفرمایید
منظور از تغییر همزمان این بود که اگر کدپرسنلی 100013 که نامش مثلاً مهدی است به یک نام دیگر تغییر کرد
در جدول P نیز این تغییر اعمال شود
نه اینکه یک رکورد در جدول P جدید ایجاد شود یا اینکه اصلاً اتفاقی رخ ندهد
راه حل
1- بروز رسانی کامل p براساس جدول مبداء هر چند وقت یک بار
2- ایجاد log تغییرات و اعمال آن در صورت درخوایت همسان سازی
3- استفاده از یک ماژول هوشمند برای مقایسه و بروزرسانی(اصلا توصیه نمیکنم،کند است ،بار زیاد دارد و..)
از این دستور میتوانید استفاده کنید:
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
در فرم p مشخصات تغییر و اپدیت...
خدمت دوست عزیزم صبا سلام
عرض کنم که منظورم دقیقاً این هست که اگر محتویات فیلدی در جدول اصلی که بنام Personel هست تغییر کرد این تغییرات در جدول p نیز تغییر کنه . فقط برای همان رکورد و اگر چنانچه رکورد جدیدی به جدول اصلی اضافه شد به جدول p خود بخود اضافه بشه.
البته نه به این شکل که اول با دستور کوئری بیاییم محتویات جدول رو حذف کنیم بعدش هم رکودها رو اضافه کنیم
در این صورت اگر جداول ما دارای رکوردهای زیادی باشه مدت زمان زیادی طول میکشه که این کار انجام بشه
و اگر هم تعداد جداول هم زیاد باشه به همان اندازه نیز مدت زمان بیشتر میشه.
بسیار خوب اگر درست متوجه شده باشم منظور شما شبیه رابطه dynaset کوئری با جدولش است. یعنی میخواهید هر تغییری که در یک جدول اتفاق افتاد در جدول دیگر همان تغییرات اعمال شود و این مساله را با کدنویسی میخواهید انجام بدهید.
پیشنهادم این است که روی موضوع ایجاد دایناست بین جدول تاکید شود تا از راهنمایی دوستان بهره مند شویم.
1- بر خلاف نظر شما drop کردن یک جدول و ساخت آن و یا پر کردن آن از روی داده های کاملا مشابه جدول دیگر زمان چندانی نمیبرد و بر عکی insert کردن تک به تک رکوردهای مورد اختلاف به مراتب زمانبر تر است
2- در صورت طراحی صحیح بانک داده عملا شما نیازی به این کار آن هم برای چندین جدول ندارید مگر برای نگهداری پشتیبان که آن هم تکلیفش جداست
حذف جدول و ساخت جدول مشابه به نظر من بهتر است و بقول شما راحتتر وسریعتر هست ولی
بیشتر هدف من ایجاد یک جدول بک آپ از تیبل مورد نظر در داخل همان دیتا بیس بود
و میخواستم که عمل حذف تیبل بک آپ و ایجاد مجدد آن و یا عمل insert نباشه و به یک صورت دیگر که در بالاعرض کردم باشه ...
اگر میخواهید عملی شبیه incremental backup را پیاده سازی کنید راه حلش ایجاد یک فیلد زمان است
بعد بر اساس تاریخ یک select عمومی بعد همه باهم یک insert into بشوند هرچند فکر نمیکنم خیلی نیاز باشد.
ترجیحا برای بانکهای بزرگ کاربرددارد و در این حات sql ابزارهای مناسبی برای تهیه پشتیبان در انواع گوناگون دارد.
خب این مسئله هم که حل نشد ...
سلام
شما می خواین که در هر بار انجام عملیات فقط رکوردهایی که قبلاً منتقل نشدن ( تکراری نیستن ) به جدول مقصد منتقل بشه ؟
سلام :
خب این مشکل به این صورت حل می شه که ابتدادرجدول دومی یاbackup جستجوکنی اگه مشابه اون درجدول اصلی وجوددداشت اون روedit کنه درغیراینصورت add کنه من که دربرنامه هام ازاین روش استفاده می کنم وجواب گرفتم
سلام
فكر كنم سئوال اين تاپيك يه جورايي با اين تاپيك مرتبط يا مشابه باشه ؟
https://barnamenevis.org/showthread.php?t=115307