为什么我的SQL语句出现下面情况:
对同样的表进行操作(车次为主码,发站,到站设有书索引)下面的代码执行之后什么结果都没有:
query1.Close;
query1.SQL.Clear;
query1.SQL.Add(' select *');
query1.SQL.Add(' from  起始时刻表');
query1.SQL.Add(' where 发站= :start ');
query1.SQL.Add(' and 到站= :achieve ');
query1.ParamByName('start').AsString:= result_form.Edit1.Text;
query1.ParamByName('achieve').AsString:= Edit2.Text;
query1.Open;而下面的代码执行之后一切正常:
query1.Close;
query1.SQL.Clear;
query1.SQL.Add(' select *');
query1.SQL.Add(' from  起始时刻表');
query1.SQL.Add(' where 车次=:No ');
query1.ParamByName('No').AsString:= result_form.Edit1.Text;
query1.Open;

解决方案 »

  1.   

    没有什么可奇怪的。
    sql语句不同,条件不一样--没有满足条件的数据
      

  2.   

    query1.ParamByName('start').AsString:= result_form.Edit1.Text;这句有点问题啊是不是
    应该不是这个EDIT啊.
      

  3.   

    建议:
    query1.ParamByName('start').AsString:= TRIM(result_form.Edit1.Text);
    query1.ParamByName('achieve').AsString:= TRIM(Edit2.Text);
      

  4.   

    query1.ParamByName('start').AsString:= result_form.Edit1.Text;
    应该是这句有问题!~~~对了,你那俩个字段是什么类型?
    建议用  
    query1.ParamByName('start').value :=result_form.Edit1.Text;
      

  5.   

    不好意思
    query1.ParamByName('achieve').AsString:= Edit2.Text;这句为
    query1.ParamByName('achieve').AsString:= result_form.Edit2.Text;用了query1.ParamByName('start').value :=result_form.Edit1.Text;
    还不行
      

  6.   

    你直接运行你的SQL看能不能找到,如果能找到就是你的程序有问题,如果不行,就是条件不满足
      

  7.   

    那就不要用参数了
    直接用SQL语句看看' select * from  起始时刻 where 车次=''' + result_form.Edit1.Text + ''' and 到站=''' + result_form.Edit2.Text + '''';
      

  8.   


    我发现我用了ODBC的Driver do Microsoft Access(*.mdb)
    当我改为Microsoft Access(*.mdb)好想就好了是不是一定要用Microsoft Access(*.mdb)啊