Seems you don't - but am sure that at one stage I did just that, create a parameter, add it to the query object, set it parameters and it worked. If you trace through your code and check the paramcount before and after prepare and its zero then the parameter isn't being created behind the scenes and you need to use something (delphi not in front of me now) like this:
 
    Params.AddParam(Params.Createparam( whatever, whatever, whatever)). But Neven seems to know what he's saying.
 
I agree with keeping Date/Time info as that and not using strings.  
 
 -----Original Message-----
From: Mark Howard [mailto:[EMAIL PROTECTED]]
Sent: 30 May 2001 16:48
To: Multiple recipients of list delphi
Subject: Re: [DUG]: SQL and Parameters

You were right. 
I had no idea that I had to specifically add parameter objects to the TQuery.  I can't find any mention of this in any of my 4 Delphi books.
My procedure is now as follows, but I still get "Could not find object".  Is the code that I have used to add the parameter correct?
 
  procedure RunPQuery(SQLFile: string);
  begin
    with RSQuery do
    begin
      Close;
      Unprepare;
      SQL.LoadFromFile(HomeDir + '\SQLFiles\' + SQLFile + '.SQL');
      Params.CreateParam(ftDate, 'SaveDate', ptOutput);
      ParamByName('SaveDate').AsDate := CurrentDate;
      Prepare;
      ExecSQL;
      MainForm.Memo.Lines.Add('Done');
    end;
  end;
 
Tomorrow, I will build the SQL in my code - but its not as nice.
 
Mark

 
----- Original Message -----
From: James Low
Sent: Wednesday, May 30, 2001 4:11 PM
Subject: RE: [DUG]: SQL and Parameters

Maybe it cannot find an object because the query has NO parameters (I cannot see where your code creates one). So maybe you need to add (using CreateParam or otherwise)  a Param Object to the datsets Params (with the name "SaveDate", type Output (I think), ftdate) - before you call prepare.
-----Original Message-----
From: Mark Howard [mailto:[EMAIL PROTECTED]]
Sent: 30 May 2001 15:41
To: Multiple recipients of list delphi
Subject: Re: [DUG]: SQL and Parameters

Mike
Have tried this change, now.  No better.  I assume the question about Short Date Format is only relevant while I am using the DateToStr format?
I think there must be something quitye fundamental, that I have not passed on to you guys.
I assume that I can use a vanilla TQuery with no properties set; and that setting the ParamByName is ALL I need to.  (I have also tried Params[0].AsDate := CurrentDate.)
Is there some other fundamental aspect that I may not be aware of?
Mark
 
----- Original Message -----
Sent: Wednesday, May 30, 2001 3:22 PM
Subject: Re: [DUG]: SQL and Parameters

Mark
Have you tried -
ParamByName('SaveDate').AsDate := CurrentDate;
as opposed to
ParamByName('SaveDate').AsString := DateToStr(CurrentDate);
 
What is your Short Date Format - dd/mm/yy or mm/dd/yy?
DateToStr may not be giving you a valid date for SQL
Why you would get "could not find object", I don't know. 
 
HTH
Mike
 
----- Original Message -----
Sent: Wednesday, May 30, 2001 10:03 AM
Subject: [DUG]: SQL and Parameters

Hi
 
Using Paradox.
 
When I run the following SQL code (DocNos.Sql) using the LoadFromFile method, things work fine;
 
Delete from DocketNos
Where DocketNo in (
Select DocketNo from Dockets
Where ForCode not in (
Select distinct forcode from dockets
where docketdate > '03/31/2001'))
 
But when I try to parameterise it as follows, and with the final line of the Sql file changed to :
 
where docketdate > :SaveDate))
 
then I get an error message "Could not find object"
 
  procedure RunPQuery(SQLFile: string);
  begin
    with RSQuery do
    begin
      Close;
      Unprepare;
      SQL.LoadFromFile('DocNos.SQL');
      ParamByName('SaveDate').AsString := DateToStr(CurrentDate);
      Prepare;
      Open;
      MainForm.Memo.Lines.Add('Done');
    end;
  end;
Can any one see where I have gone wrong?
 
TIA  Mark

Reply via email to