0

データベースの保存変更に問題があります:

    coon1.ConnectionString = _
    "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & _
    "magazyn.mdb"
     sql = "INSERT INTO magazyn   (ID_Towaru,Kod_Towaru,Nazwa_Towaru,Ilość_w_magazynie,ilość_minimalna,ALERT) VALUES ('" & jakiid & "','" & kodtowaru & "','" & nazwatowaru & "','" & iloscwmagazynie & "','" & iloscminimalna & "',0)"


    Dim MyConnection As New OleDbConnection(conn)
    Dim command1 As New OleDbCommand(sql, MyConnection)

    command1.Connection.Open()
    command1.ExecuteNonQuery()
    MyConnection.Close()

table に新しいレコードを追加しようとしましmagazynたが、Access でデータベースを開いたときに、テーブルに関連する新しいレコードが表示されませんでしmagazynた。しかしViewGrid、プログラムを閉じて再度開くまで、この新しい要素が表示されます。

誰かが問題がどこにあるか知っていますか?

4

2 に答える 2

2

文字列連結ではなく、常にパラメータを使用してください。この規則は断固として従う必要があります

sql = "INSERT INTO magazyn  " + 
       "(Kod_Towaru,Nazwa_Towaru,Ilość_w_magazynie,ilość_minimalna,ALERT) " + 
       "VALUES (?, ?, ?, ?,0)"
Using MyConnection As New OleDbConnection(conn)
Using command1 As New OleDbCommand(sql, MyConnection)
    command1.Connection.Open()
    command1.Parameters.AddWithValue("@Kod", kodtowaru)
    command1.Parameters.AddWithValue("@naz", nazwatowaru)
    command1.Parameters.AddWithValue("@ilo", iloscwmagazynie)
    command1.Parameters.AddWithValue("@mini", iloscminimalna)
    command1.ExecuteNonQuery()
End Using
End Using

もちろん、これには、パラメーターの値として使用される変数が正しいデータ型であることが必要です。

于 2012-11-14T11:58:23.193 に答える
0

これをモジュール内のコーディングの下に挿入してください。

System.Data.OleDb モジュール Module1 をインポートします

Public OleCn As New OleDbConnection()

Public Function StrConnection() As String

    StrConnection = "Provider=Microsoft.Ace.Oledb.12.0; Data Source=" & My.Application.Info.DirectoryPath.ToString() & "\BackUp\Testing.Accdb;"

    Return StrConnection
End Function

この後、保存ボタンに以下のコーディングを挿入します。

Dim msg As DialogResult = MessageBox.Show("Do you want to Save this Record?", "Response", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

    If (msg = vbYes) Then

        If RequiredEntry() = True Then
            Return
        End If

        Try
            With OleCn
                If .State <> ConnectionState.Open Then
                    .ConnectionString = StrConnection()
                    .Open()
                End If
            End With
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

        Try

            Dim sSQL As String = "insert into Vendor values(@VendorCode,@VendorName,@Address,@City,@LandPhone,@Mobile,@EmailID,@Balance)"

            Dim cmd As OleDbCommand = New OleDbCommand(sSQL, OleCn)

            'VendorCode
            Dim VendorCode As OleDbParameter = New OleDbParameter("@VendorCode", OleDbType.VarChar, 10)
            VendorCode.Value = txtVendorCode.Text.ToString()
            cmd.Parameters.Add(VendorCode)

            'VendorName
            Dim VendorName As OleDbParameter = New OleDbParameter("@VendorName", OleDbType.VarChar, 25)
            VendorName.Value = txtVendorName.Text.ToString()
            cmd.Parameters.Add(VendorName)

            'Address
            Dim Address As OleDbParameter = New OleDbParameter("@Address", OleDbType.VarChar, 50)
            Address.Value = txtAddress.Text.ToString()
            cmd.Parameters.Add(Address)

            'City
            Dim City As OleDbParameter = New OleDbParameter("@City", OleDbType.VarChar, 25)
            City.Value = txtCity.Text.ToString()
            cmd.Parameters.Add(City)

            'LandPhone
            Dim LandPhone As OleDbParameter = New OleDbParameter("@LandPhone", OleDbType.VarChar, 50)
            LandPhone.Value = txtLandPhone.Text.ToString()
            cmd.Parameters.Add(LandPhone)


            'Mobile
            Dim Mobile As OleDbParameter = New OleDbParameter("@Mobile", OleDbType.VarChar, 15)
            Mobile.Value = txtMobile.Text.ToString()
            cmd.Parameters.Add(Mobile)

            'EmailID
            Dim EmailID As OleDbParameter = New OleDbParameter("@EmailID", OleDbType.VarWChar, 25)
            EmailID.Value = txtEmailID.Text.ToString()
            cmd.Parameters.Add(EmailID)


            'Balance
            Dim Balance As OleDbParameter = New OleDbParameter("@Balance", OleDbType.VarWChar, 10)
            Balance.Value = txtBalance.Text.ToString()
            cmd.Parameters.Add(Balance)

            If cmd.ExecuteNonQuery() Then

                OleCn.Close()
                MessageBox.Show("New Record is Added Successfully.", "Record Saved")
                Call clear()

            Else

                MsgBox("Record Addition Failed ", MsgBoxStyle.Critical, "Addition Failed")

                Return
            End If

        Catch ex As Exception
            MessageBox.Show(ex.Message.ToString(), "Data Error")
            Exit Sub
        End Try
    End If 
于 2013-03-27T07:50:07.627 に答える