PDA

View Full Version : بازگشت به اخرین رکورد بعد از حذف



moustafa
پنج شنبه 19 بهمن 1385, 21:32 عصر
1-در یه فرم وقتی اخرین رکورد را حذف می کنی رکورد جدیدی ایجاد میشه حالا اگه بخوایم رکورد جدیدی ابجاد نشه وبه اخرین رکورد (رکورد یکی ماقبل رکورد حذف شده )بره از چه دستوری استفاده می کنید
2- با کلیدهای page down و .... وقتی بین رکورد ها حرکت می کنی اگه به رکورد اخر رسید بازم رکوردجدیدی ایجاد نشه و در اخرین رکورد ثابت بمونه

Payam Moradi
پنج شنبه 19 بهمن 1385, 23:17 عصر
1-در یه فرم وقتی اخرین رکورد را حذف می کنی رکورد جدیدی ایجاد میشه حالا اگه بخوایم رکورد جدیدی ابجاد نشه وبه اخرین رکورد (رکورد یکی ماقبل رکورد حذف شده )بره از چه دستوری استفاده می کنید
2- با کلیدهای page down و .... وقتی بین رکورد ها حرکت می کنی اگه به رکورد اخر رسید بازم رکوردجدیدی ایجاد نشه و در اخرین رکورد ثابت بمونه

برای رفع هر دو مشکل:
1) خصوصیت AllowAdditions فرم رو به No تغییر بدید.
2) یک کلید به نام "پرونده جدید" در فرم ایجاد کنید و در روال Click آن کدهای ذیل را قرار بدید:

Me.AllowAdditions = True
DoCmd.GoToRecord , , acNewRec
Me.AnyStringField = ""
Me.AllowAdditions = False
در بالا AnyStringField نام یکی از فیلدهای جدول هست. باید به صورت یک عبارت پوچ مقدار دهی شود.
3) یک کلید هم به نام "حذف پرونده" در فرم قرار دهید برای حذف و کد ذیل را در روال Click آن قرار دهید.:


DoCmd.RunCommand acCmdDeleteRecord
On Error Resume Next
DoCmd.GoToRecord , , acPrevious

حالا رکوردی خالی نخواهید داشت.

موفق باشید :چشمک:

moustafa
جمعه 20 بهمن 1385, 17:43 عصر
ممنون
جنانچه می دونید بعد از اینتر رو اخرین فیلد رو فرم، میره به رکورد بعدی و اگه اخرین رکورد باشه رکورد جدیدی ایجاد می کنه
با دستورات شما این خاصیت از کار میفته اون چیکارش کنیم

Payam Moradi
جمعه 20 بهمن 1385, 23:03 عصر
ممنون
جنانچه می دونید بعد از اینتر رو اخرین فیلد رو فرم، میره به رکورد بعدی و اگه اخرین رکورد باشه رکورد جدیدی ایجاد می کنه
با دستورات شما این خاصیت از کار میفته اون چیکارش کنیم

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

فکرات رو بکن یا این یا اون.
به نظر من روشی که گفتم بهتره و کاربر برای رکورد جدید باید کلید "پرونده جدید" رو بزنه:چشمک:

moustafa
شنبه 21 بهمن 1385, 11:53 صبح
مرسی پیام جان
مسئله همینه دیگه !
البته یه تکست واسطه گذاشتم وبا اون کنترل کردم که هر دو حالت اتفاق بیفته
فقط یه مسئله مونده وقتی کدی رو به کلیدی مثل F7 انتساب دادم بعضا اسپلینگ ظاهر میشه در حالیکه باید دستوراتی که من نوشتم باید اجرا بشه

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyF7 Then
If MsgBox("رکورد فعلی حذف گردد یا خیر", vbYesNo + vbDefaultButton2, "حذف") = vbOK Then
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

End If
End If

End Sub

Payam Moradi
شنبه 21 بهمن 1385, 12:33 عصر
سعی کن از کلیدهایی که اکسس برای خودش به کار برده استفاده نکنی. البته میشه کاریش کرد ولی زمان زیادی میخواد.
کلید ترکیبی Ctrl + N رو بگذار یا کنترل + F7.


If KeyCode = vbKeyF7 AND Shift = acCtrlMask Then

در ضمن باید خصوصیت Key Preview فرمت رو هم به Yes تغییر بدی. این کارو کردی؟
بهتر نیست:چشمک: