Почему он всегда заменяет первые данные, когда я нажимаю на дисплей? - PullRequest
0 голосов
/ 22 сентября 2018

У меня небольшая проблема с моей системой. Это моя проблема, когда я вставляю данные, эти данные будут отображаться в DatagridView, теперь, если я снова вставлю другие данные, первые данные в DatagridView будут удалены ибудут заменены вторыми данными.Звучит как легко, но я попробовал все, как, скопировать мой код, поиск в Интернете, но все еще возникла та же проблема.

А также я использовал Breakpoint, чтобы увидеть, куда идет код и чтобыть триггером.

Пока это мой код.

 If TxtRod_ID.Text = "" Then MsgBox("Please enter RD Code.") : Exit Sub
    If rbRD.Checked = False And rbOSS.Checked = False Then MsgBox("Please select User On.") : Exit Sub

    Dim cn As New OleDbConnection
    Dim strUser As String = ""
    Dim cmd As OleDbCommand
    Dim dr As OleDbDataReader

    If rbRD.Checked = True Then
        RoDID = TxtRod_ID.Text
        RdGetSrvr()
        cn = New OleDbConnection(RDcon)
        Try
            If cn.State = ConnectionState.Closed Then cn.Open()
        Catch ex As Exception
            MessageBox.Show("Cannot connect to the database. Please contact the administrator.", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try
        If rbUserName.Checked = True Then
            If txtFname.Text.Trim() = "" And txtLname.Text.Trim() = "" Then MsgBox("Please enter First and/or Last Name of User.") : Exit Sub
            strUser = "select * from USERS..MS_User where First_Name like '%" & txtFname.Text.Trim() & "%' and Last_Name like '%" & txtLname.Text.Trim() & "%'"

        ElseIf rbUserId.Checked = True Then
            If txtUserID.Text.Trim() = "" Then MsgBox("Please enter User ID.") : Exit Sub
            strUser = "select  * from USERS..MS_User where User_ID like '%" & txtUserID.Text.Trim() & "%'"

        End If
    Else
        If rbUserId.Checked = True Then
            If txtUserID.Text.Trim() = "" Then MsgBox("Please enter User ID.") : Exit Sub

            COGetSrvr()
            cn = New OleDbConnection(COcon)
            cn.Open()
            strUser = "select * from objUsr..user_locked_tbl where UserName like '%" & txtUserID.Text.Trim() & "%'"

        End If
    End If

    cmd = New OleDbCommand(strUser, cn)

    dr = cmd.ExecuteReader()
    Dim ctr As Integer = 0
    If dr.HasRows Then
        While dr.Read
            dgUser.Rows.Add()
            If rbRD.Checked = True Then
                dgUser("dgUserID1", ctr).Value = dr("User_ID")
                dgUser("dgFname1", ctr).Value = dr("First_Name")
                dgUser("dgLname1", ctr).Value = dr("Last_Name")
                dgUser("dgPrimaryRole1", ctr).Value = dr("Primary_Role")
                dgUser("dgUserStatus1", ctr).Value = dr("User_Status")
                dgUser("dgULoginCnt1", ctr).Value = dr("Unsuccessful_Login_Count")
                dgUser("dgDesig1", ctr).Value = dr("Designation")
            Else
                dgUser("dgUserID1", ctr).Value = dr("UserName")
                dgUser("dgFname1", ctr).Value = ""
                dgUser("dgLname1", ctr).Value = ""
                dgUser("dgPrimaryRole1", ctr).Value = ""
                dgUser("dgUserStatus1", ctr).Value = ""
                dgUser("dgULoginCnt1", ctr).Value = ""
                dgUser("dgDesig1", ctr).Value = ""
            End If
        End While
    Else
        MsgBox("No record found.")
        Exit Sub
    End If
End Sub

Когда я добавляю данные и нажимаю кнопку отображения кнопки.Результат в порядке.

Result 1

Теперь, если я снова добавлю данные.Первые данные будут удалены и заменены вторыми.

Result 2

Как видно из результата 2, при вставке вставляется пустое значение rowэто к моему коду, dgUser.Rows.Clear, конечно, пробел row удалит, но у меня та же проблема.

Я хочу добиться, если я вставлю первые данные, они не будут удалены при вставкевторые данные.

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018
  Dim ctr As Integer = 0
    If dr.HasRows Then
        While dr.Read
            For ctr = 0 To dgUser.Rows.Count - 1
            Next
            dgUser.Rows.Add()
            If rbRD.Checked = True Then
                dgUser("dgUserID", ctr).Value = If(IsDBNull(dr("User_ID")) = True, "", dr("User_ID"))
                dgUser("dgFname", ctr).Value = If(IsDBNull(dr("First_Name")) = True, "", dr("First_Name"))
                dgUser("dgLname", ctr).Value = If(IsDBNull(dr("Last_Name")) = True, "", dr("Last_Name"))
                dgUser("dgPrimaryRole", ctr).Value = If(IsDBNull(dr("Primary_Role")) = True, "", dr("Primary_Role"))
                dgUser("dgUserStatus", ctr).Value = If(IsDBNull(dr("User_Status")) = True, "", dr("User_Status"))
                dgUser("dgULoginCnt", ctr).Value = If(IsDBNull(dr("Unsuccessful_Login_Count")) = True, "", dr("Unsuccessful_Login_Count"))
                dgUser("dgDesig", ctr).Value = If(IsDBNull(dr("Designation")) = True, "", dr("Designation"))
            Else
                dgUser("dgUserID", ctr).Value = If(IsDBNull(dr("UserName")) = True, "", dr("UserName"))
                dgUser("dgFname", ctr).Value = ""
                dgUser("dgLname", ctr).Value = ""
                dgUser("dgPrimaryRole", ctr).Value = ""
                dgUser("dgUserStatus", ctr).Value = ""
                dgUser("dgULoginCnt", ctr).Value = ""
                dgUser("dgDesig", ctr).Value = ""
            End If

            ctr += 1
        End While

Я понял.Я просто забыл вставить For Loop в мой код.Спасибо @Terry D за идею.

0 голосов
/ 22 сентября 2018

Похоже, флаг «ctr» не изменен в цикле.Это примерно номер строки помещенного результата, поэтому все результаты отправляются в одно и то же место?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...