Dataset.Active:=False;
    //DataSet.ClearFields;
    DataSet.CommandText:=str;
    if (cb_Provider.ItemIndex<>0) then
    Params.ParamByName('PROVIDERID').Value:=sdsProvider.fieldbyname('PROVIDERID').AsString;
    Params.ParamByName('STARTDATE').Value:=DATETOSTR(cb_startdate.Date);
    Params.ParamByName('ENDDATE').Value:=DATETOSTR(cb_Enddate.Date);
    DataSet.Active:=true;
    Dataset.Edit;
    Dataset.Insert;
总是提示我找不到我写的参数,可是我用ADOQUERY是可以的,谁能帮我解决

解决方案 »

  1.   

    用存储过程或query比较好点,而且最好放在数据模块里
      

  2.   

    //DataSet.CommandText:=str;
    DataSet怎么会有CommandText属性?
      

  3.   

    Dataset有CommandText的!用这个看看
    比如:
    ADODataset1.Parameters.ParamValues['PROVIDERID']:=sdsProvider.fieldbyname('PROVIDERID').AsString;
    ADODataset1.Parameters.ParamValues['STARTDATE']:=cb_startdate.Date;
      

  4.   

    我觉得是不是你sql语句中没有这个参数  我觉得你的sql语句也应该这种形式的
      select * from table where   field=:PROVIDERID   or field=:STARTDATE  or field=:ENDDATE; 
      

  5.   

    Dataset.Active:=False;
        //DataSet.ClearFields;
        DataSet.CommandText:=str;
        if (cb_Provider.ItemIndex<>0) then
        Params.ParamByName('PROVIDERID').Value:=sdsProvider.fieldbyname('PROVIDERID').AsString;
        Params.ParamByName('STARTDATE').Value:=DATETOSTR(cb_startdate.Date);
        Params.ParamByName('ENDDATE').Value:=DATETOSTR(cb_Enddate.Date);
        DataSet.Active:=true;
        Dataset.Edit;
        Dataset.Insert;DataSet  -> TADOQuery(DataSet)