我做一个查询,但需要根据所选择的字段的类型进行查询条件符的设置,以前在VB里用的是fieldtype=11之类的做法,但现在Query对象里没有这个属性,该怎么做?代码如下:
searchsql:='select * from SC_LJKC';
  if QRYsearchtxt.Text<>'' then
    begin
      case CBoxQryRelation.ItemIndex of
        -1,0:
        begin
          //我要在这个位置判断一下adodm.adoQRYsearchLJ.fields[CBoxQryField.Text]的类型,该如何写?
          searchsql:=searchsql+' where '+CBoxQryField.Text+'='+#39+QRYsearchtxt.Text+#39;
        end;
        1:
        begin
          searchsql:=searchsql+' where '+CBoxQryField.Text+'>'+#39+QRYsearchtxt.Text+#39;
        end;
        2:
        begin
          searchsql:=searchsql+' where '+CBoxQryField.Text+'<'+#39+QRYsearchtxt.Text+#39;
        end;
        3:
        begin
          searchsql:=searchsql+' where '+CBoxQryField.Text+'>='+#39+QRYsearchtxt.Text+#39;
        end;
        4:
        begin
          searchsql:=searchsql+' where '+CBoxQryField.Text+'<='+#39+QRYsearchtxt.Text+#39;
        end;
        5:
        begin
          searchsql:=searchsql+' where '+CBoxQryField.Text+'<>'+#39+QRYsearchtxt.Text+#39;
        end;
        6:
        begin
          searchsql:=searchsql+' where '+CBoxQryField.Text+'like '+#39+'%'+QRYsearchtxt.Text+'%'+#39;
        end;
      end;
    end;

解决方案 »

  1.   

    ADOQuery1.FieldByName('ABC').DataType = ftBoolean;
       …………TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord,
        ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime,
        ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo,
        ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar, ftWideString,
        ftLargeint, ftADT, ftArray, ftReference, ftDataSet, ftOraBlob, ftOraClob,
        ftVariant, ftInterface, ftIDispatch, ftGuid, ftTimeStamp, ftFMTBcd);
      

  2.   

    adodm.adoQRYsearchLJ.fieldByName('CBoxQryField').DataType:= ...
      

  3.   

    if adodm.adoQRYsearchLJ.FieldByName(CBoxQryField.Text).DataType=ftSmallint then
              searchsql:=searchsql+' where '+CBoxQryField.Text+'='+QRYsearchtxt.Text;
    这样写对吗?
    但它告诉我ftsmallint未声明,我应该在哪里声明?DB单元里不是有它的声明吗?我怎么才能直接用?
      

  4.   

    if adodm.adoQRYsearchLJ.FieldByName(CBoxQryField.Text).DataType=ftSmallint then
              searchsql:=searchsql+' where '+CBoxQryField.Text+'='+QRYsearchtxt.Text;
    这样写对吗?
    =================================================================================
    对!但它告诉我ftsmallint未声明,我应该在哪里声明?DB单元里不是有它的声明吗?我怎么才能直接用?
    =================================================================================
    uses
      DB;