2015-10-07 85 views
-1
Private Sub btnCIAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnCIAdd.Click 

    Dim cistatus, cifn, ciln, cicontact, cieadd, cidoa, ciRD, ciRT, ciRN, ciPPD, ciMOP, ciAmount As String 
    Dim i, cicid As Integer 

    For i = 0 To Me.DataGridView1.Rows.Count - 1 
     cicid = DataGridView1.Rows(i).Cells(0).Value 
     cistatus = Me.DataGridView1.Rows(i).Cells(1).Value 
     cifn = Me.DataGridView1.Rows(i).Cells(2).Value 
     ciln = Me.DataGridView1.Rows(i).Cells(3).Value 
     cicontact = Me.DataGridView1.Rows(i).Cells(4).Value 
     cieadd = Me.DataGridView1.Rows(i).Cells(5).Value 
    Next 

    cidoa = DateTimePicker2.Text 
    ciRD = txtCIRD.Text 
    ciRT = comboCIRT.Text 
    ciRN = comboCIRN.Text 
    ciPPD = txtCIPD.Text 
    ciMOP = comboCIMD.Text 
    ciAmount = txtCIAmount.Text 



    cmd = "INSERT INTO checkin_info VALUES ('" & cicid & "','" & cistatus & "','" & cifn & "','" & ciln & "','" & cicontact & "','" & cieadd & "',','" & cidoa & "','" & ciRD & "','" & ciRT & "','" & ciRN & "','" & ciPPD & "','" & ciMOP & "')" 
    rs.CommandText = cmd 
    res = rs.ExecuteReader() 
    MessageBox.Show("Entry added!") 


End Sub 

这是我的整个私人小组,我得到的错误像“变量'cicontact'之前使用它已被分配一个值。在运行时“与cistatus,cifn,ciln,cicontact和cieadd一样 我没有得到这个..我初始化是一个错误,我该如何解决这个问题?使用变量之前,它已被分配一个值

+0

您有SQL注入漏洞。 – SLaks

+1

你的“For循环”是多余的。所有你最终得到的是来自datagrid最后一行的值,所以你可以直接设置'i = Me.DataGridView1.Rows.Count - 1'并执行一次。 – DeanOC

+0

它减少了它的错误,剩下的一个语法错误到了计数 –

回答

1

检查这个代码

Private Sub btnCIAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnCIAdd.Click 

     Dim cistatus As String="" 
Dim cifn As String="" 
Dim ciln As String="" 
Dim cicontact As String="" 
Dim cieadd As String="" 
Dim cidoa As String="" 
Dim ciRD As String="" 
Dim ciRT As String="" 
Dim ciRN As String="" 
Dim ciPPD As String="" 
Dim ciMOP As String="" 
Dim ciAmount As String="" 
     Dim i as Integer =0 
Dim cicid As Integer=0 

    cidoa = DateTimePicker2.Text 
     ciRD = txtCIRD.Text 
     ciRT = comboCIRT.Text 
     ciRN = comboCIRN.Text 
     ciPPD = txtCIPD.Text 
     ciMOP = comboCIMD.Text 
     ciAmount = txtCIAmount.Text 

     For i = 0 To Me.DataGridView1.Rows.Count - 1 
      cicid = DataGridView1.Rows(i).Cells(0).Value 
      cistatus = Me.DataGridView1.Rows(i).Cells(1).Value 
      cifn = Me.DataGridView1.Rows(i).Cells(2).Value 
      ciln = Me.DataGridView1.Rows(i).Cells(3).Value 
      cicontact = Me.DataGridView1.Rows(i).Cells(4).Value 
      cieadd = Me.DataGridView1.Rows(i).Cells(5).Value 

     cmd = "INSERT INTO checkin_info VALUES ('" & cicid & "','" & cistatus & "','" & cifn & "','" & ciln & "','" & cicontact & "','" & cieadd & "',','" & cidoa & "','" & ciRD & "','" & ciRT & "','" & ciRN & "','" & ciPPD & "','" & ciMOP & "')" 
     rs.CommandText = cmd 
     res = rs.ExecuteReader() 
    next 
     MessageBox.Show("Entry added!") 


    End Sub 
+0

我试过了。它给出了一个错误,如“显式初始化不允许使用单个类型说明符声明多个变量” –

+2

@KipRussel,所以在单行上声明所有内容,但是这个回答是正确的,以便在循环中移动插入。此外,如果这两行是连续的,则在一行上声明并在另一行上分配是不好的做法。在一行上声明和初始化变量 –

+0

Ye @ T.S。你需要用单行初始化每个变量 – makdu

相关问题