2017-11-14 15 views
-3

を更新することはできません私は、データベース内のデータを編集したいが、私は行の任意の値を編集しようとした場合、エラーメッセージは、ID列

は、ID列「のProductID」

を更新できません後に登場データを更新しようとしています。私は初心者なので、どこにバグがあるのか​​分かりません。

<asp:SqlDataSource ID="Adventure" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConStrAdventure %>" 
    DeleteCommand="DELETE FROM [Production].[Product] WHERE [ProductID] = @ProductID" 
    InsertCommand="INSERT INTO [Production].[Product] ([ProductID], [Name], [ProductNumber], [MakeFlag], [FinishedGoodFlag], [Color], [SafetyStockLevel], [ReorderPoint], [StandardCost], [ListPrice], [Size], [SizeUnitMeasureCode], [WeightUnitMeasureCode], [Weight], [DaysToManufacture], [ProductLine], [Class], [Style], [ProductSubcategoryID], [ProductModelID], [SellStartDate], [SellEndDate], [DiscontinuedDate], [rowguid], [ModifiedDate]) VALUES (@ProductID, @Name, @ProductNumber, @MakeFlag, @FinishedGoodFlag, @Color, @SafetyStockLevel, @ReorderPoint, @StandardCost, @ListPrice, @Size, @SizeUnitMeasureCode, @WeightUnitMeasureCode, @Weight, @DaysToManufacture, @ProductLine, @Class, @Style, @ProductSubcategoryID, @ProductModelID, @SellStartDate, @SellEndDate, @DiscontinuedDate, @rowguid, @ModifiedDate) " SelectCommand="SELECT * FROM [Production].[Product]" 
    UpdateCommand="UPDATE [Production].[Product] SET [ProductID] = @ProductID,[Name] = @Name, [ProductNumber] = @ProductNumber, [MakeFlag] = @MakeFlag, [FinishedGoodsFlag] = @FinishedGoodsFlag, [Color] = @Color, [SafetyStockLevel] = @SafetyStockLevel, [ReorderPoint] = @ReorderPoint, [StandardCost] = @StandardCost, [ListPrice] = @ListPrice, [Size] = @Size, [SizeUnitMeasureCode] = @SizeUnitMeasureCode, [WeightUnitMeasureCode] = @WeightUnitMeasureCode, [Weight] = @Weight, [DaysToManufacture] = @DaysToManufacture, [ProductLine] = @ProductLine, [Class] = @Class, [Style] = @Style, [ProductSubcategoryID] = @ProductSubcategoryID, [ProductModelID] = @ProductModelID, [SellStartDate] = @SellStartDate, [SellEndDate] = @SellEndDate, [DiscontinuedDate] = @DiscontinuedDate, [rowguid] = @rowguid, [ModifiedDate] = @ModifiedDate WHERE [ProductID] = @ProductID"> 

The second part of the code here as image.

任意のアイデアを事前にありがとうございます。あなたのupdateコマンドが開始

+3

私はこのコードの壁を理解できません。少なくとも読みやすいようにコードを書式化してください。エラーメッセージから判断すると、ID列を更新しているように見えます。あなたはそれをしたくないはずです。 – HoneyBadger

+2

これを見てください:https://stackoverflow.com/questions/3947453/update-values-in-identity-column – Sankar

+1

[ID列の値を更新](https://stackoverflow.com/questions/3947453/)の可能な複製identity-column内のupdate-values) – Sankar

答えて

1

UpdateCommand="UPDATE [Production].[Product] SET [ProductID] = @ProductID,[Name],..... 

エラーメッセージは、それはあなたの主キーである 「アイデンティティ列」 、だとして、あなたは[ProductID]を更新することはできませんあなたを語っています。主キーを更新することはできません。それがレコードを識別します。ちょうどUpdateCommandの列/データのリストから[ProductID] = @ProductIDをドロップしてください。

+0

それは動作しません。エラーメッセージが「nvarcharデータ型からdatetimeデータ型への変換により範囲外の値になった」 ステートメントが終了しました。 – Rob

+0

@Rob「うまくいきません」:いいえ、新しいエラーメッセージが表示されました。そのエラーを解決して、もう一度やり直す必要があります。解決すべき多くのエラーがあるかもしれません。また、自分のプライマリキーを更新しようとしている理由をあなた自身に聞いてください。既存の価値を何に置き換えようとしていますか? – HoneyBadger

+0

@Robの場合、別のエラーメッセージが一般的に進行していることを理解する必要があります。問題を解決しましたが、別のエラーメッセージを発見しました。新しいエラーメッセージは、日付列の1つに指定した値が有効な日付ではないことを示しています。 – OTTA