2012-02-13 16 views
2

VB .Netを使用してeBay APIにアクセスし、完了したすべての注文をデータベースに保存しています。このデータベースは、20文字を超える注文番号を処理できない独自の出荷システムに送られます。 eBayは230407279314-680141236013の注文番号が長すぎます。注文番号は常に12の数字ハイフンと12の数字です。私がする必要があるのは、実際の注文番号の代わりに配送ソフトウェアで参照できるように、これを(アルファベット数字で表すことができます)より短い一意の注文キーに入れて、実際の注文IDとともにデータベースに保存します)。 20文字の制限の理由は、使用されるバーコードアルゴリズムです。 VB .NETでこれを実現する方法はありますか?この数値は、すでに存在しない限りユニークなものでもかまいません(ユニークな関数でも機能しますが、データベースにクエリを実行していないことを確認する必要があります)長すぎる別の一意の数値から固定長の一意の文字列を作成する

+0

私は、QuickbooksのPO番号と同じ問題がありました。これは、結合しようとしていた別のシステムのPO番号と比較して短すぎます。古いPO番号へのリンクを作成することは重要ではなかったので(会計部門による) –

+0

テーブルにはident列がありますか?先行ゼロでそれを使用してください。 – cadrell0

答えて

0

1つの固有の16進数 - ebayコードを2つの文字列として保存しているとします:lefstr ' - ' rightstring。したがって、この場合leftstring = '230407279314'とrightstring = '680141236013'となります。

あなたは、単一の文字列にそれらを入れて、あなたが進文字列として格納することができるはずそれから整数値を取得したら:id.toString(「X」)

idはなります20より大きい16進数は使用できません:)

5

実際には、その数値を20文字の文字列に変換できます。数字を6桁の数字に分割できます。

3840744312A60CD399ED 

はこのようにそれを実行します。

230407 -> 38407 
279314 -> 44312 
680141 -> A60CD 
236013 -> 399ED 

は、20文字の文字列を与える:それらのそれぞれが唯一保存される20ビットを必要とするとして、あなたはその後、5桁の16進数としてそれらを表現することができます:

Dim code As String = _ 
    Int32.Parse(orderNumber.Substring(0, 5)).ToString("x5") + _ 
    Int32.Parse(orderNumber.Substring(5, 5)).ToString("x5") + _ 
    Int32.Parse(orderNumber.Substring(11, 5)).ToString("x5") + _ 
    Int32.Parse(orderNumber.Substring(16, 5)).ToString("x5") 
+0

アルファベットのcaracterをサポートするバーコードを使用している限り、16進数を使用できます –

関連する問題