Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Generating Unique ID
Message
 
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00586682
Message ID:
00586700
Views:
14
This message has been marked as a message which has helped to the initial question of the thread.
What if it's open two or more times using USE AGAIN? Which of aliases would you want?

>Hi everybody,
>
>Here is my SP code:
>
>function GetNextID
>lparameters tcAlias
>local lnOldArea,lnNextID, lcDBC, lcOldSetDBC, llOpened, lcCurAlias
>llOpened=.t.
>*--- Variable Setup
>lcCurAlias=upper(alias())
>if empty(m.lcCurAlias)
>	=messagebox("No table open...",16,"Error")
>	return null
>endif
>tcAlias = iif(empty(m.tcAlias),m.lcCurAlias,upper(m.tcAlias))
>lnOldArea = select()
>lnNextID = 0
>lcDBC=cursorgetprop('database',m.tcAlias) && Return the name of owning database
>if empty(m.lcDBC)
>	=messagebox('You can not assign Next ID to the free table!',16,'Warning')
>	return null
>endif
>lcOldSetDBC=set('database') && Save current status
>if !dbused(m.lcDBC)
>	open data (m.lcDBC)
>	llOpened=.f. && Was not open before
>endif
>set database to (m.lcDBC) && Make this DBC current
>*--- Go to NextID Database to assign the next unique ID
>*--- Assumes the you are sitting in the correct DBC.
>if !OpenTble(addbs(justpath(m.lcDBC))+juststem(m.lcDBC)+"!"+"NextID",,,"Table")
>	=messagebox('NextID could not be opened!',16,'Warning')
>	return null
>endif
>select NextID
>if !seek(m.tcAlias)
>	insert into NextID (table,id) values (m.tcAlias,1)
>	lnNextID = 1
>else
>*--- RLOCK will attempt the lock indefinately, because it would be bad to return 0 (the alternative).
>*--- User will be able to cancel attempt if in a deadlock by pressing the ESC key.
>	if rlock()
>		replace NextID.id with NextID.id + 1
>		lnNextID = NextID.id
>		unlock
>	else
>		return null
>	endif
>endif
>*--- Return to prior workarea.
>select (m.lnOldArea)
>if not m.llOpened
>	close database
>endif
>if !empty(m.lcOldSetDBC)
>	set database to (m.lcOldSetDBC)
>endif
>return m.lnNextID
>
>The problem is, what if I open table under different alias? In default value I have GetNextID('AllFunctions').
>
>So, my problem is to find out under which alias AllFunctions table is opened. I'm having brain loss at this moment. How can I find out the alias by fullpath table name?
>
>Thanks a lot in advance.
--sb--
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform