質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Q&A

解決済

1回答

1432閲覧

WEB登録システム 既存のデータがすでに登録されていても、途中から「100」から採番したい

nekomura

総合スコア132

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

0グッド

0クリップ

投稿2016/04/13 05:44

編集2016/04/13 06:04

よろしくお願いいたします。

機器管理システムをwebアプリを製作中です。
その中のロジックの一つとして、データを登録していくものがあるのですが、
「100番」から採番していきたいと思っています。

追記:使用DBは、SQLserverです。
また、この質問に関連する前回の質問は下記です。
https://teratail.com/questions/32150

条件として、すでにいくつか新規登録済みです。
(任意の番号で採番された既存のデータがすでに何件か存在している状態)
たとえば、すでに1~5という番号で採番されたデータがある状態から、新規登録をしても、
データが一件も無い状態から新規登録をしても、そこからは「100、101、102…」と採番していく
コードを書きたいのです。

後述するコードの様にまではこの掲示板の皆様からの助けを借りながらなんとか書きましたが、
この状態であると
「データが一件も無い状態から新規登録」
の場合しか100番からの採番になりません。

コードに追加したいロジックは以下です。
●(先に登録されているデータが存在すれば)
・そのデータの採番が99より小さければ
・ser(後述のコードを参照ください)の値(99)はそのまま
・nullでも、serの値(99)はそのまま

・データの採番が100以上なら、その数に+1する

後述のソースコードと併せて、どうかご教示ください。
当方はまだ初心者の為、サンプルコードなどいただければ尚幸いです。
どうぞお知恵をお貸しください。

// ser の Max 取得 //既存のデータが何件あっても、(または無くても)「100」から採番する long ser = 99;//tanizawa String val = null; EntityManager em = ServiceLocator.getInstance().getEntityManager(); Query q = Query.newQuery( "select max(record_id) from pclcm.t_anken " ); SearchResult<Object[]> sres = em.search(q); if (sres != null) { Object[] e = (Object[])sres.getFirst(); if (e[0] != null) { val = (String)e[0]; } } if (val != null) { ser = Long.parseLong(val); } ser += 1; val = String.valueOf(ser); // System.out.println("********** issueAnkenNo new anken_no = " + val); entity.setValue("record_id", val);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KiyoshiMotoki

2016/04/13 05:57

前回のご質問でも同様のやり取りがありましたが、お使いのDB製品の名前を明記してください。それによって、解決策が変わる可能性がありますので。 また、関連する質問があれば、そのリンクも貼っておくと、詳しい状況がわかるのでより具体的な回答を得やすくなるかもしれません。
nekomura

2016/04/13 06:04

Kiyosi様 追記いたしました。 ご指摘ありがとうございます。
guest

回答1

0

ベストアンサー

「entity.setValue("record_id", val);」の直前で「valが100以下かどうか」をチェックして、100以下なら強制的に100にするだけじゃだめなんですか?

投稿2016/04/13 05:49

tkturbo

総合スコア5572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nekomura

2016/04/13 06:25

titurbo様 ご無沙汰しております、いつもお世話になっております。 ご教示に従い、「entity.setValue("record_id", val);」の直前に 下記の様にコードを書いてみましたが、うまくいきません。 ’ if (val < 100){ val = String.valueOf(100); } }’ 重ね重ねで恐縮ですが、訂正箇所及び追加のお教えをいただければ幸いです
tkturbo

2016/04/13 06:30

「{」の出現回数が1回、「}」が2回なので、コピペミスでなければコンパイルエラーがおきてるのでは。。。
nekomura

2016/04/13 06:40

tkturbo様 失礼いたしました、上記はこちらに載せる際のコピペミスです。。。 コンパイルは通るのですが、実際にシステム上で登録をしようとするとエラーになってしまいます。 現在独自の開発環境上にいる為、エラーの詳細はわからない状況です。 (コードが正しければ問題ないので、私の書いたものが何かしら間違っていると思われます) もし可能でしたら、もう少しお知恵を拝借できないでしょうか。 いつも申し訳ありません。
tkturbo

2016/04/13 07:03 編集

「if (val < 100){」ではStringとintを比較しようとしてるのでよろしくないです。 いっそ「ser += 1;」のところで「if( ser < 100) { ser = 100; } else { ser += 1; }」などとしてみてはどうでしょう? また、「if (e[0] != null) {」のところでNullPointerExceptionやIndexOutOfBoundsが出るかもしれません(SerchResult#getFirst()の仕様がよくわかりませんが)。
nekomura

2016/04/13 07:14

tkturbo様 SerchResult#getFirst()のくだりは、独自の開発環境により少々仕様がjava本来のものとは違っています、紛らわしくて申し訳ありません。select文を配列に代入して、目的のカラムを探す…といったような意味合いです。 いつも迅速なご回答に感謝です。 早速ご回答の内容を試して見ます。 ありがとうございます。
nekomura

2016/04/13 08:11

tkturbo様 お世話になっております。 「if( ser < 100) { ser = 100; } else { ser += 1; }」 のコード、試させていただきました。 型違いの指摘なども頂いたおかげで、エラーも出なくなりました。 ただ、IDの採番が増えていかず、同じ数字ばかり出るようになってしまいました。。。 頂いたヒントを元にもう少し試行錯誤してみます。 いつもありがとうございます!
nekomura

2016/04/13 10:18

tkturbo様 お世話になっております。 ご教示いただきましたコードを、パフォーマンスの為elseは無しにして、 「ser += 1;」 の直前に入れたところ、成功しました!(私がif文をいれた場所が悪かったようです) いつもありがとうございます♪ お蔭様でうまくいきました^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問