ورود

View Full Version : یک مشکل بزرگ برای حذف رکورد



evilboy
چهارشنبه 29 فروردین 1386, 20:25 عصر
من توی برنامم به مشتری کد می دم و حساب هر کس با زدن کد اون توی تکست باکس تعیین شده مشخص می شه.

حالا سوال اینه که من وقتی یک مشتری رو حذف می کنم مثلا کد 12 حذف شده، وقتی توی صفحه ی حساب مشتری می رم و کد 12 رو می زنم مشخصاتش پاک شده ولی حسابش پاک نشده. چیکار کنم که مشتری که حذف شد کل حسابش هم حذف بشه.
اینم کد حذف من :



Dim a As String
Dim n As VbMsgBoxResult
a = VSFlexGrid1.DataMember
n = MsgBox("آیا می خواهید رکورد جاری حذف شود؟", vbCritical + vbYesNo, "ÍÐÝ¿")
If n = vbYes Then
If VSFlexGrid1.Row <= 0 Then
MsgBox "رکوردی برای حذف یافت نشد", vbInformation + vbOKOnly, "&#205;&#208;&#221;&#191;"
Else
DataEnvironment1.Recordsets(a).Delete
End If
End If
If DataEnvironment1.rsSabt.RecordCount = 0 Then
Text1.Text = 1
Else
DataEnvironment1.rsSabt.MoveLast
Text1.Text = DataEnvironment1.rsSabt!code + 1
End If
Set VSFlexGrid1.DataSource = DataEnvironment1
VSFlexGrid1.DataMember = "sabt"

CodeMasterX
چهارشنبه 29 فروردین 1386, 21:46 عصر
شما میتونی دو تا کار بکنی.
اول اینکه قبل از حذف اطلاعات اصلی هر مشتری اطلاعات حساب اون رو حذف کنی،که باید دقت کنی برای این کار از Transaction ها یا تراکنش استافده کنی که داده هات به هم نریزن.
ولی راه دوم که معقول تر هست و نیازی به کد اضافی هم نداره اینه که توی بانکت یک رابطه Cascade بین دو تا جدول مربوطه بسازی.
اگر بانکت اکسس هست،بانکت رو باز کن و توی نوار ابزار دکمه Relations رو پیدا کن.بعد جداول مربوط رو (اینجا فرض بر دو تا هست) اضافه کن.بعد بین مثلا فیلد های CustomerID که در هر دو جدول وجود داره یک رابطه یک به چند از نوع Cascade بساز.
با این کار خود موتور بانک اکسس هر وقت رکوردی از جدول 1 حذف بشه تمام رکوردهای مربوط به اون رو در جدول 2 حذف یا به روس رسانی می کنه.

evilboy
پنج شنبه 30 فروردین 1386, 08:40 صبح
ممنون دومی ظاهرا خیلی خوبه باید تستش کنم

CodeMasterX
پنج شنبه 30 فروردین 1386, 12:34 عصر
صد در صد که دومی بهتره!
شما فکر کن بخوایی یه مشتری رو حذف کنی و این مشتری در 10 جدول دیگه اطلاعاتی رو به خودش اختصاص داده باشه! اون وقت اگر بخواهی با کد تمام داده هاش رو حذف کنی باید کلی کد بنویسی و باید از تراکنش ها استفاده کنی تا داده ها به هم نریزن.ولی اگه به هم ریخت چی ؟
این رابطه های دیتابیس های جدید اصلا محشره،واسه همین معروف هستن به Relational Databases.

evilboy
پنج شنبه 30 فروردین 1386, 14:22 عصر
دوست عزیز من همون کاری که گفتی انجام دادم ولی بازم حساب مشتری رو حذف نمی کنه و فقط مشخصات مشتری حذف می شه
اینم دیتابیس من
http://princeworld.persiangig.com/other/Kolop.mdb

CodeMasterX
جمعه 31 فروردین 1386, 02:35 صبح
بانکت رو دانلود کردم ولی الان فرصت تست رو ندارم.
همین فردا صبح خبرش رو میدم!