A: 

I had a similar issue with ADO + MySQL under Delphi 2009. The problem was with a TDateTime field which was required (NOT NULL) as per the table rules. MySQL accept the dummy date '0000-00-00 00:00:00' as a non-null value and ADO does not recognise this date/time value. The error returned was similar to yours (IIRC it was speaking about out of range value).

It's not the same thing as what's you are experiencing, but it might help you track the problem you have.

Good luck!

AlexV
A: 

You need to determine whether the error is coming from your application, or the underlying database. Write a small executable that does nothing but execute the literal SQL command (with the parameter value hard-coded into the SQL) and see if that will run on the work station that's giving you the problem.

I find that ADO returns a message about a parameter not having a default value when I send a command with a bad column name to MS Access. The error message is not especially helpful in that context. To debug this kind of error I log the actual SQL that's getting sent to the database and then cut and paste it into Access or some other console-type routine to see whether the SQL itself is at fault.

Larry Lustig
A: 

Searching CodeGear/Embarcadero newsgroups I was only able to find that error related to setting/using the Filter property. I would search the project looking for anything setting the component's Filter property and check if the component is bound to any UI controls that could indirectly set the filter property (ex. DevExpress's TcxGrid, Infopower's Filter dialog, etc)

Another suggestion is to wrap opening of the dataset in a disable/enablecontrols. If the dataset is bound to a UI control, the control should not attempt to apply any actions (applying a filter) that could cause an exception.

function TdmESShip.GetESPackageID(const PackageID : Integer): String;
var
  ESPackageID :string; // for debugging
begin
  with qESPackage do
      begin
         ESPackageID := '';
         DisableControls();
         try
            try
               Parameters.ParamByName('PackageID').Value := PackageID;
               Open();
               if NOT(IsEmpty()) then
                 begin
                    ESPackageID := qESPackageESPackageID.AsString;
                 end;
               Close();  // No need to keep open
            except
               on E:Exception do
                  begin
                     ESPackageID := '9999999'; // ex. return a known bogus value
                     // log the error, re-raise a more meaningful error, etc
                  end;
               end;
         finally
            EnableControls();
            Result := ESPackageID;
         end;
     end;
end;

Good luck

KevinRF