我的数据表格式如下:(数据类型均为: varchar)
id      content    年             1 343 1992
2 34343 1998
3 343 1994
4 4343 1994 我的目的:可以根据选择的年份范围查询相应的content内容。我的代码如下:procedure TForm1.Button1Click(Sender: TObject);
begin
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Add('select * from 测试 where 年 between '''+combobox1.text+''' and '''+combobox2.text+'''');
  adoquery1.Open;
  if not adoquery1.Eof then
  begin
    showmessage(adoquery1.FieldValues['content']);
    adoquery1.Next;
  end
  else showmessage('出错了');
end;combobox1,combobox2的下拉内容为诸多年份。程序运行的时候,并没有按照我所预料的那样,显示出查询范围年份中的内容。而是显示对话框,提示我“出错了”,所以,我的那条查询sql语句还是有毛病的,:(大家帮我看看错在哪里哪??是我的SQL语句错了,还是数据类型定义错误了哪???谢谢了

解决方案 »

  1.   

    你的年份定义为varchar 我个人认为这样的数据用between and 应该是没办法比较 应该用整型 或者日期类型等有序类型才能比较结果(个人猜测)当然要用整型的时候你的引号需要更改一下
      

  2.   

    楼上说的没错。between 1 and 59
      

  3.   

    1:你多了引号
    adoquery1.SQL.Add('select * from 测试 where 年 between '+combobox1.text+' and '+combobox2.text);
    2:else showmessage('出错了');你这样写,程序始终运行到记录集合的结尾,始终要执行这句了。