PDA

View Full Version : مشکل ارتباط با فایل



radan63
یک شنبه 18 فروردین 1387, 13:24 عصر
من از طریق کد نویسی به بانک وصل شدم و حالا اطلاعاتم داخل recordset به نام rsاست حالا وقتی کد زیررا می نویسم که با آن در بین رکوردها جلو برود این کار را میکند ولی وقتی به آخرین رکورد می رسد باید مقدار eof =true شود و وارد شرط نشود ولی eof=falseاست و در نتیجه وارد حلقه می شود و می خواهد به رکورد بعدی برود و چون رکوردی نیست در نتیجه خطا می دهد مشکل چیست؟
کد من برای حرکت به جلو این است؟
if rs.eof=false
rs.movenext
end if
نامrecordsetمن rs است
و کد من برای حرکت به عقب هم این است ولی دقیقا همین مشکل وجوددارد
if rs.bof=false
rs.moveprevious
end if
یعنی در دو حالت من تست کردم و دیدم مقدار re.bof,rs.eofهیچ وقت trueنمیشودیعنی وقتی در اول فایل هستم مقدار bof=false استچرا چه باید بکنم؟

vbhamed
یک شنبه 18 فروردین 1387, 13:50 عصر
سلام
اینطوری بنویس


if rs.absoluteposition < rs.recordcount-1 then rs.movenext
و
if rs.absoluteposition > 0 then rs.moveprevious
البته eof و bof هم درسته ولی باید به اینصورت استفاده بشه


rs.movenext
if rs.eof then rs.movelast

و

rs.moveprevious
if rs.bof then rs.movefirst

radan63
چهارشنبه 21 فروردین 1387, 10:55 صبح
مطمن هستید که کد زیر درسته؟
if rs.eof then rs.movelast

و

rs.moveprevious
if rs.bof then rs.movefirst
[/code][/QUOTE]

radan63
چهارشنبه 21 فروردین 1387, 10:57 صبح
مطمن هستید که کد زیر درسته؟
if rs.eof then rs.movelast

و

rs.moveprevious
if rs.bof then rs.movefirst
[/code][/QUOTE]

radan63
چهارشنبه 21 فروردین 1387, 19:20 عصر
سلام
اینطوری بنویس


if rs.absoluteposition < rs.recordcount-1 then rs.movenext
و
if rs.absoluteposition > 0 then rs.moveprevious

این روش را به کاربردم ولی فقط رکورد اول رو نشون می ده

البته eof و bof هم درسته ولی باید به اینصورت استفاده بشه


rs.movenext
if rs.eof then rs.movelast

و

rs.moveprevious
if rs.bof then rs.movefirst


این روش هم جواب نداد وقتی در رکورد جلو می ره در روی آخرین رکورد که قرار می گیره چک کردم دیدم rs.eof باز هم falseاست وقتی روی آخرین رکورده روش کلیک میکنم پیغام میده:
rowset doesn't support fetching backward

meysam_meysam74
چهارشنبه 21 فروردین 1387, 22:02 عصر
کد های بالا باید جواب بدن اگه مشکلی داری می تونی سورس رو بزاری بچه ها نگاه می کنن .
مطمئن باش که یه راه حلی براش پیدا می کنن .

vbhamed
چهارشنبه 21 فروردین 1387, 23:24 عصر
سلام
اون روش که درست هست
ولی اگر نتونستی جواب بگیری از روش اول استفاده کن


if rs.absoluteposition < rs.recordcount-1 then rs.movenext
و
if rs.absoluteposition > 0 then rs.moveprevious

radan63
پنج شنبه 22 فروردین 1387, 09:37 صبح
اینم سورس برنامه لطفا کمک کنید
Public con1 As New ADODB.Connection
Public com1 As New ADODB.Command
Public rs1 As New ADODB.Recordset

Private Sub Command1_Click()
rs1.MoveNext
If rs1.EOF Then
rs1.MoveLast
End If
Text2.Text = rs1(0)
Text3.Text = rs1(1)
End Sub

Private Sub Command2_Click()
rs1.MovePrevious
If rs1.BOF Then
rs1.MoveFirst
End If
Text2.Text = rs1(0)
Text3.Text = rs1(1)
End Sub


Private Sub Form_Load()
con1.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=news"
con1.Open
com1.ActiveConnection = con1
com1.CommandText = "select * from n_elmi"
Set rs1 = com1.Execute
Text2.Text = rs1(0)
Text3.Text = rs1(1)
End Sub

vbhamed
پنج شنبه 22 فروردین 1387, 18:30 عصر
سلام


Public con1 As New ADODB.Connection
Public com1 As New ADODB.Command
Public rs1 As New ADODB.Recordset

Private Sub Command1_Click()

On Error Resume Next

If rs1.AbsolutePosition < rs1.RecordCount - 1 Then rs1.MoveNext

Text2.Text = rs1(0)
Text3.Text = rs1(1)

End Sub

Private Sub Command2_Click()

On Error Resume Next

If rs1.AbsolutePosition > 0 Then rs1.MovePrevious

Text2.Text = rs1(0)
Text3.Text = rs1(1)

End Sub

Private Sub Form_Load()

On Error Resume Next

con1.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=news"
con1.Open

com1.ActiveConnection = con1
com1.CommandText = "select * from n_elmi"

Set rs1 = com1.Execute

Text2.Text = rs1(0)
Text3.Text = rs1(1)

End Sub

Tiro Pro
پنج شنبه 22 فروردین 1387, 19:22 عصر
هر چند که دوست خوبم کامل گفته است
اگر درست متوجه سوالت شده ام کد زیر بدردت می خوره

private sub cmdForward_Click()
[LEFT] on error goto ForErr
adodc1.recordset.movenext
if adodc1.recordset.EOF then
Beep
adodc1.recordset.movelast
end if
exit sub
ForErr:
msgbox err.description
end sub

Private sub cmdback_click()
on error goto BaErr
adodc.recordset.moveprevious
if adodc1.recordset.BOF then
Beep
adodc1.recordset.movefrist
end if
BaErr:
msgbox Err.description
end sub

radan63
جمعه 23 فروردین 1387, 09:05 صبح
سلام


Public con1 As New ADODB.Connection
Public com1 As New ADODB.Command
Public rs1 As New ADODB.Recordset

Private Sub Command1_Click()

On Error Resume Next

If rs1.AbsolutePosition < rs1.RecordCount - 1 Then rs1.MoveNext

Text2.Text = rs1(0)
Text3.Text = rs1(1)

End Sub

Private Sub Command2_Click()

On Error Resume Next

If rs1.AbsolutePosition > 0 Then rs1.MovePrevious

Text2.Text = rs1(0)
Text3.Text = rs1(1)

End Sub

Private Sub Form_Load()

On Error Resume Next

con1.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=news"
con1.Open

com1.ActiveConnection = con1
com1.CommandText = "select * from n_elmi"

Set rs1 = com1.Execute

Text2.Text = rs1(0)
Text3.Text = rs1(1)

End Sub



باز هم جواب نمی ده اصلا وقتی روی کلد command1(next)کلیک می کنم روی رکورد بعدی منی ره
من تست کردم دیدم وقتی تعداد رکوردهای من مثلا 5 تا ست rs1.recourdcount=-1 است
من نمی فهمم چرا مقدار این خصوصیت اشتباهه اصلا مشکل روی همین خصوصیته که شرط اجرا نمیشه