2016-01-05 2 views
0
Imports System.Data 
Imports System.Data.OleDb 

Public Class form7 
    Dim inc As Integer 
    Dim con As New OleDb.OleDbConnection 
    Dim cmd As OleDbCommand 
    Dim dbprovider As String 
    Dim dbsource As String 
    Dim str As String 
    Dim ds As New DataSet 
    Dim da As OleDb.OleDbDataAdapter 
    Dim TotalRows As Integer 
    Dim ID_Number As Integer 

    Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     con = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Bank\db1.accdb ") 
     con.Open() 
     Dim cmd As New OleDbCommand("SELECT COUNT(*) FROM accountsTable", con) 
     Dim totalRows As Long = CInt(cmd.ExecuteScalar()) 
     cmd.ExecuteNonQuery() 
     TextBox1.Text = totalRows + 1000 
    End Sub 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
     'Form5.Show() 

     dbprovider = "Provider=Microsoft.ACE.OLEDB.12.0; dbsource=Data Source=D:\Bank\db1.accdb" 
     MsgBox("Database is now open") 

     str = "Insert into accountsTable (Account_Number, First_Name, Midle_Name, Last_Name, Date_of_birth, Occupation, Age, Marital_Status, Address, City, Country, State, Account_Type, Pin_Code, Mobile_Number, Email_ID, Opening_Balance) values ('" & 
      TextBox1.Text & "','" & 
      TextBox2.Text & "','" & 
      TextBox3.Text & "','" & 
      TextBox4.Text & "','" & 
      DateTimePicker1.Value & "','" & 
      TextBox6.Text & "','" & 
      TextBox7.Text & "','" & 
      TextBox8.Text & "','" & 
      TextBox9.Text & "','" & 
      ComboBox1.Text & "','" & 
      ComboBox2.Text & "','" & 
      ComboBox3.Text & "','" & 
      ComboBox4.Text & "','" & 
      TextBox10.Text & "','" & 
      TextBox11.Text & "','" & 
      TextBox12.Text & "','" & 
      TextBox13.Text & "','" & "')" 

     cmd = New OleDb.OleDbCommand(str, con) 
     cmd.ExecuteNonQuery() 
     MsgBox("Record is inserted") 
     con.Close() 

    End Sub 

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
     TextBox1.Text = "" 
     TextBox2.Text = "" 
     TextBox3.Text = "" 
     TextBox4.Text = "" 
     DateTimePicker1.Value = "" 
     TextBox6.Text = "" 
     TextBox7.Text = "" 
     TextBox8.Text = "" 
     TextBox9.Text = "" 
     ComboBox1.Text = "" 
     ComboBox2.Text = "" 
     ComboBox3.Text = "" 
     ComboBox4.Text = "" 
     TextBox10.Text = "" 
     TextBox11.Text = "" 
     TextBox12.Text = "" 
     TextBox13.Text = "" 

    End Sub 

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click 
     Me.Close() 
     Form3.Show() 
    End Sub 

End Class 

Ошибка происходит здесь:«Количество значений запросов и полей назначения не совпадают» ошибка INSERT

cmd = New OleDb.OleDbCommand(str, con) 
cmd.ExecuteNonQuery() ' <-- error here 
MsgBox("Record is inserted") 
con.Close() 

ответ

0

У вас есть 17 столбцов в списке столбцов, но вы добавляете дополнительные (восемнадцатый) значение строки нулевой длины на конце списка значений:

TextBox13.Text & "','" & "')" 
        ^^^^^^^^ 

Вы действительно должны использовать параметризованный запрос, что-то больше, как это:

str = 
     "Insert into accountsTable (Account_Number, First_Name, Midle_Name, Last_Name, Date_of_birth, Occupation, Age, Marital_Status, Address, City, Country, State, Account_Type, Pin_Code, Mobile_Number, Email_ID, Opening_Balance) " & 
     "values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)" 
cmd = New OleDb.OleDbCommand(str, con) 
cmd.Parameters.AddWithValue("?", TextBox1.Text) 
cmd.Parameters.AddWithValue("?", TextBox2.Text) 
cmd.Parameters.AddWithValue("?", TextBox3.Text) 
cmd.Parameters.AddWithValue("?", TextBox4.Text) 
cmd.Parameters.AddWithValue("?", DateTimePicker1.Value) 
cmd.Parameters.AddWithValue("?", TextBox6.Text) 
cmd.Parameters.AddWithValue("?", TextBox7.Text) 
cmd.Parameters.AddWithValue("?", TextBox8.Text) 
cmd.Parameters.AddWithValue("?", TextBox9.Text) 
cmd.Parameters.AddWithValue("?", ComboBox1.Text) 
cmd.Parameters.AddWithValue("?", ComboBox2.Text) 
cmd.Parameters.AddWithValue("?", ComboBox3.Text) 
cmd.Parameters.AddWithValue("?", ComboBox4.Text) 
cmd.Parameters.AddWithValue("?", TextBox10.Text) 
cmd.Parameters.AddWithValue("?", TextBox11.Text) 
cmd.Parameters.AddWithValue("?", TextBox12.Text) 
cmd.Parameters.AddWithValue("?", TextBox13.Text) 
cmd.ExecuteNonQuery() 

Обратите внимание, что если некоторые из этих элементов управления TextBox могут быть пустыми, то вы должны проверить длину их .Text свойств и, возможно, ввести нулевое значение вместо этого. Например, для «Opening_Balance» вам может понадобиться, чтобы сделать что-то вроде

If TextBox13.Text.Length = 0 Then 
    cmd.Parameters.AddWithValue("?", DBNull.Value) 
Else 
    cmd.Parameters.AddWithValue("?", Convert.ToDecimal(TextBox13.Text)) 
End If 
+0

Уважаемый Горд, я добавляю это один, но он показывает мне (несоответствие типов данных в выражении критериев.) Вместо того, чтобы показать мне предыдущую задачу. мог бы помочь мне, пожалуйста. –

+0

@AbdulbasitMohamed - Я обновил свой ответ. –