2016-06-15 15 views
1

私はTableAdapterクエリ構成ウィザードを使用しています。次のステートメントに示すように、あるテーブルからデータを選択し、別のテーブルに挿入したいと思います。あるテーブルから行データを選択し、TableAdapterを使用して別のテーブルに挿入します。

SELECT a.StudentID FROM [dbo].[Student] AS a WHERE [Email] = @Email; 

INSERT INTO [dbo].[Registration] ([StudentID], [UniformOptionID], [Cost]) 
VALUES (a.StudentID, @Param1, @Param2); 

私は自分のアプリケーションに機能を呼び出すと、エラーメッセージが要求されます:

Error message: The multi-part identifier "a.StudentID" could not be bound

それができないのはなぜ?

+0

のようにSELECTとINSERTを使用する方法について、この記事をチェックしてください:https://technet.microsoft.com/en-in/library/ms188263(v=sql.105).aspx – Swapnil

答えて

2
INSERT INTO [dbo].[registration] 
     ([studentid], 
     [uniformoptionid], 
     [cost]) 
SELECT a.studentid, 
    @Param1, 
    @Param2 
FROM [dbo].[student] AS a 
WHERE [email] = @Email; 
+0

偉大な答えを、それを魅力のように働く。 – iamhx

1

これを試してみてください:

INSERT INTO [dbo].[Registration] ([StudentID], [UniformOptionID], [Cost]) 
SELECT a.StudentID, @Param1, @Param2 FROM [dbo].[Student] AS a WHERE [Email] = @Email; 

すなわち、あなたのテーブルに値を挿入するためにselectステートメントを使用することができます。 @Param1, @Param2は、selectステートメントで直接提供することができます。

+0

偉大な答え。作品も。 – iamhx

2

Insertステートメントにa.StudentIDを使用することはできません。変数を宣言してから使用することができます。この

Declare @studentID int 

SELECT @studentID=a.StudentID FROM [dbo].[Student] AS a WHERE [Email] = @Email; 

INSERT INTO [dbo].[Registration] ([StudentID], [UniformOptionID], [Cost]) 
VALUES (@studentID, @Param1, @Param2); 
+0

My TableAdapter関数には、自分のEmailのパラメータを入力するオプションがありません。 – iamhx

+0

TableAdapter関数コードを共有してください。私はより理解できるように。 – Sam

+0

'RegistrationTableAdapter1.RegisterCourse(Stringとしてのコスト、文字列としてのコスト、文字列としての電子メール)' 'コストとしての文字列'は10進数でなければなりません。私は理由は分かりませんが、何の誤りもありません。 – iamhx

関連する問題