表达式中键入不匹配

时间:2013-08-27 15:04:21

标签: sql ms-access

我正在尝试执行以下查询,但它不起作用。

SELECT
      ManageStudents.StudentId,
      ManageStudents.StudentName,
      ManageStudents.SubCharges,
      ManageStudents.StartSub,
      ManageStudents.EndSub,
      ManageStudents.IssuedBook,
      ManageStudents.DateOfIssue,
      ManageStudents.DateOfReturn,
      ManageBooks.BookName,
      ManageBooks.BookId
FROM
     ( ManageStudents
INNER JOIN 
      ManageBooks 
ON    ManageStudents.IssuedBook = ManageBooks.BookId)

任何帮助将不胜感激。

编辑1:

FROM  
     (ManageStudents 
INNER JOIN 
      ManageBooks 
ON 
      Cint(ManageStudents.IssuedBook) = ManageBooks.BookId)

Cint()符合预期。非常感谢!问题已经解决了!

3 个答案:

答案 0 :(得分:3)

使用CInt()将文本字段强制转换为整数。然后,Access将允许您使用整数字段加入该转换后的字段。

如果IssuedBook是文字字段......

ON CInt(ManageStudents.IssuedBook) = ManageBooks.BookId

如果您在Access查询设计器中执行此操作,则可能会抱怨它无法在“设计视图”中显示连接。但是,您可以切换到SQL视图,修改查询,然后从那里执行它。即使无法在设计视图中显示SQL,SQL仍然可以工作。

如果文本字段包含的值不适合CInt(),则此任务会更复杂。如果发生这种情况,请向我们展示问题文本字段值的示例。

答案 1 :(得分:2)

它只有一个地方;

ON ManageStudents.IssuedBook = ManageBooks.BookId

确保这两个字段都具有兼容的数据类型。

答案 2 :(得分:1)

请尝试以下查询:

SELECT
      ManageStudents.StudentId,
      ManageStudents.StudentName,
      ManageStudents.SubCharges,
      ManageStudents.StartSub,
      ManageStudents.EndSub,
      ManageStudents.IssuedBook,
      ManageStudents.DateOfIssue,
      ManageStudents.DateOfReturn,
      ManageBooks.BookName,
      ManageBooks.BookId
FROM
      ManageStudents AS ManageStudents
LEFT JOIN 
      ManageBooks AS ManageBooks 
ON 
      ManageStudents.IssuedBook = ManageBooks.BookId

我想你在最初的例子中忘记了ManageBooks.BookId SELECT