4

郵送情報(zip5、住所、姓、名)に基づいてVFPで一意のレコードIDを作成する必要があります。作成されると、リレーショナルテーブルは一意のIDでSQLServer7に読み込まれます。何か提案はありますか?

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、address、lastname、およびfirstnameに基づいて主キーを生成するのは非効率的です。GUIDの提案はうまく機能します。または、VFP8以降を使用している場合は、 SQLServerのID列に類似したAutoinc列を使用できます。

ちなみに、一意のインデックスは下位互換性のためにのみ使用されます。

于 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 に答える