delphi中的问题两则(100分)

  • 主题发起人 主题发起人 hgzy
  • 开始时间 开始时间
H

hgzy

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好!
本人最近遇到两个问题不知如何是好,肯请各位相助:
1.请问怎么从数据库中取出日期类型数据并计算,例如从eqts.mod(access的库)中的csdate字段(日期类型)中取出一条指定的记录,并和另一条指定的记录进行计算。(SQL语句怎么写?)
2.如何能让form的大小随着我画的线的长度(横向)变长而变宽(无限制)?

zy
E-MAIL:keep@371.net
 
一.选取数据
QUERY1.SQL.CLEAR;
QUERY1.SQL.ADD('select CSDATE FROM MOD WHERE ... ');
QUERY1.EXECSQL;
二.使用数据
DATEVAL := QUERY1.FIELDBYNAME('CSDATE').ASDATE;
 
回wuyi:
在选取数据时WHERE后面很重要,因为我曾写过
[SELECT CSDATE FORM EQTS WHERE CSDATE=1997-10-03 ]
库内有这条记录,但就是查不出来.
补充一下:怎样按照记录号进行选取数据?
我试了一下你说的"使用数据"
但是DELPHI总是提示[Undeclared identifier: 'ASDATE']
请指点!
zy
 
>[SELECT CSDATE FORM EQTS WHERE CSDATE=1997-10-03 ]
>库内有这条记录,但就是查不出来.
应该用[SELECT CSDATE FORM EQTS WHERE CSDATE=#1997-10-03# ]
>我试了一下你说的"使用数据" 但是DELPHI总是提示
>[Undeclared identifier: 'ASDATE']
应该用 AsString
> 2.如何能让form的大小随着我画的线的长度(横向)变长而变宽(无限制)?
form.width:=line.left+line.width;
 
补充一点:
>我试了一下你说的"使用数据" 但是DELPHI总是提示
>[Undeclared identifier: 'ASDATE']
应该用 AsString,如果你要获得日期类型: 再用StrToDate
 
1.查询时日期应加引号, 且日期格式应与你的机器设置相同,否则会因格式不对而出错.
2.取日期数据应用 AsDateTime;
3.如果取回的数据记录有多条, 应用QUERY1.FIRST定位到第一条, NEXT 到下一条.
EOF测试结束.
 
多谢大家的指点!
现在问题都差不多啦!,但是那个查询日期的问题我按照以上格式都试过还没解决!
>>[SELECT CSDATE FORM EQTS WHERE CSDATE=#1997-10-03# ]
>DELPHI提示:Invalid use of keyword
 
QUERY1.SQL.ADD('select CSDATE FROM MOD WHERE csdate="1997/10/03"')
 

谢谢回复!试过SQL语句,但是DELPHI总是提示:(genaral SQL error.) 标准表达式中数据类型不匹配.
>-------------------------------------------------------------
>QUERY1.SQL.ADD('select CSDATE FROM MOD WHERE csdate="1997/10/03"')
>-------------------------------------------------------------
望指点!
 
datefomat in sql :
'mm/dd/yyyy'
 
回nickname:
多谢指点!但是还是不行.
>>'mm/dd/yyyy'
>我试了一下,DELPHI没有出错,但那条WHERE=MM/DD/YYYY还是没起作用!
zy
 
pls writedo
wn ur whole sql sentence.
 
完整句子为:
>> Add('SELECT * FROM eqts');
>> Add('WHERE csdate=02/11/1999');
 
Add('SELECT * FROM eqts');
Add('WHERE csdate='''+'02/11/1999'+'''');
 
SORRY! 你的这个SQL语句我不大懂(能否解释一下!THANK YOU),
>>Add('SELECT * FROM eqts');
>>Add('WHERE csdate='''+'02/11/1999'+'''');
运行了几次,结果出现了一个错误对话框!
>>[标准表达式中类型不匹配].
zy
 
试一试:
Add('SELECT * FROM eqts');
Add('WHERE csdate="02/11/1999" ');
 
回复fx:
试了一下,还是不行!(还是老错误:标准表达式中类型不匹配)
>> Add('SELECT * FROM eqts');
>> Add('WHERE csdate="02/11/1999" ');
 
定义QUERY的查询参数
SQL这样写
“SELECT * FROM EQTS WHERE CSDATE=:MYDATE”
程序中给日期型参数MYDATE副职
QUERY1。CLOSE;
QUERY1。PARAMBYNAME(‘MYDATE’);=STRTODATE(1999-1-1)
QUERY1。OPEN;
 
你用的是什么数据库, 你把SQL直接执行一下, 不就知道什么错了!
 
SORRY
应该是
QUERY1。CLOSE;
QUERY1。PARAMBYNAME(‘MYDATE’).value;=STRTODATE(1999-1-1);

QUERY1。OPEN;
 
后退
顶部