ado连接sqlserver2000后的日期查询.(100分)

  • 主题发起人 主题发起人 jbas
  • 开始时间 开始时间
J

jbas

Unregistered / Unconfirmed
GUEST, unregistred user!
这样总是查不到数据库中的数据.怎回事?
sql.Add('select YSJLRQ,YSJLBZ from YSJLBT where YSJLRQ=:mrq');
parameters.ParamByName('mrq').Value:=ARQ;//ARQ在delphi中格式TDate;YSJLRQ在sqlserver中为datetime
open;
with result do
.....
数据库中有日期为YSJLRQ=2002-12-12的数据.
sql.Add('select YSJLRQ,YSJLBZ from YSJLBT where YSJLRQ=2002-12-12');也不行.
 
第一种方式应该可以,我想是你的参数有问题!
 
参数没有问题,我换了也一样。
难道是ado的Bug,sqlserver查询分析器中没有问题了.?
给个答案了.
 
修改为下面的语句是试看
sql.Add('select YSJLRQ,YSJLBZ from YSJLBT where YSJLRQ like:mrq');
parameters.ParamByName('mrq').Value:='%'+ARQ +'%';
open;
 
这样可以了,但不知why?
CREATE PROCEDURE [dbo].[ShowYsJlBT]
@RQ datetime,@BZ char(4)
AS
select YSJLRQ,YSJLBZ FROM YSJLBT where YSJLBZ=@BZ and DATEDIFF(dd,YSJLRQ,@RQ)=0
GO
 
改为:
sql.Add('select YSJLRQ,YSJLBZ from YSJLBT where YSJLRQ =:mrq');
parameters.ParamByName('mrq').Value:=''''+ARQ +'''';
open;
或(提倡用下面的)

sql.Add('select YSJLRQ,YSJLBZ from YSJLBT where YSJLRQ =:mrq');
parameters.ParamByName('mrq').AsDateTime:=ARQ;
open;

 
设计日期格式的最好用
AsDateTime来添加参数值而不要用value
建议你编程序用
AsString
AsInteger
AsDateTime
....
等等显示的告诉数据库参数格式
 
谢谢大家。
我的这样写不行。
parameters.ParamByName('RQ').AsDateTime:=ARQ;
提示没有AsDateTime这个属性.为什么?
 
只能:
parameters.ParamByName('rq').DataType:=ftdatetime
why?
 
我的是D6,一直不能写成你说的那样,告诉我为什么吧,谢谢了。
 
试试下面的语句,access中日期查询是这样的:
select YSJLRQ,YSJLBZ from YSJLBT where YSJLRQ=#2002-12-12#
 
ado连接时的参数只有 .value ,哪有什么.asstring,.asdatetime 啊,only you 老兄说的
是bde下的使用方法。
你的第二种应该这样:
sql.Add('select YSJLRQ,YSJLBZ from YSJLBT where YSJLRQ='+quotedstr(2002-12-12));
至于第一种情况:我觉得也没什么问题啊,是不是你参数赋值的问题
 
把ARQ在delphi中格式变成TDateTime
 
我一般把日期转化成字符串来处理!
 
谢各位了,如有补充,非常希望告诉我。
 
后退
顶部