我想根据多个条件 得到一个结果!大家如果有好的代码和意见 请告诉我!谢谢了大家!
Var
selectid,selectname,selectsex,selectaddress:string;
begin
if trim(combobox1.Text) <>'' then
    begin
    selectid:='and ID='''+trim(combobox1.Text)+'''';
    end
  else
    selectid:='';  if trim(combobox2.Text) <>'' then
    begin
    selectname:='and NAME='''+trim(combobox2.Text)+'''';
    end
  else
    selectname:='';  if trim(combobox3.Text) <>'' then
    begin
    selectsex:='and sex='''+trim(combobox3.Text)+'''';
    end
  else
    selectsex:='';
    selectaddress:=selectid+selectname+selectsex;
  query1.Close;
  query1.sql.clear;
  query1.sql.add('select * ');
  query1.SQL.Add('from jjz1.db ');
  query1.SQL.Add('where   1=1')   ;//
  query1.SQL.Add(selectid+selectname+selectsex);//这是多个条件 我想根据这些条件得到一个结果ADDRESS
  query1.Open;
  Memo1.Lines.Clear;
 Memo1.Text:= query1.FieldByName('address').AsString;//为什么它不显示呢!

解决方案 »

  1.   

    用SQl跟踪一下就会知道错在那里了!
      

  2.   

    把sql语句打印出来,看看你的sql语句究竟是啥?
      

  3.   

    'and ID...改为' and ID...,前面是否少了空格了?把SQL语句copy出来到数据库环境中执行再寻找问题
      

  4.   

    简化一下楼主的代码:
    var
      strWhere:string;
    begin
      strWhere:= '';
      if trim(combobox1.Text) <>'' then
        strWhere:= ' and ID='+trim(combobox1.Text);
      if trim(combobox2.Text) <>'' then
        strWhere:= strWhere+' and NAME='''+trim(combobox2.Text)+'''';
      if trim(combobox3.Text) <>'' then
        strWhere:= strWhere+' and sex='''+trim(combobox3.Text)+'''';  query1.Close;
      query1.sql.clear;
      query1.sql.add('select * ');
      query1.SQL.Add('from jjz1.db ');
      query1.SQL.Add('where  1=1')  ;//
      query1.SQL.Add(strWhere);//这是多个条件 我想根据这些条件得到一个结果ADDRESS
      query1.Open;
      Memo1.Lines.Clear;
    Memo1.Text:= query1.FieldByName('address').AsString;
    如果没有结果,可能有两个原因:
    1、确实没有符合条件的记录;
    2、SQL语句错误,请注意对数据库操作时的字段类型.通常,ID字段为数字型,所以,故作聪明的将源代码改为:strWhere:= ' and ID='+trim(combobox1.Text);,其它没变。希望能解决你的问题。
      

  5.   

    var
      strWhere:string;
    begin
      strWhere:= '';
      if trim(combobox1.Text) <>'' then
        strWhere:= ' and ID='+trim(combobox1.Text);
      if trim(combobox2.Text) <>'' then
        strWhere:= strWhere+' and NAME='+quotedstr(trim(combobox2.Text));
      if trim(combobox3.Text) <>'' then
        strWhere:= strWhere+' and sex='+quotedstr(trim(combobox3.Text));  query1.Close;
      query1.sql.clear;
      query1.sql.add('select * ');
      query1.SQL.Add('from jjz1.db ');
      query1.SQL.Add('where  1=1')  ;//
      query1.SQL.Add(strWhere);//这是多个条件 我想根据这些条件得到一个结果ADDRESS
      query1.Open;
      Memo1.Lines.Clear;
    Memo1.Text:= query1.FieldByName('address').AsString;
    ///
    这样我觉得好看点