问题如上。我目前使用的SQL代码如下:
"INSERT INTO [tblClasses/Students] (StudentID, ClassID) " & _
"SELECT StudentID FROM tblStudent WHERE Username = @StudentUser " & _
"SELECT ClassID FROM tblClasses WHERE ClassName = @ClassName ;"
当我尝试运行此查询时,收到以下错误消息:
'查询值和目标字段的数量不一样'
显然,我使用的方法不起作用,所以有人知道编写查询的正确方法吗?
您需要一个SELECT .. FROM ..语句作为源。通常您使用JOIN,但如果表格不相关,请使用笛卡尔积。
INSERT INTO [tblClasses/Students] (StudentID, ClassID)
SELECT tblStudent.StudentID, tblClasses.ClassID
FROM tblStudent, tblClasses
WHERE tblStudent.Username = @StudentUser
AND tblClasses.ClassName = @ClassName
不确定这是否会创建重复记录。如有必要,请使用SELECT DISTINCT
。
How to use SQL parameters in VB.Net
要在Access中测试查询,请使用[StudentUser]
和[ClassName]
作为参数,并在要求时提供值。
出于某种原因,除非明确指定为参数,否则Access会跳过[ClassName]
。用这个:
PARAMETERS StudentUser Text ( 255 ), ClassName Text ( 255 );
INSERT INTO [tblClasses/Students] ( StudentID, ClassID )
SELECT tblStudent.StudentID, tblClasses.ClassID
FROM tblStudent, tblClasses
WHERE tblStudent.Username = [StudentUser]
AND tblClasses.ClassName = [ClassName];