access数据库,字段riqi为日期型(短格式)
procedure TF_in.Button1Click(Sender: TObject);
var
kk1:double;
kk2:double;
k1:double;
k2:double;
k3:double;
k4:double;
beginkk1:=0;
kk2:=0; adoquery1.Active:=true; if not adoquery1.Active then ADOQuery1.sql.clear;
ADOQuery1.sql.add('select riqi from sale_in where riqi <=:t2 ');
adoquery1.Parameters.ParamByName('t2').Value:=formatdatetime('yyyy-mm-dd',DateTimePicker1.Date);
showmessage(formatdatetime('yyyy-mm-dd',DateTimePicker1.Date));
adoquery1.Open;
while not ADOQuery1.Eof do begin Application.ProcessMessages;
k1:=adoquery1.Fields[9].Asfloat;
k2:=adoquery1.fields[5].asfloat;
k3:=adoquery1.Fields[6].AsFloat;
k4:=adoquery1.Fields[8].AsFloat;
kk1:=k1/(k2/20*k3)/k4;
kk2:=kk2+kk1;
Application.ProcessMessages;
adoquery1.Next;
label1.Caption:=floattostr(kk2); end; end;报from语法错……哪儿错了啊?
procedure TF_in.Button1Click(Sender: TObject);
var
kk1:double;
kk2:double;
k1:double;
k2:double;
k3:double;
k4:double;
beginkk1:=0;
kk2:=0; adoquery1.Active:=true; if not adoquery1.Active then ADOQuery1.sql.clear;
ADOQuery1.sql.add('select riqi from sale_in where riqi <=:t2 ');
adoquery1.Parameters.ParamByName('t2').Value:=formatdatetime('yyyy-mm-dd',DateTimePicker1.Date);
showmessage(formatdatetime('yyyy-mm-dd',DateTimePicker1.Date));
adoquery1.Open;
while not ADOQuery1.Eof do begin Application.ProcessMessages;
k1:=adoquery1.Fields[9].Asfloat;
k2:=adoquery1.fields[5].asfloat;
k3:=adoquery1.Fields[6].AsFloat;
k4:=adoquery1.Fields[8].AsFloat;
kk1:=k1/(k2/20*k3)/k4;
kk2:=kk2+kk1;
Application.ProcessMessages;
adoquery1.Next;
label1.Caption:=floattostr(kk2); end; end;报from语法错……哪儿错了啊?
t2:=20051212
adoquery1.Active:=true;
ADOQuery1.sql.clear;
ADOQuery1.sql.add('select riqi from sale_in where riqi <=t2 ');
adoquery1.Open;
while not ADOQuery1.Eof do begin
…………
难道这也会出错??????????
'select [riqi] from [sale_in] where [riqi] <=:t2 '
直接
adoquery1.Parameters.ParamByName('t2').Value:=DateTimePicker1.Date;
你在adoquery里面有没有定义这个参数,如果有就在设计模式下先赋一个值。
while not ADOQuery1.Eof do
begin
Application.ProcessMessages;
k1:=adoquery1.Fields[9].Asfloat;
k2:=adoquery1.fields[5].asfloat;
k3:=adoquery1.Fields[6].AsFloat;
k4:=adoquery1.Fields[8].AsFloat;
kk1:=k1/(k2/20*k3)/k4;
kk2:=kk2+kk1;
Application.ProcessMessages;
adoquery1.Next;
label1.Caption:=floattostr(kk2);
end;
adoQuery1.Close;
是SQL语句出错。
Access中日期型表示不是直接用'2005-01-25'表示的