したがって、私が受け取っている正確なエラーメッセージは次のとおりです。
INSERTステートメントがFOREIGNKEY制約「FK_featuredtype_featured」と競合しました。データベース「docphin」、テーブル「dbo.featured」、列「featuredID」で競合が発生しました。ステートメントは終了されました。"
挿入ステートメントを持つspを呼び出す私のvbコードの部分は次のとおりです。
If isChanged1.Checked Then
lq.admin_RemoveFeatured(isChanged.featuredID1)
lq.admin_AddFeatured(title1.Text, text1.Text, imageURL1.Text, login1.Checked, index1.Checked, mobile1.Checked, Integer.Parse(priority1.Text))
End If
If isChanged2.Checked Then
lq.admin_RemoveFeatured(isChanged.featuredID2)
lq.admin_AddFeatured(title2.Text, text2.Text, imageURL2.Text, login2.Checked, index2.Checked, mobile2.Checked, Integer.Parse(priority2.Text))
End If
奇妙なことに、SQLサーバーでadmin_AddFeaturedを実行すると、正常に動作します。
admin_RemoveFeatured:
CREATE PROCEDURE [dbo].[admin_RemoveFeatured]
-- Add the parameters for the stored procedure here
@featuredID int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
delete from featuredtype where featuredID= @featuredID
delete from featured where featuredID= @featuredID
END
GO
admin_AddFeatured:
CREATE PROCEDURE [dbo].[admin_AddFeatured]
-- Add the parameters for the stored procedure here
@title varchar(500) ,
@text varchar(MAX),
@imageURL varchar(200),
@loginPage bit,
@indexPage bit,
@mobilePage bit,
@priority int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
insert into featured
(title,text,imageURL, priority )
values
(@title,@text,@imageURL, @priority)
insert into featuredtype
(loginPage, indexPage, mobilePage)
values
(@loginPage, @indexPage, @mobilePage)
END
GO
私はさまざまなソリューションをテストしてきましたが、ここで何が間違っているのかを実際に把握することはできません。私の唯一の考えは、icは、挿入または削除する各「機能」アイテムのIDフィールドを取得する方法に関連している可能性があるということです。そのために私はモジュールを作りました:
Public Module isChanged
Public featuredID1 As Integer
Public featuredID2 As Integer
Public featuredID3 As Integer
Public featuredID4 As Integer
Public featuredID5 As Integer
Public featuredID6 As Integer
End Module
次に、ページロードサブでspを使用し、次のようにIDを読み込みます。
Dim lq2 As New lqDFDataContext
Dim var = lq2.admin_GetFeatured().ToList()
Dim i As Integer = 1
For Each f In var
If i = 1 Then
isChanged.featuredID1 = f.featuredID
title1.Text = f.title
text1.Text = f.text
imageURL1.Text = f.imageURL
login1.Checked = f.loginPage
index1.Checked = f.indexPage
mobile1.Checked = f.mobilePage
priority1.Text = Str(f.priority)
End If
etc...