PDA

View Full Version : حذف تعدادی از رکوردهای جدول با استفاده از کد



soroush_k12
پنج شنبه 14 شهریور 1392, 14:43 عصر
با سلام خدمت اساتید گرامی
در نمونه پیوست من میخواهم تعدادی از رکوردهای جدول table2 را حذف کنم .رکوردهایی باید حذف شوند که مقدار فیلد اشتراک انها در جدول table1 وجود نداشته باشد (نتیجه پس از حذف باید مانند table3 باشد)این کار را چطور میتوانم توسط کد و یا delete query و یا ... انجام دهم ؟
البته مشکل دیگری که وجود دارد این است که نوع فیلد اشتراک در table2 نوع text و در table1 از نوع number است. و برای استفاده از join هم مشکل وجود دارد.
از توجه شما ممنونم

saeed1234n
پنج شنبه 14 شهریور 1392, 15:41 عصر
با سلام

دوست عزیز در محیط sql کوئری بنویسید .


SELECT table2.city, table2.[eshterak-jadid]
FROM table1 INNER JOIN table2 ON table1.[eshterak-jadid] = table2.[eshterak-jadid];

soroush_k12
پنج شنبه 14 شهریور 1392, 22:47 عصر
سلام جناب saeed1234n
اولا از توجه شما بسیار ممنونم
ولی منظور من این نبود . هدف من درست کردن کوری که نتیجه اش این رکودها باشه نیست .من میخواهم رکوردهای مازاد از table2 حذف و این جدول کوچک بشه نه این که فیلتر بشه (جهت کوچک شدن حجم دیتا بیس و بالا رفتن سرعت آن چون که table2 در دیتا بیس اصلی نزدیک 500000 رکورد داره و باعث کند شدن و بالا رفتن حجم دیتا بیس شده ) مضافا بر این که در دیتا بیس اصلی همان طور که گفتم مشکل دیگری وجود دارد (البته مشکل دیگری که وجود دارد این است که نوع فیلد اشتراک در table2 نوع text و در table1 از نوع number است. و برای استفاده از join هم مشکل وجود دارد.)
در نتیجه به راحتی نمیتوان دو جدول را join کرد.
من دنبال یه روش مکانیزه ترجیحا از طریق کد برای حذف رکوردهای مازاد هستم
باز هم ممنونم

saeed1234n
جمعه 15 شهریور 1392, 01:34 صبح
با سلام

دوست عزیز در ابتدا فیلد اشتراک به نام eshterak تغییر یافت در هر دو جدول سپس date type این فیلد در جدول 2 به number تغییر یافت .

و در آخر از کد زیر استفاده کنید :


DoCmd.RunSQL "DELETE * " & _
"FROM table2 " & _
"WHERE not exists(select * from table1 where table1.eshterak=table2.eshterak);"