VB.Net2008でデータベースから空き番号を検索して表示したいのですが・・・

VB.Net2008でデータベースから空き番号を検索して表示したいのですが・・・ 開発環境 OS:Windows Vista VB.net2008 DB:オラクル11g VB.net 初心者です。以下の内容で詰まっています。どうかご教授お願いします。 現在、フォーム上にボタン(Button1)を一つとテキストボックスを二つ(TextBox1・TextBox2)を配置しています。まずTextBox1に所属コードを入力しボタンをクリックすると、データベース(オラクル)の社員テーブルから社員番号(01~10)の中から【最小の空き番】を探し出して、TextBox2に表示したいのですが、どのようにプログラムとSQL文を書いていいのかさっぱり分かりません。どうか宜しくお願いします。 ■社員テーブル |氏名|社員番号|所属コード| | AAA | 01 | 1 | | BBB | 02 | 1 | | CCC | 03 | 1 | | DDD | 05 | 1 | | EEE | 06 | 1 | | FFF | 07 | 1 | | GGG| 08 | 1 | | HHH| 10 | 1 | | IIIIII| 01 | 2 | | JJJ | 02| 2 | | KKK| 03 | 2 | | LLL | 04 | 2 | |MMM| 06 | 2 | |NNN | 09 | 2 | |OOO| 10 | 2 | 例えばTextBox1に所属コード「1」を入力してボタンを押すと、上記から最小の空き番「04」を表示。TextBox1に所属コード「2」を入力してボタンを押すと「05」を表示 ※表が汚くてすみません

Windows 10905閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

0

VB上からSQLを作成してOracleに発行し、 そのデータセットを受け取る事はできますよね。 A案)VBで1レコードづつ確認する ・「所属コード」で抽出 ・「社員番号」昇順 で呼び出したテーブルを、 1レコード目~最終レコードまで、 1レコード目:「社員番号」="01" 2レコード目:「社員番号」="02" かどうかチェックしていく。 チェックに合わないものが「欠番」。 ------------------------------------ B案)Oracle上で抽出計算。 ダミーの固定値テーブル「社員番号値」 [社員番号] 01 02 ・・・・ 99 をオラクル上に作っておけば、 不一致クエリーで取得できる。 select T1.[社員番号] from [社員番号値] as T1 left join [社員テーブル] as T2 on T1.[社員番号]=T2.[社員番号] where ( (T2.[社員番号] IS NULL) and (T2.[所属コード]=[指定値]) ) order by T1.[社員番号] ; 上の例は「order by T1.[社員番号]」をしたので、 1行目に欠番の最小が来るが、 group化して「min(T1.[社員番号])」で取得しても可。 ※社員番号が01~99までという制限がある。

その他の回答(1件)

0

検証はしていませんが、以下のSQLでどうでしょうか? select to_char(to_number(min(A.社員番号)) + 1, 'fm00') 社員番号 from 社員テーブル A where 所属コード = 1 and not exists ( select 1 from 社員テーブル B where A.所属コード = B.I_所属コード and A.社員番号 + 1 = B.社員番号 )