已将MSAccess数据库迁移到SQL Server。进行了所有必要的更新,以将查询和表指向新的SQL Server。现在,当我打开一个表单时,我得到“ 操作数类型冲突datetime2与tinyint不兼容”。谁能解决这个问题?
我已经尝试过BETWEEN
,但仍然遇到相同的错误
SELECT DISTINCTROW
[Overall query].Project,
[Overall query].Complete,
[Overall query].[Lot #],
[Overall query].[Lot qty],
[Overall query].[dbo_Visual table].[Actual S/S],
[Overall query].[dbo_Visual table].[No of reject],
[Overall query].[dbo_Testing table].[Actual S/S],
[Overall query]. [dbo_Testing table].[No of reject],
[Overall query].[Lot accept ( final )],
[Overall query].[Lot reject ( final )],
[Overall query].[FQA II],
[Overall query].[FQA III]
FROM [Overall query]
WHERE ((([Overall query].Complete)>="&Forms![Status form]![Start Date]&"
AND ([Overall query].Complete)<="&Forms![Status form]![End Date]&"
AND ([Overall query].Complete)=True)
AND (([Overall query].[Lot #]) Like '%1')
AND (([Overall query].[FQA II])=False)
AND (([Overall query].[FQA III])=False))
ORDER BY [Overall query].Project, [Overall query].Complete;
我认为问题出在这种情况下
[Overall query].Complete)>="&Forms![Status form]![Start Date]&" And ([Overall query].Complete)<="&Forms![Status form]![End Date]&"
答案 0 :(得分:0)
在处理查询之前,请在设计视图(访问客户端)中打开链接表。
如果将DateTime2列看作是文本/字符串列而不是日期/时间,那么这里有两个选择:
为链接表安装+使用本机11或更高版本的驱动程序。在迁移到Access时,默认情况下,SSMA使用较新的datetime2作为默认值。但是,用于链接表的内置SQL驱动程序的标准旧版不支持datetime2,并且链接表会将这些列显示为字符串(因此您键入错误)。
如果不想安装本机11(或更高版本的ODBC)驱动程序,那么如果只说1或2个表,则可以从sql studio中将datetime2列更改为datetime列(并重新链接您的表格)。
因此,标准SQL驱动程序不支持datetime2列。您也可以在SSMA迁移期间将默认设置更改为使用datetime而不是datetime2。因此,只要花更少的工夫就可以为您解决,您必须:
a)重新迁移数据,并确保未使用datetime2。 b)使用sql studio打开并将任何datetime2更改为datetime列。 c)在工作站上安装本机11或更高版本的驱动程序,然后重新链接,因此访问现在可以正确地看到datetime2列为日期/时间。