效果是这样的从memo取出若干个数据进行查询。查询的SQL语句是SELECT * FROM View_RESVT  WHERE (WO ='若干个数据' OR JOBNO ='若干个数据') and  1=1 and PRODLOC='X' ORDER BY CODE,WO
想这样的一个查询。我现在想使用IN,把memo里面的数据进行格式化取出放到条件里面,现在的问题是我怎么样把memo里面的数据正确的取出来放到条件里面去。我说的正确是合符SQL语句的查询。因为一个和多个的方法不同。一个的话你只要加两个‘’就行,而两个就不同了,在使用过程中总不能判断是一个还是几个吧!能给点好点的建议不?100分送上

解决方案 »

  1.   

    本帖最后由 bdmh 于 2011-03-21 17:40:00 编辑
      

  2.   

    顶 #1
    你可以这样子:var
     strName:string;
    begin
    ......
    strName:='(''';
    for do //for循环去除Memo内容
    begin
    strName:= strName+'''Memo内容'''+''',''';
    end;
    strName:=Left(strName,length(strName)-2);
    strName:=strName+')';end;
      

  3.   

    这样子拼写的话如果是一个数据呢?它也会在后面加上一个逗号,这样的话SQL语句就会出错的
      

  4.   

    procedure TForm1.Button3Click(Sender: TObject);
    var
      I: Integer;
      str: string;
    begin
      Memo1.Text := '';
      for I := 0 to 10 do
        Memo1.Lines.Add(inttostr(I));
      str := '';
      for I := 0 to Memo1.Lines.Count - 1 do
      begin
        if str = '' then
          str :=  QuotedStr(Memo1.Lines.Strings[i])
        else
          str :=  str + ',' + QuotedStr(Memo1.Lines.Strings[i]);
      end;
      ShowMessage(str);
      ADOQuery1.SQL.Text := 'select * from 表1 where BH in (' + str +')';
    end;str变量就是将你memo里面的内容变成'0','1','2'......这样的格式,你试下