第一:用adoquery打开数据表后,指针指向第一条,然后把字段AAA的值赋给变量Q,再移动到下一条,使Q=Q+(第二条记录AAA的值),依此类推,最后遍历整个表,不用count,就是这样一个一个的相加,怎么写?
第二:想在上面的语句中加个条件判断,取DateTimePicker的日期,怎么加?我加了(我先格式化了,取了短日期),怎么总报DateTimePicker1.date没有默认值呢(我先格式化了,取了短日期)?
谢谢大家!

解决方案 »

  1.   

    这问题不是很难吧?用select * from table_name
    然后,Q:=adoquery.field[0].value;就可以了,
      

  2.   

    第一个问题发完贴子已经解决了,循环时加入adoquery1.close和adoquery1.open了,所以死了,呵呵。第二个问题还没解决呢, lianshaohua兄给个代码看看吧
      

  3.   

    定义个变量为string
    把DateToStr(DateTimePicker.Date)赋给这个变量
    在查询条件中用变量
    试试吧!
      

  4.   

    with ADOQuery1 do
    begin
      Close;
      SQL.Text := 'Select * from tmptable where datecolumn between :D1 and :D2';
      Params.ParamByName('D1').Value := formatDateTime('yyyy-mm-dd',DateTimePicker.DateTime);
      Params.ParamByName('D2').Value := formatDateTime('yyyy-mm-dd',DateTimePicker.DateTime+1);
      Open;
    end;
      

  5.   

    TO繁华阅尽: 我刚才也按E风瘦马说的试了,他说的应该和你意思一样吧,但不成功啊,adoquery里没有params的属性吧,报错了呀
      

  6.   

    我贴代码吧:
    procedure TF_in.Button1Click(Sender: TObject);
    var
      kk1:double;
      kk2:double;
      k1:double;
      k2:double;
      k3:double;
      k4:double;
    begin
    kk1:=0;
    kk2:=0;
        ADOQuery1.close;
        ADOQuery1.sql.clear;
        ADOQuery1.sql.add('??????????????');
        //就是这里,每次选完DateTimePicker1.date后,触发button1时就报错(说是DateTimePicker1.date没有默认值)。    adoquery1.Active:=true;
        if not adoquery1.Active then 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;
      

  7.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      I:Integer;
    begin
      i:=0;
      with ADOQuery1 do
      begin
        SQL.Clear;
        SQL.Text := 'Select * FROM sysobjects where datediff(day,crdate,:Date)=0';
        Parameters[0].Value := DateTimePicker1.Date;  //条件
        Open;
        while not(Eof) do
          I:=I+FieldByName('id').AsInteger;  //循环加
      end;
    end;
      

  8.   

    adoquery里有params的属性,D1,D2就是params的属性的参数.
    adoquery里的SQLString属性Select* from tmptable where datecolumn between :D1 and :D2
      

  9.   

    --写错了,不好意思。
    --ADOQuery1.Params.ParamByName()
    --应改为:
    --ADOQuery1.Parameters.ParamByName()DateTimePicker1.date没有默认值
    --这个问题比较奇怪……
    --那你给它一个默认值,赋值给DateTimePicker1.date试试
      

  10.   

    要是给它赋值的话,报错是“List index out of bound(9)”……不懂,兄弟们能不能在我的上面改一下,谢谢了,你们说的我都试过了,不知道是我的控件没设完整,还是我程序上有错……
      

  11.   

    DateTimePicker1.date没有默认值把你那句 SQL 写出来看看
    报“没有默认值”是因为 SQL 把 DataTimePicker1.Date 解释成一个变量,所以 SQL 引擎报错,查查看 SQL 语句就知道了P.S. 估计你在用 Access
      

  12.   

    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
    ……
      

  13.   

    adoquery1.SQL.Clear;
    ADOQuery1.sql.add('select * from sale_in where riqi<=:t2');
    adoquery1.Parameters.ParamByName('t2').Value := formatDateTime('yyyy-mm-dd',DateTimePicker1.DateTime);
    adoquery1.Open;
      while not ADOQuery1.Eof do
        begin
    …………
        end;