4

我需要根据邮寄信息在 VFP 中创建唯一的记录 ID:zip5、地址、姓氏、名字。创建后,关系表将使用唯一 ID 加载到 SQL Server 7 中。有什么建议吗?

4

3 回答 3

5

您可以在 FoxPro Wiki上使用 GUID: GUID 条目。

这里有一些例子

使用 WSH 最简单的一种...

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

   * Other VFP
   oGUID = CreateObject("scriptlet.typelib")
   cGUID = substr( oGUID.GUID, 2, 36 )
于 2009-02-18T19:12:27.493 回答
2

VFP 确实支持唯一 ID - 因为它具有主索引(可以基于多个字段 - 但请确保键长度是固定的,因此如果您的 VFP 表使用 varchars 您将需要填充字段)和一个表也可以有候选索引(索引字段必须是唯一的,就像主键一样,但每个表可以有多个候选索引)。

这些中的任何一个都将在您的字段中强制执行唯一性,但是根据 zip5、地址、姓氏和名字生成主键效率低下。GUID 的建议会很好地工作,或者如果您有 VFP8 或更高版本,您可以使用Autoinc 列,这类似于 SQL Server 中的 Identity 列。

顺便说一句,唯一索引仅用于向后兼容..

于 2009-02-19T01:23:42.640 回答
-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 次,但我希望标识符之间的距离更远一些。

于 2012-02-19T07:03:19.257 回答