在VFP

2009-02-18 66 views
4

創建唯一的ID,我需要創造出獨特的記錄ID在VFP基礎上郵寄資料:zip5,地址,姓氏,名字。一旦創建,關係表將被加載到具有唯一ID的SQL服務器7中。任何提示?在VFP

回答

4

您可以使用GUID:GUID entry at FoxPro Wiki

這裏有一些examples

一個最簡單的使用WSH ...

* VFP 7+ 
    oGUID = CreateObject("scriptlet.typelib") 
    cGUID = Strextract(oGUID.GUID, "{", "}") 

    * Other VFP 
    oGUID = CreateObject("scriptlet.typelib") 
    cGUID = substr(oGUID.GUID, 2, 36) 
2

VFP確實有唯一ID的支持 - 因爲它具有Primary Indexes(可根據多個字段 - 但要確保密鑰的長度是固定的,所以如果你的VFP表使用VARCHAR處理則需要填充字段)和表也可以有Candidate Indexes(其中索引字段(S)必須是唯一的,就像一個主鍵,但你可以爲每個表的多個候選索引)。

這些要麼就會增強對自己領域的獨特性,但基於zip5,地址生成主鍵,姓氏和名字將是低效的。 GUID的建議可以很好地工作,或者如果您有VFP8或更高版本,則可以使用Autoinc column,這與SQL Server中的Identity列類似。

順便說一句,唯一索引only used for backward compatibility ..

-1

我創建了自己的功能,爲此目的返回一個唯一的標識符。當我有新的記錄時,我只是掃描數據庫,並使用新的uid替換數據庫中的唯一標識符字段(我稱爲我的UID),如果該記錄沒有。

FUNCTION UIDgenerator() 
    LOCAL c_UID 
    LOCAL c_dump 

    c_UID = STRTRAN(SYS(2015),"_","") + [-] 

    c_dump = STRTRAN(SYS(2015),"_","") 
    c_dump = STRTRAN(SYS(2015),"_","") 
    c_dump = STRTRAN(SYS(2015),"_","") 

    c_UID = c_UID + STRTRAN(SYS(2015),"_","") 


    RETURN c_UID 

    endfunction() &&UIDGenerator 

您不必做c_dump 3次,但我希望標識符分得更遠一些。