0

私のコードはエラーを返します

PRIMARY KEY 制約 'PK_tblOfficeEquipmentProfile' に違反しています。オブジェクト 'tblOfficeEquipmentProfile' に重複するキーを挿入できません。

これは私のコードです:

Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click
    Dim sqlconn As New SqlClient.SqlConnection
    sqlconn.ConnectionString = "server = SKPI-APPS1;" & _
    "Database = EOEMS;integrated security=true"

    Dim myCommand As SqlCommand


    'parametrized update sql command
    Try
        sqlconn.Open()

        myCommand = New SqlCommand("UPDATE tblOfficeEquipmentProfile SET OE_Category = @OE_Category, OE_SubCategory = @OE_SubCategory, OE_ID = @OE_ID, OE_Name = @OE_Name, OE_User = @OE_User, OE_Brand = @OE_Brand, OE_Model =@OE_Model, OE_Specs =@OE_Specs, OE_SerialNo =@OE_SerialNo, OE_PropertyNo = @OE_PropertyNo, OE_MacAddress = @OE_MacAddress, OE_Static_IP = @OE_Static_IP, OE_Vendor = @OE_Vendor, OE_PurchaseDate =@OE_PurchaseDate, OE_WarrantyInclusiveYear=@OE_WarrantyInclusiveYear, OE_WarrantyStatus=@OE_WarrantyStatus,OE_Status=@OE_Status,OE_Dept_Code=@OE_Dept_Code,OE_Location_Code=@OE_Location_Code,OE_Remarks=@OE_Remarks", sqlconn)
        myCommand.Parameters.Add("@OE_Category", cmbCategory.Text)
        myCommand.Parameters.Add("@OE_SubCategory", cmbSubCategory.Text)
        myCommand.Parameters.Add("@OE_ID", txtOEID.Text)
        myCommand.Parameters.Add("@OE_Name", txtName.Text)
        myCommand.Parameters.Add("@OE_User", txtUser.Text)
        myCommand.Parameters.Add("@OE_Brand", cmbBrand.Text)
        myCommand.Parameters.Add("@OE_Model", cmbModel.Text)
        myCommand.Parameters.Add("@OE_Specs", txtSpecs.Text)
        myCommand.Parameters.Add("@OE_SerialNo", txtSerialNo.Text)
        myCommand.Parameters.Add("@OE_PropertyNo", txtPropertyNo.Text)
        myCommand.Parameters.Add("@OE_MacAddress", txtMacAddress.Text)
        myCommand.Parameters.Add("@OE_Static_IP", txtStaticIp.Text)
        myCommand.Parameters.Add("@OE_Vendor", cmbVendor.Text)
        myCommand.Parameters.Add("@OE_PurchaseDate", txtPurchaseDate.Text)
        myCommand.Parameters.Add("@OE_WarrantyInclusiveYear", cmbWarrantyInclusiveYear.Text)
        myCommand.Parameters.Add("@OE_WarrantyStatus", txtWarrantyStatus.Text)
        myCommand.Parameters.Add("@OE_Status", txtStatus.Text)
        myCommand.Parameters.Add("@OE_Dept_Code", cmbDeptCode.Text)
        myCommand.Parameters.Add("@OE_Location_Code", cmbLocationCode.Text)
        myCommand.Parameters.Add("@OE_Remarks", cmbRemarks.Text)

        myCommand.ExecuteNonQuery()
    Catch ex As Exception
        MsgBox(ex.Message)
        MsgBox("Successfully Updated Records")
    End Try
End Sub
4

3 に答える 3

2

テーブル tblOfficeEquipmentProfile の主キーを確認します

プライマリ フィールドに基づいて、残りのフィールドを更新できます。つまり、プライマリ キー フィールドの更新を削除します。

于 2013-04-11T06:22:24.773 に答える
1

プライマリ フィールド OE_ID に基づいてどこで使用されているかを確認します

myCommand = New SqlCommand("UPDATE tblOfficeEquipmentProfile SET OE_Category = @OE_Category, OE_SubCategory = @OE_SubCategory, OE_Name = @OE_Name, OE_User = @OE_User, OE_Brand = @OE_Brand, OE_Model =@OE_Model, OE_Specs =@OE_Specs, OE_SerialNo =@OE_SerialNo, OE_Proty なし= @OE_PropertyNo, OE_MacAddress = @OE_MacAddress, OE_Static_IP = @OE_Static_IP, OE_Vendor = @OE_Vendor, OE_PurchaseDate =@OE_PurchaseDate, OE_WarrantyInclusiveYear=@OE_WarrantyInclusiveYear, OE_WarrantyStatus=@OE_WarrantyStatus,OE_Status=@OE_Status,OE_Dept_Code=@OE_Dept_Code,OE_Location_Code=@OE_Location_Code,OE_Remarks =@OE_Remarks

ここで OE_ID = @OE_ID", sqlconn)

   myCommand.Parameters.Add("@OE_Category", cmbCategory.Text)
    myCommand.Parameters.Add("@OE_SubCategory", cmbSubCategory.Text)
    myCommand.Parameters.Add("@OE_ID", txtOEID.Text)
    myCommand.Parameters.Add("@OE_Name", txtName.Text)
    myCommand.Parameters.Add("@OE_User", txtUser.Text)
    myCommand.Parameters.Add("@OE_Brand", cmbBrand.Text)
    myCommand.Parameters.Add("@OE_Model", cmbModel.Text)
    myCommand.Parameters.Add("@OE_Specs", txtSpecs.Text)
    myCommand.Parameters.Add("@OE_SerialNo", txtSerialNo.Text)
    myCommand.Parameters.Add("@OE_PropertyNo", txtPropertyNo.Text)
    myCommand.Parameters.Add("@OE_MacAddress", txtMacAddress.Text)
    myCommand.Parameters.Add("@OE_Static_IP", txtStaticIp.Text)
    myCommand.Parameters.Add("@OE_Vendor", cmbVendor.Text)
    myCommand.Parameters.Add("@OE_PurchaseDate", txtPurchaseDate.Text)
    myCommand.Parameters.Add("@OE_WarrantyInclusiveYear", cmbWarrantyInclusiveYear.Text)
    myCommand.Parameters.Add("@OE_WarrantyStatus", txtWarrantyStatus.Text)
    myCommand.Parameters.Add("@OE_Status", txtStatus.Text)
    myCommand.Parameters.Add("@OE_Dept_Code", cmbDeptCode.Text)
    myCommand.Parameters.Add("@OE_Location_Code", cmbLocationCode.Text)
    myCommand.Parameters.Add("@OE_Remarks", cmbRemarks.Text)
于 2013-04-11T07:16:08.867 に答える
1

こんにちは、このクエリはテーブル内のすべてのデータを更新するため、一意の ID がある場合、同一の ID で更新することはできません。このクエリに Where ステートメントを追加する必要があると思います。

于 2013-04-11T06:17:45.630 に答える