0

C# と DevExpress で注文を受けるためのアプリケーションを開発しており、一意の注文番号を生成する関数が必要です。注文番号には文字と数字を含める必要があり、長さは 20 です.. Guid.NewGuid() のようなものを見てきましたが、完全にランダムにしたり、自動インクリメント番号にしたりしたくありません..

誰でも助けることができますか?たとえそれが別の言語のスクリプトであっても、私は必死にアイデアが必要です:)

4

6 に答える 6

1

独自のタイプを作成できます。yyyyMMddWWW-YYY-XXXXXXX としましょう。ここで、WWW は店舗番号、YYY レジ ID XXXXXXX は 16 進数です (-> 16 進数に変換した実際の自動インクリメント番号かもしれません) 。これは単なるアイデアです。残念ながら、システムの要素によってそれがどのようになるかを決定する必要があります。

編集済み:また、チェックデジットアルゴリズムを適用できる場合は、間違いを避けるのにも役立ちます

于 2012-05-29T10:50:48.867 に答える
0

一つの考えが思い浮かびます。
DateTime.Now.Ticksを使用して、16進文字列に変換します。
出来上がり、String.Format("{0:X}", value);
十分な長さがない場合は、20桁が必要だと言った場合は、いつでもゼロで埋めることができます。

于 2012-05-29T10:51:33.030 に答える
0

2つの異なる方法:

  • 現在の時刻のMD5またはSHA1ハッシュを作成します
  • 増分番号のハッシュ
于 2012-05-29T10:38:44.350 に答える
0

Oded が示唆したように、Guid はランダムではありません (ネットワーク カードを持っている場合はそうではありません)。これは、時間と場所の座標に基づいています。詳細な説明については、Raymond Chens のブログ投稿を参照してください。
注文 ID には自動インクリメントされた int を使用することをお勧めします。なぜあなたがそれを使いたくないのか、それとも Guid を失敗させたくないのか理解できませんか?

一意性を維持し、システム内のさまざまな注文の順序を表すために、自動 ID 以外の方法は考えられません。

于 2012-05-29T10:49:26.150 に答える
0
  1. マザーボードIDを取得する
  2. hdd ID を取得する
  3. なんとか合流
  4. 秘密のコードを追加
  5. MD5を適用
  6. Base54 を適用

結果: 現在のクライアント PC にリンクされているシリアル コード:)

于 2012-05-29T11:37:18.120 に答える
0

私の2セント。

アイデアが必要な場合は、LuhnおよびLuhn mod Nアルゴリズムを参照してください。

これらのアルゴリズムは一意のコード ジェネレーターではありませんが、検証可能なコードを生成する方法についていくつかのアイデアを提供してくれる可能性があります (コードをデータベースに送信する前にコードの正確性を検証できるようにするため)。

于 2012-05-29T12:59:03.827 に答える