C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: オートナンバーについて


(過去ログ 46 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■25163 / inTopicNo.1)  オートナンバーについて
  
□投稿者/ 初心者 (141回)-(2008/09/16(Tue) 14:22:53)

分類:[.NET 全般] 

お世話になっております。
現在VB2005勉強中
デザイン ボタン1 グリッド1 テキストボックス3 コンボボックス1
データ登録システム
下のプログラムにSQL文でつくった下のオートナンバーを入れたいのですがどこに宣言したらいいでしょうか?
          SELECT MAX(IN_SYAINID)+1 FROM SYAIN
わかりずらい説明ですがお願いします。



Dim a As String

'ボタン1が押されたときのイベント
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\starsystem.STARSYST-DE959A\デスクトップ\Sql_SS1.mdb")
Dim SQLCm As OleDbCommand = Cn.CreateCommand
'IF文で条件分岐
If ComboBox1.SelectedIndex = -1 Then
MsgBox("選択してください!")
End If
If Nothing = TextBox1.Text Then
MsgBox("名前を入力しなさい!")
End If
If Nothing = TextBox3.Text Then
MsgBox("一言入力しなさい!")
End If
If IsNumeric(TextBox2.Text) = False Then
MsgBox("数字を入力しなさい!")
TextBox2.Text = ""
Exit Sub
End If
' Select文で判定
Select Case ComboBox1.Text
Case "システム部"
a = "0"
Case "営業部"
a = "1"
Case "総務部"
a = "2"
End Select
'IF文、Select文の判定が通ったらデータの新規登録をする命令をSQLで
SQLCm.CommandText = "INSERT INTO SYAIN(IN_BUSYOID,FC_SYAIN,nennrei,hitokoto,IN_DELFLG) VALUES ('" & a & " ','" & TextBox1.Text & " '," & TextBox2.Text & ",'" & TextBox3.Text & "'," & 0 & ") "
Cn.Open()
SQLCm.ExecuteNonQuery()
Cn.Close()

Dim Adapter As New OleDbDataAdapter(SQLCm)
Dim Table As New DataTable
'グリッドに表示するSQL命令
SQLCm.CommandText = "SELECT BUSYO.FC_BUSYONAME, SYAIN.FC_SYAIN, SYAIN.nennrei, SYAIN.hitokoto FROM BUSYO INNER JOIN SYAIN ON BUSYO.IN_BUSYOID = SYAIN.IN_BUSYOID "
Adapter.Fill(Table)
DataGridView1.DataSource = Table
Adapter.Dispose()
SQLCm.Dispose()
Cn.Dispose()
'各ボックスの表示されている値を空にする
ComboBox1.Text = ""
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
End Sub

引用返信 編集キー/
■25170 / inTopicNo.2)  Re[1]: オートナンバーについて
□投稿者/ ロック (95回)-(2008/09/16(Tue) 15:12:08)
良く分かりませんが、とりあえずinsertした時に最新の番号を取得したいという意味で

>SQLCm.CommandText = "INSERT INTO SYAIN(IN_BUSYOID,FC_SYAIN,nennrei,hitokoto,IN_DELFLG) VALUES ('" & a >& " ','" & TextBox1.Text & " '," & TextBox2.Text & ",'" & TextBox3.Text & "'," & 0 & ")
SQLCm.CommandText = "INSERT INTO SYAIN(IN_BUSYOID,FC_SYAIN,nennrei,hitokoto,IN_DELFLG) VALUES ('" & a & " ','" & TextBox1.Text & " '," & TextBox2.Text & ",'" & TextBox3.Text & "'," & 0 & ");SELECT MAX(IN_SYAINID)+1 FROM SYAIN"

>SQLCm.ExecuteNonQuery()
Object result = SQLCm.ExecuteScalar();
int iSYAIN = Convert.ToInt32(result);

って感じ?

# IDENTITY制約付けてSELECT SCOPE_IDENTITY();の方がいいような気がしなくもないですが
引用返信 編集キー/
■25185 / inTopicNo.3)  Re[2]: オートナンバーについて
□投稿者/ 初心者 (142回)-(2008/09/16(Tue) 17:47:33)
No25170 (ロック さん) に返信
> 良く分かりませんが、とりあえずinsertした時に最新の番号を取得したいという意味で
>
> >SQLCm.CommandText = "INSERT INTO SYAIN(IN_BUSYOID,FC_SYAIN,nennrei,hitokoto,IN_DELFLG) VALUES ('" & a >& " ','" & TextBox1.Text & " '," & TextBox2.Text & ",'" & TextBox3.Text & "'," & 0 & ")
> SQLCm.CommandText = "INSERT INTO SYAIN(IN_BUSYOID,FC_SYAIN,nennrei,hitokoto,IN_DELFLG) VALUES ('" & a & " ','" & TextBox1.Text & " '," & TextBox2.Text & ",'" & TextBox3.Text & "'," & 0 & ");SELECT MAX(IN_SYAINID)+1 FROM SYAIN"
>
> >SQLCm.ExecuteNonQuery()
> Object result = SQLCm.ExecuteScalar();
> int iSYAIN = Convert.ToInt32(result);
>
> って感じ?
>
> # IDENTITY制約付けてSELECT SCOPE_IDENTITY();の方がいいような気がしなくもないですが
お返事ありがとうございました
ロックさんのをもとに変数を作成して
インサートに当てはめてみたらできました
'SQLでオートナンバーを作成
SQLCm.CommandText = "SELECT MAX(IN_SYAINID)+1 FROM SYAIN"
Dim k As String
Cn.Open()
k = SQLCm.ExecuteScalar
Cn.Close()

'IF文、Select文の判定が通ったらデータの新規登録をする命令をSQLで
SQLCm.CommandText = "INSERT INTO SYAIN(IN_SYAINID,IN_BUSYOID,FC_SYAIN,nennrei,hitokoto,IN_DELFLG) VALUES (" & k & ",'" & a & " ','" & TextBox1.Text & " '," & TextBox2.Text & ",'" & TextBox3.Text & "'," & 0 & ")"
Cn.Open()
SQLCm.ExecuteNonQuery()
Cn.Close()
ありがとうございました
またおねがいいたします。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -