1 ضمیمه
Error: There is no row at position 0
با سلام، ویژوال استودیو به من این ارور رو نمایش میده:
یه نرم افزار ساده درست کردم که یه آیتم از بانک اطلاعاتی اکسس بگیره و در تکست باکس نمایش بده. ولی این ارور رو میده!
An unhandled exception of type 'System.IndexOutOfRangeException' occurred in System.Data.dll
Additional information: There is no row at position 0.
تصویر:
کدهایی که نوشتم:
Imports System.Data.OleDb
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim StrCon As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Admin\Documents\Visual Studio 2015\Projects\Eshkal_Nevis\Eshkal_Nevis\bin\Debug\ EshkalBankTest.accdb"
Dim Con As OleDbConnection
Dim da As OleDbDataAdapter
'Dim cmd As OleDbCommand
Dim stroledb As String = ""
Dim ds As New DataSet
ds.Reset()
Con = New OleDbConnection(StrCon)
Con.Open()
stroledb = "SELECT GozareshD FROM Eshkal WHERE (GozareshD = '" & TextBox1.Text & "') "
da = New OleDbDataAdapter(stroledb, Con)
da.Fill(ds, "Eshkal")
Con.Close()
TextBox1.Text = ds.Tables("Eshkal").Rows(0).Item("GozareshD")
End Sub
End Class
نقل قول: Error: There is no row at position 0
وقتی کدها رو در ویژوال استودیو اجرا میکنم، نرم افزار اطلاعات رو نشون میده!
حتی یه DataGirdView هم درست کردم، تا اطلاعات رو نمایش بده، که نمایش هم داد. یعنی بانک اطلاعاتی موردی نداره!
حتی بانک اطلاعاتی رو هم عوض کردم ولی باز این ارور رو میده!
نقل قول: Error: There is no row at position 0
مشکلش این بود که به جای اینکه دستورات رو در یک دکمه (به صورت غیر مستقیم) بنویسم، مستقیما در فرم اصلی گذاشتم. هر بار که برنامه اجرا میشد، برای پیدا کردن داده از بانک، از تکست باکس یه مقدار میخواست و چون تکست باکس خالی بود و این مقدار در بانک اطلاعاتی وجود نداشت، این پیغام خطا رو میداد. (خطا: این داده در ردیف 0 وجود ندارد)
در نهایت با گذاشتن در یک دکمه مشکل حل شد.
البته با گذاشتن یک دستور "try...catch" و دستور شرطی "IF" به صورت «تو در تو» هم مشکل خالی بودن هم حل شد.