DAO/链接表/ADO/ADP
VBA与T-SQL之间的函数比较;SQL Server的SQL语句如何在ACCESS中
2009-04-15 08:48:13

Visual Basic for Applications 与 SQL Server Transact-SQL 之间的函数比较 (ADP) 注释  本主题中的信息仅适用于 Microsoft access 项目 (.adp)。

下表比较了 Microsoft Visual Basic for Applications (VBA) 和 Microsoft SQL Server Transact-SQL 中的常用函数。有关 Transact-SQL 标量函数的详细信息,请参阅 SQL Server 文档。

注意   “升迁向导”将下列 VBA 函数(用于表有效性规则、字段验证和默认情况下)转换为对等的 Transact-SQL 函数。

 

字符串函数

VBA 函数       Transact-SQL                标量函数  ------------------------------------------------ Asc(x)         ASCII(x)  Chr$(x)        CHAR(x)  Lcase$(x)      LCASE(x)                 LOWER(x) Len(x)         DATALENGTH(x)  Ltrim$( x)     LTRIM(x)  Mid$(x,y,z)    SUBSTRING(x,y,z)  Right$(x,y)    RIGHT(x,y)  Rtrim$(x)      RTRIM(x)  Space$(x)      SPACE(x)  Str$(x)        STR(x)  Ucase$( x)     UCASE(x)                 UPPER(x)  

 

转换函数

VBA 函数       Transact-SQL                标量函数  ------------------------------------------------ Ccur(x)        CONVERT(money,x)  Cdbl(x)        CONVERT(float,x)  Cint(x)        CONVERT(smallint,x)  Clng(x)        CONVERT(int,x)  Csng(x)        CONVERT(real,x)  Cstr(x)        CONVERT(varchar,x)  Cvdate(x)      CONVERT(datetime,x) 

 

 

日期函数

VBA 函数                              Transact-SQL                                       标量函数  ------------------------------------------------ Date(x)                               CONVERT(DATETIME,CONVERT(varchar,GETDATE(x)))  Dateadd("<access datepart>",x,y)      DATEADD(<SQL Server datepart>, x, y)  Datediff("<access datepart>",x,y)     DATEDIFF(<SQL Server datepart>, x, y)  Datepart("<access datepart>", x)      DATEPART(<SQL Server datepart>, x)  Day(x)                                DATEPART(dd,x)  Hour(x)                               DATEPART(hh,x)  Minute(x)                             DATEPART(mi,x)  Month(x)                              DATEPART(mm,x)  Now(x)                                GETDATE(x)  Second(x)                             DATEPART(ss,x)  Weekday(x)                            DATEPART(dw,x)  Year(x)                               DATEPART(yy,x) 

 

 

数学函数 VBA 函数          Transact-SQL                   标量函数  ------------------------------------------------ Int(x)            FLOOR(x)  Sgn(x)            SIGN(x)  Rnd(x)            ROUND(x) 

 整理的其他函数 VBA 函数          Transact-SQL                   标量函数  ------------------------------------------------ replace           replace mid               substring nz                isnull iif               case ... when ... then ... switch            case ... when ... then ...

 

问题:  

  请问在access中不支持标准SQL语句的SELECT CASE 语句吗? 比如:
select (case 小组名 WHEN '01' THEN 'FA' WHEN '02' THEN 'PRESS' END) AS 小组名 from deptinfo 
老是报错说操作符丢失,应该可以的啊!哪位高手指点指点!

 

 

回答:  

  SELECT CASE 不是标准的 SQL 语句,是 T-SQL ,MS SQL SERVER 的特例而已 在纯 access 环境可以将
select (case 小组名 WHEN '01' THEN 'FA' WHEN '02' THEN 'PRESS' END) AS 小组名 from deptinfo 
改为
select switch(小组名='01','FA',小组名='02','PRESS') from deptinfo
当然,你也可以用 IIF ,
select iif(小组名='01','FA','PRESS') from deptinfo

 

但是在  ASP + MDB 或者 VB + MDB 这种环境你可以用

select 'FA' from deptinfo where 小组名='01' UNION ALL select 'PRESS' from deptinfo where 小组名='02'

 

来完成