ورود

View Full Version : دستور select



roya_borhany
پنج شنبه 11 آبان 1391, 12:37 عصر
سلام ممنون میشم مشکل این کد رو رفع کنید. روی دستور select خطا میگیره. اصلا نمیدونم مشکلش از چیه....

strong46202
پنج شنبه 11 آبان 1391, 14:33 عصر
سلام ممنون میشم مشکل این کد رو رفع کنید. روی دستور select خطا میگیره. اصلا نمیدونم مشکلش از چیه....
راستش من زیاد سعی نکردم تا بفهمم هدفتون از این برنامه چیه ولی تا اندازه ای Error رو رفع کردم

roya_borhany
پنج شنبه 11 آبان 1391, 14:52 عصر
ممنون ولی بازهم همون مشکله
اصلا دستور select داده ها رو برنمیگردونه. همونطور که میبیند متغیر k که باید دارای تعداد 4 بشه شده یک. یعنی خالی
به همین خاطر وقتی دستور movenext رو به قبل از if منتقل کردم خطا گرفت چون گفت که رکورد بعدی وجود نداره. درحالیکه چهار تا رکورد وجود داره.



Private Sub Command4_Click()

Dim rs As DAO.Recordset
Dim db As DAO.Database
Dim i As String
Dim j As Date
Dim k As Integer
Set db = CurrentDb()
Set rs = db.OpenRecordset("SELECT * FROM TT")
k = rs.RecordCount
rs.MoveFirst
While Not rs.EOF
i = rs.Fields("serial")
j = rs.Fields("date2")
rs.MoveNext

If rs.Fields("serial") = i Then
If rs.Fields("date2") - j < 90 Then
Combo7.AddItem rs.Fields("serial")

End If

End If
Wend


هدفمم این هست که محتویات یک رکورد رو با بعدیش مقایسه کنم و اگر برابر بودند و تفاضل تاریخشون کمتر از 90 روز بود اونها انتخاب بشن

strong46202
پنج شنبه 11 آبان 1391, 15:20 عصر
ممنون ولی بازهم همون مشکله
اصلا دستور select داده ها رو برنمیگردونه. همونطور که میبیند متغیر k که باید دارای تعداد 4 بشه شده یک. یعنی خالی
به همین خاطر وقتی دستور movenext رو به قبل از if منتقل کردم خطا گرفت چون گفت که رکورد بعدی وجود نداره. درحالیکه چهار تا رکورد وجود داره.



Private Sub Command4_Click()

Dim rs As DAO.Recordset
Dim db As DAO.Database
Dim i As String
Dim j As Date
Dim k As Integer
Set db = CurrentDb()
Set rs = db.OpenRecordset("SELECT * FROM TT")
k = rs.RecordCount
rs.MoveFirst
While Not rs.EOF
i = rs.Fields("serial")
j = rs.Fields("date2")
rs.MoveNext

If rs.Fields("serial") = i Then
If rs.Fields("date2") - j < 90 Then
Combo7.AddItem rs.Fields("serial")

End If

End If
Wend


هدفمم این هست که محتویات یک رکورد رو با بعدیش مقایسه کنم و اگر برابر بودند و تفاضل تاریخشون کمتر از 90 روز بود اونها انتخاب بشن


الان دیگه مقدار k رو 4 نشون میده
چک کنید

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

نکته : دستور Recordcount معمولا زمانی خروجی درست رو میده که نشانگر رو اخرین رکورد باشه یعنی شما باید قبل از استفاده از این دستور از دستور rs.movelast استفاده کنید

roya_borhany
پنج شنبه 11 آبان 1391, 23:02 عصر
ممنون از پاسخگویی شما. به نظر شما چه زاهی هست که بتونم مقادیر رکورد بعدی رو بدست بیارم. گویا movenext برای اینکار جواب نمیده



While Not rs.EOF
i = rs.Fields("serial")
j = rs.Fields("date2")
rs.MoveNext
If rs.Fields("serial") = i Then
If rs.Fields("date2") - j < 90 Then
Combo7.AddItem rs.Fields("date2")

End If

End If
Wend