PDA

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



pmoshir
دوشنبه 05 مرداد 1388, 19:24 عصر
با سلام و خسته نباشید

دوستان عزیز کدی رو میخوام که از حذف رکوردهای جدولی که اطلاعاتش در جداول دیگر استفاده شده جلوگیری کند.بعنوان مثال در فرم فاکتورهای فروش اگر کد کالایی که بصورت کمبو می باشد، وارد شده باشد دیگر امکان برای حذف این کالا در فرم کالاها وجود نداشته باشد مگر آنکه در جدول فاکتور فروش حذف شود.

dadsara
سه شنبه 06 مرداد 1388, 07:36 صبح
سلام
اگر جدول کد کالاها را در قسمت ریلیشن با جدول اصلی ارتباط برقرار کرده باشید(درصورتیکه تیک مربوط حذف از جدول پدر را نزده باشید) خود بخود هنگام حذف یک ردیف از جدول کومبو پیام (از این کد استفاده شده است) ظاهر می گردد
در غیراینصورت فکر می کنم باید کمی زحمت بکشید و چند خطی کد بنویسید

pmoshir
سه شنبه 06 مرداد 1388, 09:06 صبح
از کمکتون ممنون

ولی چون جدول با جداول زیادی ارتباط داره ترجیحا میخوام کد در فرم بنویسم.اگه تو نوشتن کد کمکم کنید ممنون میشم.

dadsara
سه شنبه 06 مرداد 1388, 09:53 صبح
کافی است شما شرط خود را به این شکل بنویسید
بطور مثال نام جدول منبع کومبو ، Coding و جدولی که اطلاعات در آن ذخیره می شود Main و نام فرم جاری F_Coding و فیلد مربوطه Text1می باشد
فرض کنید در فرم مربوط به یکی از فیلدهای از نوع کدینگ و یک رکورد خاص قرار گرفته اید
در رخداد مورد نظر کلید حذف ابتدا شرط زیر را قید می کنید

SELECT Main.a2
FROM Main
WHERE (((Main.a2)=[forms]![F_Coding]![text1]));

اگر شرط فوق اعمال شد و خروجی داشت پس به ازاء رکورد جاری در جدول کدینگ حداقل یک مقدار در جدول اصلی دارد پس باید از حذف آن جلوگیری کنید در غیر اینصورت می توانید آنرا حذف کنید

pmoshir
سه شنبه 06 مرداد 1388, 17:31 عصر
با تشکر از شما

میشه این کد رو روی فایل ضمیمه اجرا کنید.

dadsara
چهارشنبه 07 مرداد 1388, 08:03 صبح
نمونه اصلاح شده جنابعالی

pmoshir
چهارشنبه 07 مرداد 1388, 15:23 عصر
با تشکر از همکاری شما

من یک مشکل دارم در برنامه ای که کار میکنم ستون kod بصورت text ست شده اگر هم به number تبدیل کنم به مشکلات زیادی بر میخورم.آیا میشه کد رو برای text تغییر داد؟؟؟

بار هم تشکر میکنم.

dadsara
شنبه 10 مرداد 1388, 12:24 عصر
کافی است بجای خط
Set rst = CurrentDb.OpenRecordset("SELECT kod FROM Main WHERE (kod=" & kod & ") ")
بنویسید

Set rst = CurrentDb.OpenRecordset("SELECT kod FROM Main WHERE (kod='" & kod & "') ")
و همچنین
در قسمت حذف از کد زیر استفاده کنید

DoCmd.RunSQL "DELETE * FROM coding WHERE (kod= '" & kod & "')"