商业银行管理罗斯答案:SQL语句问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/16 16:04:32
T1和T2是从文本框中读取的数据,“时间”是数据库中的一个字段。
1、我在ASP中使用:
SQL="Select * From Table1 Where 时间 Between #"&CDate(T1)&"# And #"&Cdate(T2)&"# """是正确的,可后面的“"”为什么多了两个,少了这两个就出错,为什么?
2、我在VB中使用上述语句总是出错,无论结尾使用几个“"”。怎不办?
3、在下面的语句中,显示DateValue不可识别,可这时VB函数啊?我想把形如2006-6-5 12:30:10的日期时间中的日期分离出来,与T1、T2比较,但为什么出错啊?
SQL="Select * From table Where DateValue(日期时间) Between #"Cdate(T1)"# And #"&CDate(T2)&"# ""

问题出在数据库是SQL Server,大家谈得都没错,只是那是针对Access数据库的,SQL Server数据库的SQL语句的构建格式和所支持的VB函数,与Access的有所差别,例如:1、时间日期字段,在Where子句中,SQL Server 用"2006-6-8",而Access用#2006-6-8# 2、VB以及Access可以使用函数DateValue,SQL Server的没有这个函数。
问题解决如下:
Dim P, Q As String
P = CDate(T1):Q = CDate(T2)
PY = Year(P):QY = Year(Q)
PM = Month(P):QM = Month(Q)
PD = Day(P):QD = Day(Q)
SQL = "Select * From num where (DatePart(year,日期时间) Between " & PY & " And " & QY & ") And (DatePart(month,日期时间) Between " & PM & " And " & QM & ") And (DatePart(day,日期时间) Between " & PD & " And " & QD & ") "

可以看出:1、DatePart可以用于SQL Server数据库,但格式与Access的不同。2、" & PY & ",在Access中可用' & PY & ',但SQL Server只能用"".

更简便的写法:
SQL = "Select * From num where (Year(日期时间) Between " & PY & " And " & QY & ") And (Month(日期时间) Between " & PM & " And " & QM & ") And (Day(日期时间) Between " & PD & " And " & QD & ") "

.RecordSource = "select * from 销售记录 where 时间 between '" & Format(DTPicker1, "YYYY-MM-DD") & "' and '" & Format(DTPicker2, "YYYY-MM-DD") & "'"
希望给你启发
你的程序里变量去少'

1、在vb字符串中,两个双引号表示一个双引号。就像C语言的字符串中“\"”表示“"”。
2、应该把那两个双引号去掉,即
SQL="Select * From Table1 Where 时间 Between #"&CDate(T1)&"# And #"&Cdate(T2)&"#"
其实也应该在第一个问题中把这两个双引号去掉,那样SQL语句才正确。

To edward_xintra,日期应该用“#”标记

在ASP中
SQL="Select * From Table1 Where 时间 Between #"&CDate(T1)&"# And #"&Cdate(T2)&"# """
这句字符串最后会多一个"
但是改为
SQL="Select * From Table1 Where 时间 Between #" & CDate(T1) & "# And #" & Cdate(T2) & "# "是没有错的。

----------------------------------------------------------------

在VB中把 & 和变量之间一定要空一格,否则会认为是一个词。
所以应该改为:
SQL="Select * From Table1 Where 时间 Between #" & CDate(T1) & "# And #" & Cdate(T2) & "# "
就行了。