Buddy: Good call.
By replacing the embedded ampersand variables with literals in your
fashion, and tidying up a bit, this string did the job:
SET VAR vcol_date TEXT = 'cpoDate'
SET VAR vtableName TEXT = 'cpoHeader'
SET VAR vstring TEXT = +
('SELECT (MIN(' + .vcol_date + ')) INTO vfts_dateStart INDICATOR vind1
FROM' +
& .vtableName & 'WHERE (IYR(' + .vcol_date + ')) =' &
(CTXT(.vyearStart)) )
&vstring
Perhaps I was "trying too hard", by generating and then embedding
ampersand variables for the functions into an ampersand variable
"shell".
Still unclear on why mixing embedded ampersand variables with an
embedded dot variable should break; but I'll take the win. Learned a
lot.
Thanks Razzak, Karen, Doug and Buddy
Merry Christmas, and the happiest and most relaxing holidays to all.
Bruce
Bruce A. Chitiea | SafeSectors, Inc.
112 Harvard Ave #272 | Claremont CA 91711-4716 | USA
[email protected] | +011 (909) 238-9012 c | +011 (909) 912-8678 f
------ Original Message ------
From: "Buddy Walker" <[email protected]>
To: [email protected]
Sent: 12/11/2021 4:51:25 AM
Subject: RE: Re[2]: [RBASE-L] - Ampersanding in the Dark
Bruce
I believe you are using the & wrong when setting up the string.
To concantenate the string the & indicates a space
Added vyearStart as integer which I assume is the 4 digit you are
setting
I commented out two variables don’t need them unless you are using
them elsewhere in the code.
Try this
***********start here
SET VAR vcol_date TEXT = 'cpoDate'
SET VAR vtableName TEXT = 'cpoHeader'
--SET VAR vamp_dateCol_min TEXT = ('(MIN(' + .vcol_date + '))')
--SET VAR vamp_dateCol_iyr4 TEXT = ('(IYR4(' + .vcol_date + '))')
SET VAR vyearStart INTEGER = 2020
SET VAR vstring TEXT = +
('SELECT MIN(' + .vcol_Date + ') INTO vfts_dateStart INDICATOR vind1
FROM' & .vtableName & 'WHERE (IYR(' + .vcol_date + ')) =' &
CTXT(.vyearStart))
&vstring
*********end here
Buddy
From:[email protected] <[email protected]> On Behalf Of
Bruce Chitiea
Sent: Friday, December 10, 2021 8:08 PM
To:[email protected]
Subject: Re[2]: [RBASE-L] - Ampersanding in the Dark
Razzak: Thank you.
If I understand your sample, my code should read:
SET VAR vcol_date TEXT = 'cpoDate'
SET VAR vtableName TEXT = 'cpoHeader'
SET VAR vamp_dateCol_min TEXT = ('(MIN(' + .vcol_date + '))')
SET VAR vamp_dateCol_iyr4 TEXT = ('(IYR4(' + .vcol_date + '))')
SET VAR vstring TEXT = +
('SELECT &vamp_dateCol_min INTO vfts_dateStart INDICATOR vind1 FROM'
& .vtableName & 'WHERE &vamp_dateCol_iyr4 = .vyearStart')
&vstring
...which returns the error: "Column or variable MIN not found (2515)"
Perplexing. But! Progress. By defining the "vamp_" variables in your
correct syntax (as shown and run above), this code now works:
SELECT &vamp_dateCol_min INTO vfts_dateStart INDICATOR vind1 +
FROM &vtableName WHERE &vamp_dateCol_iyr4 = .vyearStart
Sadly, if I insert this code into parens as the vstring definition, the
error: "Syntax is incorrect for the command SELECT (2045)" is returned.
So, still one level of mystery remains.
Best wishes, Bruce
Bruce A. Chitiea | SafeSectors, Inc.
112 Harvard Ave #272 | Claremont CA 91711-4716 | USA
[email protected] | +011 (909) 238-9012 c | +011 (909) 912-8678 f
------ Original Message ------
From: "A. Razzak Memon" <[email protected]>
To: [email protected]
Sent: 12/10/2021 1:41:19 PM
Subject: Re: [RBASE-L] - Ampersanding in the Dark
Bruce,
Try this very simple approach to form a command with correct syntax to
execute.
SET VAR vTableName TEXT = 'cPOHeader'
SET VAR vString TEXT = ('SELECT ... FROM'&.vTableName)
&vString
See how the variable "vString" is executed.
Have fun!
Razzak
At 04:21 PM 12/10/2021, Bruce Chitiea wrote:
Gurus and Gurettes:
My greatest coding challenge remains the use of ampersand variables.
I get the concept, but my execution ... hoo boy.
So here's what works:
  SELECT (MIN(cpoDate)) INTO vdateStart INDIC vind1 +
   FROM cpoHeader WHERE (IYR4(cpoDate)) = .vyearStart
But I need to sub-out the table name, and column name 'cpoDate' with
the likes of 'invDate', 'shipDate', etc.Â
This does the trick for the column name:
  SET VAR vcol_date TEXT = 'cpoDate'
  SET VAR vamp_dateCol_min TEXT = '(MIN(&vcol_date))'
  SET VAR vamp_dateCol_iyr4 TEXT = '(IYR4(&vcol_date))'
  SELECT &vamp_dateCol_min INTO vfts_dateStart INDICATOR vind1 +
   FROM cpoHeader WHERE &vamp_dateCol_iyr4 = .vyearStart
... but only so long as the literal tablename 'cpoHeader' is included
in the FROM clause.
This returns a syntax error:
  SET VAR vtableName TEXT = 'cpoHeader'
  SELECT ... FROM .vtableName ...
... as does this:
  SET VAR vtableName TEXT = 'cpoHeader'
  SELECT ... FROM &vtableName ...
... as does this:
  SET VAR vtableName TEXT = 'cpoHeader'
  SET VAR vamp_from_tablename TEXT = 'FROM .vtableName'
  SELECT ... &vamp_from_tableName ...
... as does this
  SET VAR vtableName TEXT = 'cpoHeader'
  SET VAR vamp_from_tablename TEXT = 'FROM &vtableName'
  SELECT ... &vamp_from_tableName ...
Clearly, I'm flailing. Any assistance much appreciated!Â
Bruce
Bruce A. Chitiea |Â SafeSectors, Inc.
112 Harvard Ave #272 |Â Claremont CA 91711-4716 |Â USA
[email protected]Â |Â +011 (909) 238-9012 c |Â +011 (909)
912-8678 f
--
For group guidelines, visit
<http://www.rbase.com/support/usersgroup_guidelines.php>http://www.rbase.com/support/usersgroup_guidelines.php
---
You received this message because you are subscribed to the Google
Groups "RBASE-L" group.
To unsubscribe from this group and stop receiving emails from it,
send an email to
<mailto:[email protected]>[email protected].
To view this discussion on the web visit
<https://groups.google.com/d/msgid/rbase-l/emefc63529-209a-44f7-a4c9-390b1f709fa9%40pathfinder?utm_medium=email&utm_source=footer>https://groups.google.com/d/msgid/rbase-l/emefc63529-209a-44f7-a4c9-390b1f709fa9%40pathfinder.
-- For group guidelines, visit
http://www.rbase.com/support/usersgroup_guidelines.php
--- You received this message because you are subscribed to the Google
Groups "RBASE-L" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/rbase-l/1MTisb-1n7aFe3sNR-00U4Df%40mrelay.perfora.net.
--
For group guidelines, visit
http://www.rbase.com/support/usersgroup_guidelines.php
---
You received this message because you are subscribed to the Google
Groups "RBASE-L" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/rbase-l/em69075add-1a16-48d4-8b1b-b0f7e51c4b4c%40pathfinder
<https://groups.google.com/d/msgid/rbase-l/em69075add-1a16-48d4-8b1b-b0f7e51c4b4c%40pathfinder?utm_medium=email&utm_source=footer>.
--
For group guidelines, visit
http://www.rbase.com/support/usersgroup_guidelines.php
---
You received this message because you are subscribed to the Google
Groups "RBASE-L" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/rbase-l/003401d7ee8d%24cf881380%246e983a80%24%40comcast.net
<https://groups.google.com/d/msgid/rbase-l/003401d7ee8d%24cf881380%246e983a80%24%40comcast.net?utm_medium=email&utm_source=footer>.
--
For group guidelines, visit
http://www.rbase.com/support/usersgroup_guidelines.php
---
You received this message because you are subscribed to the Google Groups "RBASE-L" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/rbase-l/em226ef899-97c9-4b0d-8840-3b2e573a17e0%40pathfinder.