Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
How can I avoid explicitly naming columns in sql query?
Message
 
 
À
19/07/2002 18:47:59
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Divers
Thread ID:
00680574
Message ID:
00680715
Vues:
29
This is not my code, but the code by my colleague:
		IF USED(justname )
			SELECT &justname 
		ELSE
			USE (ojc.curtable) in 0 EXCL  && Reopen table to do the alter table
			SELECT &justname
			*wait window 'table not there'  && nl  temporary handling.
		ENDIF
	lnumflds=afields(fldlistall,justname )  && Get the list of fields in array fldlist
	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
		*Wait window nowait 'Number of unclear fields are '+ALLTRIM(STR(lnumchgflds))
		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

		*wait window nowait "ALTRTABL: Total time = " + str(m.endtime - m.starttime, 10, 4)
		endtime = seconds()
		*wait window nowait "ALTRTABL: Total time = " + str(endtime - starttime, 10, 4)
	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
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform