2012-05-09 14 views
1

テーブルの従業員のプライマリキーがあります。私はそれを「IDS」と名づけました。 IDSデータはK-00001、K-00002などのようなものです 私はこのIDSをASP.NETで自動生成する方法を教えてください、SQLではトリガーや関数を使用していませんか?ASP.NETでDBから自動生成されたID

私はこのように私のコードを行っている:私はこのように書くときので...

  DBRabbit _db = new DBRabbit(); 
      Employee k = new Employee(); 
      var row = (from r in _db.Employees 
         orderby r.IDS descending 
         select r).FirstOrDefault(); 
      var n = row.IDS.PadLeft(5, '0');  
      IDSText.Text = n.ToString(); 

そして、+ 1に「N」を追加する方法を考えている間、私はこだわっている:

var n = row.IDS.PadLeft(5, '0')+1; 

(最終レコードはK-00010)
結果はK-000101 DBを変更せずにSQL Serverスクリプト/クエリを使用してK-00011にする方法は?

答えて

5

IDSの列を自動的に増やすようにしてください。 式訂正:あなたはK-00010K-00011のための別の列を持っている必要がある場合も、...私は

'K-' + cast(right([IDS]+(100000),(5)) as varchar(5)) 

EDITは、次の式で計算列を使用するためにあなたを示唆しているであろう。

+1

+1:素敵な提案。私が特に好むのは、実装の容易さです。 OPは設計全体をねじ込むことなくこれを実装することができます。 –

+0

これは簡単です。 – Kaf

+0

私はそれをintに変更し、その "キャスト"をどのように使用するのかを自動インクリメントに変更しましたか?それはASPまたはSQLサーバーで使用されていますか? –

0

試してみてください。

var n = (Convert.ToInt32(row.IDS) + 1).ToString().PadLeft(5, '0'); 
+0

K-を前面からも剥がしていなければなりません。彼は間違って "インテリジェントな"ナンバートリックになります。 –

+0

ええ、私は "K"を忘れました...... – MikeTWebb

2

は、列の自動インクリメントを行います。経験則として、は決してのプライマリキーを手動で増やす必要があります。これは問題を募集しています。適切な一連のイベントは、そのロジックを妥協するでしょう。

+2

「問題」は「恐ろしい、ひどい痛みを伴う悪夢」と言っていい方法です。 +1 =) – jadarnel27

+1

実際にこのようなことが行われた回数は失われています。それは起こるのを待っているだけです。 –

1

ちょうどあなたの方法は、マーフィーはと遊ぶためにほとんど保証チャンスとぐちゃぐちゃがたくさんあるどこかの自動車株式会社整数(好みでDBを)持っているし、その後

String.Concat("K-",KeyValue.ToString().PadLeft(5,'0'); 

とあなたは間違いない非常に意味のある表現を構築あなたの頭。あなたがしていることをしないでください。

0

あなたは上記のjavascriptを使用していますか?そうである場合は

VARを使用してみてくださいN = .toString()。PadLeft(5、 '0')

substirng関数は除去することである(番号((2))+ 1 row.ids.substring) "k-"

関連する問題