2015-09-19 122 views
-2

我调用存储过程与ADP Access 2003中日期时间类型的参数存储过程日期时间参数,我得到一个错误的结构执行MS SQL服务器从Access 2003

附近有语法错误 - '

我试过不同的日期格式,但是错误与其他结构重复相同的类型。

Exec的从VBA

Me.items.Form.RecordSource = "exec usp_pct_ItemForTree " & cur & "," & usl & ",-1,1,'" & Nz(fltr, "") & "'" & "," & Abs(Nz(inet, 0)) & "," & idb & "," & DueDate 

后串连看起来

"exec usp_pct_ItemForTree 0,6,-1,1,'',0,5425157,2015-09-22" 

存储过程

alter procedure [dbo].[usp_pct_ItemForTree] 
    @group_id int = 21, 
    @instoreonly int = 1, 
    @idbrand int = -1, 
    @hotim bit = 1, 
    @fltr varchar(150) = '', 
    @inet bit = 0, 
    @idbill int = null, 
    @dueDate datetime = null 
+0

你能告诉我们什么价值'.RecordSource'看起来像所有的串连后? –

+0

'.RecordSource'的值是未知的,因为错误'语法错误'我得到之前分配。 – anatol

回答

0

古斯塔夫感谢,我找到解决方法。它只需要设置varchar类型的参数。不是日期或日期时间。

alter procedure [dbo].[usp_pct_ItemForTree] 
@group_id int = 21, 
@instoreonly int = 1, 
@idbrand int = -1, 
@hotim bit = 1, 
@fltr varchar(150) = '', 
@inet bit = 0, 
@idbill int = null, 
@dueDate varchar(10) = '' 

和报价

0

最有可能你错过了引号包裹在T-SQL日期/时间表达式:

Me.items.Form.RecordSource = "exec usp_pct_ItemForTree " & cur & "," & usl & ",-1,1,'" & Nz(fltr, "") & "'" & "," & Abs(Nz(inet, 0)) & "," & idb & ",'" & DueDate & "'" 

使用格式T-SQL:

Me.items.Form.RecordSource = "exec usp_pct_ItemForTree " & cur & "," & usl & ",-1,1,'" & Nz(fltr, "") & "'" & "," & Abs(Nz(inet, 0)) & "," & idb & ",'" & Format(DueDate, "yyyy-mm-dd") & "'" 

使用格式访问:

Me.items.Form.RecordSource = "exec usp_pct_ItemForTree " & cur & "," & usl & ",-1,1,'" & Nz(fltr, "") & "'" & "," & Abs(Nz(inet, 0)) & "," & idb & ",#" & Format(DueDate, "yyyy-mm-dd") & "#" 
+0

我之前完成了这个 – anatol

+0

然后强制所示的格式,因为'2015-09-22' _as is_将不起作用,因为T-SQL中的日期表达式必须用单引号括起来。 – Gustav

+0

谢谢,但它不起作用 – anatol