Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 9 of 9 total
Thread update set
Sat, Jan 28 2012 12:56 PMPermanent Link

AlanL

Hello all,
I want to update a field in a DBIsam table with a combination of 3 fields.
Field1 and Field2 are string and Field3 is Double but when I run the query I get the error message:-
DBISAM Engine Error #11949 SQL parsing error - Expected ) but instead
found ( in UPDATE SQL statement at line 1, column 57.  
I am not sure what is going on. Can you please help.

The code I use is:-

with Query1 do
begin
 close;
 SQL.Clear;
 SQL.Add ('UPDATE DATFILE SET Field4 =(Field1 + Field2 + FloatToStr(Field3))');
 Exec.SQL;
end

I am using Delphi7 pro + dbisam v4.26 Build 3
many thanks,
AlanL
Sat, Jan 28 2012 1:25 PMPermanent Link

Fernando Dias

Team Elevate Team Elevate

Alan,

  SQL.Add ('UPDATE DATFILE SET Field4 =(Field1 + Field2 + CAST(Field3 AS VARCHAR(20)) )');

--
Fernando Dias
[Team Elevate]
Sun, Jan 29 2012 3:56 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

AlanL

Just to expand a bit on Fernado's answer - SQL doesn't have a FloatToStr function (which is why he's using CAST) and the way you have the SQL written that is simply passed as a string to the engine.

An alternative to Fernado's approach would be

SQL.Add ('UPDATE DATFILE SET Field4 =(Field1 + Field2 + ' + FloatToStr(Field3) + ')');

ie convert Field3 in Delphi and pass that into the SQL statement.

Roy Lambert [Team Elevate]
Sun, Jan 29 2012 8:39 AMPermanent Link

John Hay


> SQL.Add ('UPDATE DATFILE SET Field4 =(Field1 + Field2 + ' + FloatToStr(Field3) + ')');

That would be

SQL.Add ('UPDATE DATFILE SET Field4 =(Field1 + Field2 + ' + QuotedStr(FloatToStr(Field3)) + ')');

John




Sun, Jan 29 2012 8:50 AMPermanent Link

AlanL

"John Hay" wrote:


> SQL.Add ('UPDATE DATFILE SET Field4 =(Field1 + Field2 + ' + FloatToStr(Field3) + ')');

That would be

SQL.Add ('UPDATE DATFILE SET Field4 =(Field1 + Field2 + ' + QuotedStr(FloatToStr(Field3)) + ')');

John



Thank you all very much for your help Fernando,Roy and John.
I have tried your examples and it is now working fine now.
best regards,
Alan
Sun, Jan 29 2012 9:52 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

John


Mea culpa

Roy Lambert
Sun, Jan 29 2012 10:53 AMPermanent Link

Fernando Dias

Team Elevate Team Elevate

John,

<< That would be
  SQL.Add ('UPDATE DATFILE SET Field4 =(Field1 + Field2 + ' + QuotedStr(FloatToStr(Field3)) + ')'); >>

That wouldn't work either.
Field3 is a column name, not a Delphi variable.

--
Fernando Dias
[Team Elevate]
Sun, Jan 29 2012 11:26 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Fernando


At least John's sharing the shame of THAT one Smiley

Roy Lambert
Mon, Jan 30 2012 3:26 AMPermanent Link

John Hay

Lucky your brain is working Fernando Smile

Image