PDA

View Full Version : سوال: چگونه رکوردها را با وجود یک شرط پاک کنیم ؟



narpco
یک شنبه 23 آذر 1399, 12:10 عصر
سلام دوستان

سئوال اول :

در یک فرم اصلی داریم و یک ساب فرم داخلش
فرم اصلی متصل به جدول table_A
ساب فرم متصل به جدول table_B

میخواهیم یک دکمه بزاریم روی ساب فرم

و بگیم در ساب فرم –متصل به table_B- روکورد هایی را پاک کن که :
شماره کارتکس اصلی آنها (ستون سمت راست جدول ساب فرم با رنگ قرمز رنگ –نام فیلد karterx_B)
با شماره کارتکس فرم اصلی (در فرم اصلی سمت راست اولین فیلد-بارنگ پس زمینه ابی –با نام karterx_A)
یکی باشد .(یعنی فقط ردیف های جدول فرزند رو پاک کن)

سئوال دوم :

یک دکمه روی فرم اصلی داریم و میخواهیم بگیم :
اول کار مربوط به سئوال یک رو انجام بده (ردیف های جدول فرزند رو پاک کن)
و بعد رکورد جدول اصلی (پدر)را هم پاک کن

ترتیب رو به این خاطر اینطوری نوشتم که جدول a و b بهم مرتبط هستند و روابط پدر فرزندی بینشون رعایت میشه یعنی اول باید رکوردهای جدول b رو پاک کنیم و بعد رکورد مربوطه جدول a
و قبل از پاک کردن از ما تایید بگیره .....
ممنونم

https://s16.picofile.com/file/8417333068/azxcvvb.png

padide55
یک شنبه 23 آذر 1399, 16:23 عصر
سلام
جواب 1 با کوئری قابل حله .ادرس creteriaرو به فرم اصلی و فیلد مربوطه بدین .
جواب دو
اجرای کوئری. قبل از کد dellrecord فرم اصلی
یعنی یک کلید در فرم اصلی برای حذف رکورد بگذارید .سپس قبل از اون کد یک کد برای اجرای کوئری dellکوئری رو اضافه کنید .

narpco
یک شنبه 23 آذر 1399, 17:02 عصر
سلام با کد وی بی چطوری میشه ؟

narpco
یک شنبه 23 آذر 1399, 19:20 عصر
کد سئوال اول : رو من اینطوری نوشتم شما اگر میبینید اطلاح نیاز داره ..لطفا بفرمایید









Private Sub Command1199_Click()
Dim subKARTEX2 As Variant
subKARTEX2 = DLookup("RCb_katexNO", "tbl_rollcall_B", "[RCb_katexNO]=" & Me.RCa_katexNO)
If Not IsNull(subKARTEX2) Then
If MsgBox("are you sur?" & vbCrLf & "---------", vbYesNo + vbMsgBoxRight + vbExclamation, "warning") = vbYes Then
CurrentDb.Execute "DELETE FROM tbl_rollcall_B WHERE RCb_katexNO = " & Me.RCa_katexNO
Me.frm_rollcall_B_Sub.Requery
RCA_check = 0
MsgBox "done"
Else
MsgBox "cancel"
Cancel = True
End If
Else
MsgBox "no record to del"
Cancel = True
End If

eb_1345
یک شنبه 23 آذر 1399, 20:45 عصر
کد سئوال اول : رو من اینطوری نوشتم شما اگر میبینید اطلاح نیاز داره ..لطفا بفرمایید









Private Sub Command1199_Click()
Dim subKARTEX2 As Variant
subKARTEX2 = DLookup("RCb_katexNO", "tbl_rollcall_B", "[RCb_katexNO]=" & Me.RCa_katexNO)
If Not IsNull(subKARTEX2) Then
If MsgBox("are you sur?" & vbCrLf & "---------", vbYesNo + vbMsgBoxRight + vbExclamation, "warning") = vbYes Then
CurrentDb.Execute "DELETE FROM tbl_rollcall_B WHERE RCb_katexNO = " & Me.RCa_katexNO
Me.frm_rollcall_B_Sub.Requery
RCA_check = 0
MsgBox "done"
Else
MsgBox "cancel"
Cancel = True
End If
Else
MsgBox "no record to del"
Cancel = True
End If















سلام
فقط دو خط کد زیر:


If MsgBox("are you sur?" & vbCrLf & "---------", vbYesNo + vbMsgBoxRight + vbExclamation, "?warning") = vbYes Then
CurrentDb.Execute "DELETE FROM tbl_rollcall_B WHERE RCb_katexNO = " & Me.Parent.RCa_katexNO
Me.Requery
End If

ضمناً در رویداد کلیک کمند باتن Cancel = True نمی دهد
عملکرد این مورد برای زمانیست که داخل پرانتز سابروتین Cancel = True باشد مثل رویداد BeforeUpdate یک تکست باکس که باعث انصراف از وقوع رویداد مربوطه میشود


Private Sub text1_BeforeUpdate(Cancel As Integer)
Cancel = True
End Sub

eb_1345
یک شنبه 23 آذر 1399, 21:08 عصر
سئوال دوم :
یک دکمه روی فرم اصلی داریم و میخواهیم بگیم :
اول کار مربوط به سئوال یک رو انجام بده (ردیف های جدول فرزند رو پاک کن)
و بعد رکورد جدول اصلی (پدر)را هم پاک کن
ترتیب رو به این خاطر اینطوری نوشتم که جدول a و b بهم مرتبط هستند و روابط پدر فرزندی بینشون رعایت میشه یعنی اول باید رکوردهای جدول b رو پاک کنیم و بعد رکورد مربوطه جدول a
و قبل از پاک کردن از ما تایید بگیره .....



برای انجام اتوماتیک این مورد هم همانطور که قبلاً در تاپیک دیگر اشاره کردم چنانچه در پنجره ویرایش روابط جدول گزینه سوم (تصویر ضمیمه) انتخاب شود هر شماره رکوردی در جدول اصلی حذف شود همان شماره رکورد اگر در جدول فرزند هم وجود داشته باشد بطور اتوماتیک حذف میشود .

narpco
یک شنبه 23 آذر 1399, 21:38 عصر
ممنون از توضیحات


من cancel = true
رو زمانی استفاده می کنم که میخوام روند ادامه اجرای کد ها متوقف بشه البته طی شرط هایی که وجود داره

حالا کدوم یکی از این دستورات درسته ؟

cancel=true
exit sub

فقط
cancel=true

فقط
exit sub