第一个----字段变量赋值给内存变量问题:
var
  v_min,v_max:integer;
.........
begin
  mdbpath := '.\my_data.mdb';     //MDB路径
  xlspath := '.\to_printer.XLS';  //Excel路径
  //取出需要打印的最小和最大记录号
  adoquery1.SQL.Clear;
  adoquery1.Parameters.Clear;
  adoquery1.ParamCheck:=True;
  adoquery1.SQL.Add('SELECT id_min,id_max FROM can_shu WHERE id=1'); //can_shu是my_data.mdb里的一张表
  adoquery1.open;
  v_min:=adoquery1.FieldByName('id_min').Value;//或.AsInteger;  
  v_max:=adoquery1.fieldbyname('id_max').Value;//或.AsInteger;
  把鼠标移到value能看到数据,但把鼠标移到v_min、v_max怎么都看不到数据?感觉上面赋值语句有问题第二个----我想根据上面的v_min和v_max,取出Excel中id号大于等于v_min并且小于等于v_max记录,并插到to_printer表中。
      sSql :=
        'INSERT INTO to_printer (ID号,用户名称,客户地址,总金额)' +
      ' SELECT' +
        ' ID号,用户名称,客户地址,总金额' +
        ' FROM [excel 8.0;database=' + xlspath + '].[to_printer$] WHERE ID号>=inttostr(v_min) AND inttostr(v_max);
上行中where之后的部分(红字部分)老是通不过,请问,where之后的条件语句怎么写?

解决方案 »

  1.   

    1.
      选中V_min 或是V_max 按下Ctrl + F7 看是否有值
    2.
    WHERE ID号>=inttostr(v_min) AND inttostr(v_max)改成
    'WHERE ID号>= ' + QuotedStr(inttostr(v_min)) + ' AND ' + QuotedStr(inttostr(v_max))
    单引里面加双引
      

  2.   

    第一个,如果看不到,原因有几个,一可能是你没有用到这个变量,二,可能你上面的语句有错,
    你这们写试一下
    adoquery1.close;////加这句  adoquery1.SQL.Clear; 
      adoquery1.Parameters.Clear; 
      adoquery1.ParamCheck:=True; 
      adoquery1.SQL.Add('SELECT id_min,id_max FROM can_shu WHERE id=1'); //can_shu是my_data.mdb里的一张表 
      adoquery1.open; 
      v_min:=adoquery1.FieldByName('id_min').Value;//或.AsInteger;  
      v_max:=adoquery1.fieldbyname('id_max').Value;//或.AsInteger; 第二个
    这样试一下
    WHERE ID号 between inttostr(v_max) AND inttostr(v_min);