PDA

View Full Version : رفتن به رکورد قبلی با شرایط خاص



G.hemati
چهارشنبه 16 مهر 1393, 22:50 عصر
با سلام
من در یه فرمم نیاز دارم جهت رفتن به رکورد بعدی و قبلی شرطی را تعریف کنم
به اینصورت که رکوردی رو پیدا کنه که مقدار فیلد A کوچکتر از خودش باشه

مثلا مقدار فیلد A در رکورد شماره 1 و 2 و 3 برابر با 10 است و در رکورد شماره 4 برابر با 9

پس وقتی از رکورد شماره 1 میخواهیم به رکورد بعدی بریم ، رکورد شماره 4 رو برامون بیاره چون رکورد 2 و 3 مقدارش برابر با خود فیلد است

ممنون میشم راهنمایی بفرمایین

G.hemati
جمعه 18 مهر 1393, 18:06 عصر
دوستان برای روشن شدن بیشتر موضوع نمونه ای آماده کردم لطفا ملاحظه بفرمایین

alirezabahrami
شنبه 19 مهر 1393, 19:01 عصر
با سلام
من در یه فرمم نیاز دارم جهت رفتن به رکورد بعدی و قبلی شرطی را تعریف کنم
به اینصورت که رکوردی رو پیدا کنه که مقدار فیلد A کوچکتر از خودش باشه

مثلا مقدار فیلد A در رکورد شماره 1 و 2 و 3 برابر با 10 است و در رکورد شماره 4 برابر با 9

پس وقتی از رکورد شماره 1 میخواهیم به رکورد بعدی بریم ، رکورد شماره 4 رو برامون بیاره چون رکورد 2 و 3 مقدارش برابر با خود فیلد است

ممنون میشم راهنمایی بفرمایین
سلام !
کدهای زیر را تست کن !


Private Sub Command1_Click()
On Error GoTo Err_Num
Dim IntA As Integer
IntA = DFirst("a", "Tbl1", "[A]> " & A & "")
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[A] = " & Str(Nz(IntA, 0))
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
Err_Num:
Select Case Err.Number
Case Is = 94
Exit Sub
Case Else
End Select
End Sub

Private Sub Command2_Click()
On Error GoTo Err_Num
Dim IntA As Integer
IntA = DLast("A", "Tbl1", "[A]< " & A & "")
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[A] = " & Str(Nz(IntA, 0))
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
Err_Num:
Select Case Err.Number
Case Is = 94
Exit Sub
Case Else
End Select
End Sub

یا علی

m.elmi
یک شنبه 20 مهر 1393, 12:49 عصر
سلام، اين كدها رو هم تست كن:

Private Sub Command1_Click()
With Me.RecordsetClone
.Bookmark = Me.Bookmark
.FindFirst "A> " & Me.A.Value
If .NoMatch Then
MsgBox "No Greater Values Were Found!"
Exit Sub
End If
Me.Bookmark = .Bookmark
End With

End Sub


Private Sub Command2_Click()
With Me.RecordsetClone
.Bookmark = Me.Bookmark
.FindPrevious "A< " & Me.A.Value
If .NoMatch Then
MsgBox "No Smaller Values Were Found!"
Exit Sub
End If
Me.Bookmark = .Bookmark
End With

End Sub

G.hemati
دوشنبه 21 مهر 1393, 13:58 عصر
با سلام
ممنون از زحماتی که اساتید گرامی کشیدن واقعاً عالی بود

من در فرمم از کد زیر استفاده کردم


Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord , , acNewRec
End Sub

که باعث میشه وقتی میخوای به رکورد های قبلی برگردی خطای رکورد جاری رو بگیره .

این مشکل رو چه باید کرد
ممنون

m.elmi
دوشنبه 21 مهر 1393, 20:24 عصر
سلام - برای رفع مشکل یه قسمت در ابتدا اضافه شده:

Private Sub Command1_Click()
If Me.NewRecord Then
MsgBox "You are on a new record!"
Exit Sub
End If

With Me.RecordsetClone
.Bookmark = Me.Bookmark
.FindFirst "A> " & Me.A.Value
If .NoMatch Then
MsgBox "No Greater Values Were Found!"
Exit Sub
End If
Me.Bookmark = .Bookmark
End With

End Sub



Private Sub Command2_Click()
If Me.NewRecord Then
DoCmd.GoToRecord , , acPrevious
Exit Sub
End If

With Me.RecordsetClone
.Bookmark = Me.Bookmark
.FindPrevious "A< " & Me.A.Value
If .NoMatch Then
MsgBox "No Smaller Values Were Found!"
Exit Sub
End If
Me.Bookmark = .Bookmark
End With

End Sub