我现在的三层程序中,客户段是一个查询界面,界面的上部是几个checkbox和几个edit空间,他们一一对应,他们也是查询的检索点,比如说客户选中了第一个checkbox1(按名字查询),那edit1中的内容就是检索条件,那这样的话是不是可以这样写程序:先定义sql语句,sql:='select enterprisename(字段一),enterpriseid(字段二) from basicinfo(表)‘,然后写:
if checkbox1.checked=true then
   edit1.enabled:=true;
   str:=str+'and enterprsiename=‘+''''+edit1.text+''''';
~~~~~~~~
~~~~
   datamodule1.clientdataset.close;
   datamodule1.clientdataset.commandtext;=sql;
   datamodule1.clientdataset.open;
   datamodule1.clientdataset.active:=true;
  with dbgrid do 
    begin~~~~~~~~
运行后,点击checkbox1(按名称查询也就是按enterprisename查询),在其后的edit中输入数据,点击查询按纽,出现(enterprisename is  of an unknow type )错误!请哪位高手赐教!!!急!

解决方案 »

  1.   

    完整的请看:
    procedure TSEnterInfoFrm.QBCEnterpriseNameClick(Sender: TObject);
    begin
         if QBCEnterprisename.Checked =true then
            QBEnterprisename.Enabled:=true
            else
            QBEnterprisename.Enabled :=false;
            QBEnterprisename.Text :='';end;procedure TSEnterInfoFrm.QBCEnterpriseKindClick(Sender: TObject);
    begin
         if QBCEnterprisekind.Checked =true then
            QBEnterprisekind.Enabled :=true
          else
             QBEnterprisekind.Enabled :=false;
             QBEnterprisekind.Text :='';
    end;procedure TSEnterInfoFrm.QBCEnterpriseClassClick(Sender: TObject);
    begin
         if QBCEnterpriseclass.Checked =true then
            QBEnterpriseclass.Enabled :=true
         else
            QBEnterpriseclass.Enabled :=true;
            QBenterpriseclass.Text :='';
    end;procedure TSEnterInfoFrm.QBCEntrolMoneyClick(Sender: TObject);
    begin
                if QBCEntrolmoney.Checked=true then
                begin
                QBEnrolmoneybegin.Enabled:=true;
                QBEnrolmoneyend.Enabled :=true;
                end
                else
                 begin
                 QBEnrolmoneybegin.Text :='';
                QBEnrolmoneyend.Text :='';
                 QBEnrolmoneybegin.Enabled :=false;
                QBEnrolmoneyend.Enabled :=false;
                 end;end;procedure TSEnterInfoFrm.QBCHoldDateClick(Sender: TObject);
    begin
              if QBCHolddate.Checked =true then
               begin
               QBHolddatebegin.Enabled :=true;
               QBHolddateend.Enabled :=true;
               end
               else
               begin
               QBHolddatebegin.Text :='';
               QBHolddateend.Text :='';
               QBHolddatebegin.Enabled :=false;
               QBHolddateend.Enabled :=false;
               end;end;procedure TSEnterInfoFrm.QBCGovernorClick(Sender: TObject);
    begin
        if QBCGovernor.Checked =true then
           QBGovernor.Enabled :=true
        else
           QBGovernor.Enabled :=false;
           QBGovernor.Text :='';
    end;procedure TSEnterInfoFrm.TotalEnterpriseInfoClick(Sender: TObject);
    var str:string;
        str1:string;
        str2:string;
        str3:string;
        str4:string;
        str5:string;
        str6:string;
    params:array[1..8]of string;
    begin
      str:='select a.enterpriseid, a.enterprisename, a.enroladdress,a.holddate,b.entrolmoney,a.economy,b.enterpriseclass,c.linkman,c.ltelephone,d.class,d.name from "basicinfo" a,"correlation" b, "contact" c,"personinfo" d';
      str:=str+' where a.enterpriseid=b.enterpriseid and a.enterpriseid=c.enterpriseid and a.enterpriseid=d.enterpriseid ';
      if QBCEnterprisename.Checked =true then
          begin
         str1:='and enterprisename='+''''+enterprisename+'''';
         str:=str+str1;
          end
          else
          begin
          str1:='';
          end;
      if QBCEnterprisekind.Checked =true then
         begin
         str2:='and enterprisekind='+''''+QBenterprisekind+'''';
         str:=str+str2;
         end
         else
         begin
         str2:='';
         end;
      if  QBCEnterpriseclass.Checked =true then
         begin
         str3:='and enterpriseclass='+''''+QBenterpriseclass.text+'''';
          str:=str+str3;
          end
         else
         begin
         str3:='';
          end;
      if  QBCEntrolmoney.Checked =true then
          begin
           str4:=' and Entrolmoney between'+ '''+QBEntrolmoneybegin.text+''''+' and'+'''' +QBentrolmoneyend.text+'''';
            str:=str+str4;
           end
           else
           begin
           str4:='';
           end;
     if QBCHolddate.Checked =true then
         begin
          str5:=' and holddate between'+''''+QBHolddatebegin.text+''''+'and'+ ''''+QBHolddateend.text+'''';
           str:=str+str5;
          end
         else
         begin
         str5:='';
         end;
      if QBCGovernor.Checked =true then
         begin
          str6:='and governor='+''''+QBgovernor.text+'''';
          str:=str+str6;
           end
           else
           begin
           str6:='';
           end;datamodule1.SBasicDataSet.Close ;
    datamodule1.SBasicDataSet.CommandText :=str;
    datamodule1.Sbasicdataset.open;
    datamodule1.SBasicDataSet.Active:=true;
    with EInfogrid do
        begin
        columns[0].fieldname:='enterpriseid';
        columns[1].fieldname:='enterprisename';
        columns[2].fieldname:='enroladdress';
        columns[3].fieldname:='holddate';
        columns[4].fieldname:='enrolmoney';
        columns[5].fieldname:='economy';
        columns[6].fieldname:='enterprisekind';
        columns[7].fieldname:='linkman';
        columns[8].fieldname:='ltelephone';
        columns[9].FieldName:='name';
        end;end;
    end.