This is not my code, but the code by my colleague:
IF USED(justname )
SELECT &justname
ELSE
USE (ojc.curtable) in 0 EXCL
SELECT &justname
ENDIF
lnumflds=afields(fldlistall,justname )
DIMENSION lfldlist(lnumflds)
idx=0
FOR i=1 to lnumflds
IF '_A'$fldlistall(i,1)
idx=idx+1
lfldlist(idx)=fldlistall(i,1)
ENDIF
ENDFOR
lnumchgflds=idx
IF lnumchgflds>0
starttime = seconds()
FOR i=1 to lnumchgflds
newname=left(lfldlist(i),AT('_A',lfldlist(i))-1)
ALTER TABLE (tblname) RENAME COLUMN (lfldlist(i)) TO (newname)
ENDFOR
endtime = seconds()
ENDIF
This code works on tables only. I guess, you can adjust it to work with cursors.
>That sounds good Nadya! I was considering doing something like that. It might save me a lot of time. I'd like to see the code. I assume you are using some trick like 'use again', to get the cursor to be updatable?
>I will email you.
>
>Does it just handle _a or does it handle multiple occurrences - _b _c and also, I have a vague memory that vfp handles things differently if the column name is 10 chars???
>
>>For cases like this we have a special post-processing altering table structure code. It changes all columns with _a to just fieldname. Send me a letter to work, I'll send you the code on Monday.
>>
>>Could be a Wish List for Toledo.
>>
>>>In sql server/transact sql when a query such as:
>>>
>>>select * from sosord, sostrs where sosord.csono=sostrs.csono
>>>
>>>is executed, the key value appears once in the result set as csono. In vfp you end up with csono_a, and csono_b.
>>>
>>>If I want my cursor result to be 'clean' and not have the underscores, then I need to explicitly name all the columns, and include the key from only one of the tables, once. But this results in very long query statements. I wrote a little routine to retrieve all of the column names for a given table into a formatted select string, and put it on the clipboard. This helps speed things up, but I still would be able to use select *.
>>>
>>>Is there any syntax, or trick that I can use to shorten my select statements. E.g. I wish there was a keyword like
>>>
>>>select * from sosord, sostrs where sosord.csono=sostrs.csono NODUPLICATEKEYVALUES
>>>
>>>Is there a specific reason why VFP's sql is implemented so differently than TRANSACT-SQL in such a fundamental area?
If it's not broken, fix it until it is.
My Blog