0

したがって、私が受け取っている正確なエラーメッセージは次のとおりです。

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...
4

1 に答える 1

3

テーブルに を設定featuredIDしていませんfeaturedType

これを試して

   select @featuredID = Scope_Identity()

   insert into featuredtype 
        (loginPage, indexPage, mobilePage,featuredID) 
        values 
        (@loginPage, @indexPage, @mobilePage, @featuredID) 
于 2012-09-05T14:01:10.367 に答える