我收到名为"INDEXOUTOFRANGEEXCEPTION"的错误; ,位置-1没有行!有人可以帮助我解决此错误吗? [英] I am getting an error called "INDEXOUTOFRANGEEXCEPTION" , there is no row at position -1 ! can somebody help me in fixing this error?

查看:129
本文介绍了我收到名为"INDEXOUTOFRANGEEXCEPTION"的错误; ,位置-1没有行!有人可以帮助我解决此错误吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Imports System.Data.SqlClient
Imports System.Data

Partial Class _Default
    Inherits System.Web.UI.Page
    Dim con As New SqlConnection("Data Source=(local);Server=USER\SQLEXPRESS;Initial Catalog=education;Integrated Security=True")
    Dim com As SqlCommand
    Dim qry As String
    Dim adp As SqlDataAdapter
    Dim ds As DataSet
    Dim i As Integer
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then

            lregno.Items.Clear()
            qry = "select sregno from stureg"
            com = New SqlCommand(qry, con)
            adp = New SqlDataAdapter(com)
            ds = New DataSet
            adp.Fill(ds, "stureg")
            i = ds.Tables("stureg").Rows.Count
            Dim j As Integer
            For j = 0 To i - 1
                lregno.Items.Add(ds.Tables("stureg").Rows(j)(0))
            Next

            cid.Items.Clear()
            qry = "select cid from course"
            com = New SqlCommand(qry, con)
            adp = New SqlDataAdapter(com)
            ds = New DataSet
            adp.Fill(ds, "course")
            i = ds.Tables("course").Rows.Count
            For j = 0 To i - 1
                cid.Items.Add(ds.Tables("course").Rows(j)(0))
            Next


            rdate.Text = Date.Today

            Dim p As String
            qry = "select sregno from stureg"
            com = New SqlCommand(qry, con)
            adp = New SqlDataAdapter(com)
            ds = New DataSet
            adp.Fill(ds, "stureg")
            i = ds.Tables("stureg").Rows.Count
            p = ds.Tables("stureg").Rows(i - 1)(0)
            p = Mid(p, 2)
            p = Val(p) + 1
            If Len(p) = 1 Then
                p = "000" + p
            ElseIf Len(p) = 2 Then
                p = "00" + p
            ElseIf Len(p) = 3 Then
                p = "0" + p
            End If
            sregno.Text = "R" + p

            sname.Text = ""
            gmale.Checked = False
            gfemale.Checked = True
            sdob.Text = ""
            fname.Text = ""
            foccup.Text = ""
            spreaddr.Text = ""
            speraddr.Text = ""
            sphno.Text = ""
            'cid.Text = ""
            cname.Text = ""
            cdept.Text = ""
            cdur.Text = ""
            ccat.Text = ""

        End If
    End Sub

    Protected Sub Bclear_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Bclear.Click
        rdate.Text = Date.Today

        Dim p As String
        qry = "select sregno from stureg"
        com = New SqlCommand(qry, con)
        adp = New SqlDataAdapter(com)
        ds = New DataSet
        adp.Fill(ds, "stureg")
        i = ds.Tables("stureg").Rows.Count
        p = ds.Tables("stureg").Rows(i - 1)(0)
        p = Mid(p, 2)
        p = Val(p) + 1
        If Len(p) = 1 Then
            p = "000" + p
        ElseIf Len(p) = 2 Then
            p = "00" + p
        ElseIf Len(p) = 3 Then
            p = "0" + p
        End If
        sregno.Text = "R" + p

        sname.Text = ""
        gmale.Checked = False
        gfemale.Checked = True
        sdob.Text = ""
        fname.Text = ""
        foccup.Text = ""
        spreaddr.Text = ""
        speraddr.Text = ""
        sphno.Text = ""
        'cid.Text = ""
        cname.Text = ""
        cdept.Text = ""
        cdur.Text = ""
        ccat.Text = ""

        lregno.Items.Clear()
        qry = "select sregno from stureg"
        com = New SqlCommand(qry, con)
        adp = New SqlDataAdapter(com)
        ds = New DataSet
        adp.Fill(ds, "stureg")
        i = ds.Tables("stureg").Rows.Count
        Dim j As Integer
        For j = 0 To i - 1
            lregno.Items.Add(ds.Tables("stureg").Rows(j)(0))
        Next

    End Sub

    Protected Sub Bsave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Bsave.Click

        If rdate.Text = "" Or sregno.Text = "" Or sname.Text = "" Or sdob.Text = "" Or fname.Text = "" Or foccup.Text = "" Or spreaddr.Text = "" Or speraddr.Text = "" Or sphno.Text = "" Or cid.Text = "" Or cname.Text = "" Or cdept.Text = "" Or cdur.Text = "" Or ccat.Text = "" Then
            MsgBox("Please Enter All Values Then Save", MsgBoxStyle.Information)
        ElseIf gmale.Checked = False And gfemale.Checked = False Then
            MsgBox("Please Select Any Gender(Male/Female)", MsgBoxStyle.Information)
        ElseIf gmale.Checked = True Then
            qry = "insert into stureg values('" + rdate.Text + "','" + sregno.Text + "','" + sname.Text + "','" + gmale.Text + "','" + sdob.Text + "','" + fname.Text + "','" + foccup.Text + "','" + spreaddr.Text + "','" + speraddr.Text + "','" + sphno.Text + "','" + cid.Text + "','" + cname.Text + "','" + cdept.Text + "','" + cdur.Text + "','" + ccat.Text + "')"
            com = New SqlCommand(qry, con)
            con.Open()
            com.ExecuteScalar()
            con.Close()
            MsgBox("Successfully Added")
        ElseIf gfemale.Checked = True Then
            qry = "insert into stureg values('" + rdate.Text + "','" + sregno.Text + "','" + sname.Text + "','" + gfemale.Text + "','" + sdob.Text + "','" + fname.Text + "','" + foccup.Text + "','" + spreaddr.Text + "','" + speraddr.Text + "','" + sphno.Text + "','" + cid.Text + "','" + cname.Text + "','" + cdept.Text + "','" + cdur.Text + "','" + ccat.Text + "')"
            com = New SqlCommand(qry, con)
            con.Open()
            com.ExecuteScalar()
            con.Close()
            MsgBox("Successfully Added")
        End If

        Dim p As String
        qry = "select sregno from stureg"
        com = New SqlCommand(qry, con)
        adp = New SqlDataAdapter(com)
        ds = New DataSet
        adp.Fill(ds, "stureg")
        i = ds.Tables("stureg").Rows.Count
        p = ds.Tables("stureg").Rows(i - 1)(0)
        p = Mid(p, 2)
        p = Val(p) + 1
        If Len(p) = 1 Then
            p = "000" + p
        ElseIf Len(p) = 2 Then
            p = "00" + p
        ElseIf Len(p) = 3 Then
            p = "0" + p
        End If
        sregno.Text = "R" + p

        sname.Text = ""
        gmale.Checked = False
        gfemale.Checked = True
        sdob.Text = ""
        fname.Text = ""
        foccup.Text = ""
        spreaddr.Text = ""
        speraddr.Text = ""
        sphno.Text = ""
        'cid.Text = ""
        cname.Text = ""
        cdept.Text = ""
        cdur.Text = ""
        ccat.Text = ""

        lregno.Items.Clear()
        qry = "select sregno from stureg"
        com = New SqlCommand(qry, con)
        adp = New SqlDataAdapter(com)
        ds = New DataSet
        adp.Fill(ds, "stureg")
        i = ds.Tables("stureg").Rows.Count
        Dim j As Integer
        For j = 0 To i - 1
            lregno.Items.Add(ds.Tables("stureg").Rows(j)(0))
        Next

    End Sub

    Protected Sub Bedit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Bedit.Click

        If rdate.Text = "" Or sregno.Text = "" Or sname.Text = "" Or sdob.Text = "" Or fname.Text = "" Or foccup.Text = "" Or spreaddr.Text = "" Or speraddr.Text = "" Or sphno.Text = "" Or cid.Text = "" Or cname.Text = "" Or cdept.Text = "" Or cdur.Text = "" Or ccat.Text = "" Then
            MsgBox("Please Select Any One RegNo from the List then Edit", MsgBoxStyle.Information)
        ElseIf gmale.Checked = False And gfemale.Checked = False Then
            MsgBox("Please Select Any Gender(Male/Female)", MsgBoxStyle.Information)
        ElseIf gmale.Checked = True Then
            qry = "update stureg set rdate='" + rdate.Text + "',sname='" + sname.Text + "',sgender='" + gmale.Text + "',sdob='" + sdob.Text + "',fname='" + fname.Text + "',foccup='" + foccup.Text + "',spreaddr='" + spreaddr.Text + "',speraddr='" + speraddr.Text + "',sphno='" + sphno.Text + "',cid='" + cid.Text + "',cname='" + cname.Text + "',cdept='" + cdept.Text + "',cdur='" + cdur.Text + "',ccat='" + ccat.Text + "' where sregno='" + sregno.Text + "'"
            com = New SqlCommand(qry, con)
            con.Open()
            com.ExecuteScalar()
            con.Close()
            MsgBox("Successfully Edited")
        ElseIf gfemale.Checked = True Then
            qry = "update stureg set rdate='" + rdate.Text + "',sname='" + sname.Text + "',sgender='" + gfemale.Text + "',sdob='" + sdob.Text + "',fname='" + fname.Text + "',foccup='" + foccup.Text + "',spreaddr='" + spreaddr.Text + "',speraddr='" + speraddr.Text + "',sphno='" + sphno.Text + "',cid='" + cid.Text + "',cname='" + cname.Text + "',cdept='" + cdept.Text + "',cdur='" + cdur.Text + "',ccat='" + ccat.Text + "' where sregno='" + sregno.Text + "'"
            com = New SqlCommand(qry, con)
            con.Open()
            com.ExecuteScalar()
            con.Close()
            MsgBox("Successfully Edited")
        End If

        Dim p As String
        qry = "select sregno from stureg"
        com = New SqlCommand(qry, con)
        adp = New SqlDataAdapter(com)
        ds = New DataSet
        adp.Fill(ds, "stureg")
        i = ds.Tables("stureg").Rows.Count
        p = ds.Tables("stureg").Rows(i - 1)(0)
        p = Mid(p, 2)
        p = Val(p) + 1
        If Len(p) = 1 Then
            p = "000" + p
        ElseIf Len(p) = 2 Then
            p = "00" + p
        ElseIf Len(p) = 3 Then
            p = "0" + p
        End If
        sregno.Text = "R" + p

        sname.Text = ""
        gmale.Checked = False
        gfemale.Checked = True
        sdob.Text = ""
        fname.Text = ""
        foccup.Text = ""
        spreaddr.Text = ""
        speraddr.Text = ""
        sphno.Text = ""
        'cid.Text = ""
        cname.Text = ""
        cdept.Text = ""
        cdur.Text = ""
        ccat.Text = ""

        lregno.Items.Clear()
        qry = "select sregno from stureg"
        com = New SqlCommand(qry, con)
        adp = New SqlDataAdapter(com)
        ds = New DataSet
        adp.Fill(ds, "stureg")
        i = ds.Tables("stureg").Rows.Count
        Dim j As Integer
        For j = 0 To i - 1
            lregno.Items.Add(ds.Tables("stureg").Rows(j)(0))
        Next

    End Sub

    Protected Sub Bdelete_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Bdelete.Click

        If rdate.Text = "" Or sregno.Text = "" Or sname.Text = "" Or sdob.Text = "" Or fname.Text = "" Or foccup.Text = "" Or spreaddr.Text = "" Or speraddr.Text = "" Or sphno.Text = "" Or cid.Text = "" Or cname.Text = "" Or cdept.Text = "" Or cdur.Text = "" Or ccat.Text = "" Then
            MsgBox("Please Select Any One RegNo from the List then Edit", MsgBoxStyle.Information)
        Else
            qry = "delete from stureg where sregno='" + sregno.Text + "'"
            com = New SqlCommand(qry, con)
            con.Open()
            com.ExecuteScalar()
            con.Close()
            MsgBox("Successfully Deleted")

        End If

        Dim p As String
        qry = "select sregno from stureg"
        com = New SqlCommand(qry, con)
        adp = New SqlDataAdapter(com)
        ds = New DataSet
        adp.Fill(ds, "stureg")
        i = ds.Tables("stureg").Rows.Count
        p = ds.Tables("stureg").Rows(i - 1)(0)
        p = Mid(p, 2)
        p = Val(p) + 1
        If Len(p) = 1 Then
            p = "000" + p
        ElseIf Len(p) = 2 Then
            p = "00" + p
        ElseIf Len(p) = 3 Then
            p = "0" + p
        End If
        sregno.Text = "R" + p

        sname.Text = ""
        gmale.Checked = False
        gfemale.Checked = True
        sdob.Text = ""
        fname.Text = ""
        foccup.Text = ""
        spreaddr.Text = ""
        speraddr.Text = ""
        sphno.Text = ""
        'cid.Text = ""
        cname.Text = ""
        cdept.Text = ""
        cdur.Text = ""
        ccat.Text = ""

        lregno.Items.Clear()
        qry = "select sregno from stureg"
        com = New SqlCommand(qry, con)
        adp = New SqlDataAdapter(com)
        ds = New DataSet
        adp.Fill(ds, "stureg")
        i = ds.Tables("stureg").Rows.Count
        Dim j As Integer
        For j = 0 To i - 1
            lregno.Items.Add(ds.Tables("stureg").Rows(j)(0))
        Next

    End Sub

   
    Protected Sub Bexit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Bexit.Click
        Response.Redirect("Main.aspx")
    End Sub

    Protected Sub cid_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cid.SelectedIndexChanged
        Try

            qry = "select cname,cdur,cdept,ccat from course where cid='" + cid.SelectedItem.Text + "'"
            com = New SqlCommand(qry, con)
            adp = New SqlDataAdapter(com)
            ds = New DataSet
            adp.Fill(ds, "course")
            cname.Text = ds.Tables("course").Rows(0)(0)
            cdur.Text = ds.Tables("course").Rows(0)(1)
            cdept.Text = ds.Tables("course").Rows(0)(2)
            ccat.Text = ds.Tables("course").Rows(0)(3)

        Catch ex As Exception

            MsgBox("Sqlconnection error")

        End Try
    End Sub

    Protected Sub lregno_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lregno.SelectedIndexChanged
        Try
            Dim s As String
            qry = "select sregno,sname,sgender,sdob,fname,foccup,spreaddr,speraddr,sphno,cid from stureg where sregno='" + lregno.SelectedItem.Text + "'"
            com = New SqlCommand(qry, con)
            adp = New SqlDataAdapter(com)
            ds = New DataSet
            adp.Fill(ds, "stureg")
            sregno.Text = ds.Tables("stureg").Rows(0)(0)
            sname.Text = ds.Tables("stureg").Rows(0)(1)
            s = ds.Tables("stureg").Rows(0)(2)
            If s = "Male" Then
                gmale.Checked = True
                gfemale.Checked = False
            ElseIf s = "Female" Then
                gfemale.Checked = True
                gmale.Checked = False
            End If

            sdob.Text = ds.Tables("stureg").Rows(0)(3)
            fname.Text = ds.Tables("stureg").Rows(0)(4)
            foccup.Text = ds.Tables("stureg").Rows(0)(5)
            spreaddr.Text = ds.Tables("stureg").Rows(0)(6)
            speraddr.Text = ds.Tables("stureg").Rows(0)(7)
            sphno.Text = ds.Tables("stureg").Rows(0)(8)
            cid.Text = ds.Tables("stureg").Rows(0)(9)

            qry = "select cname,cdur,cdept,ccat from stureg where cid='" + cid.Text + "'"
            com = New SqlCommand(qry, con)
            adp = New SqlDataAdapter(com)
            ds = New DataSet
            adp.Fill(ds, "stureg")
            cname.Text = ds.Tables("stureg").Rows(0)(0)
            cdur.Text = ds.Tables("stureg").Rows(0)(1)
            cdept.Text = ds.Tables("stureg").Rows(0)(2)
            ccat.Text = ds.Tables("stureg").Rows(0)(3)

        Catch ex As Exception

            MsgBox("Sqlconnection Error")

        End Try
    End Sub
End Class



我尝试过的事情:

i tried to replace -1 with + 1



What I have tried:

i tried to replace -1 with + 1

推荐答案

Think of it this way: What if zero results are returned?

Think of it this way: What if zero results are returned?

i = ds.Tables("stureg").Rows.Count '0
p = ds.Tables("stureg").Rows(-1)(0)



Your logic is ok. Just add a check in case there are zero results.



Your logic is ok. Just add a check in case there are zero results.


这篇关于我收到名为"INDEXOUTOFRANGEEXCEPTION"的错误; ,位置-1没有行!有人可以帮助我解决此错误吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆