■12061 / inTopicNo.1) |
VB2005 coalesce(MAX(id),0)+1 |
□投稿者/ カルマ (1回)-(2007/12/28(Fri) 17:16:26)
|
分類:[VB.NET/VB2005]
2007/12/28(Fri) 17:21:01 編集(投稿者) 2007/12/28(Fri) 17:20:51 編集(投稿者)
すみません、学校の明日までの課題でVB2005(使い出して3日目ですASP.NET等の経験はあり)での開発プログラムが出たのですが、どうしてもタイトルの使い方が分からず困り果てています。
DBの初期段階における いわゆる{何も入っていない状況で}ID自動生成をさせる時に生じるエラーを回避したいのですが いろいろネットで探し
ーーーーーーーーーーーーー
INSERT INTO table VALUES(SELECT coalesce(MAX(id),0)+1 FROM talbe);
とすれば0が戻ると思います。 coalesceは値がnullの場合に代替えの値を返す関数です。
ーーーーーーーーーーーーー
というのを、見つけたのですが、sqlの部分でエラーが出てしまいます。 諦めてifでnullを判断しようかと思いDBNullを使用したのですがこれもエラーだらけで
Imports DBConnect Imports MySql.Data.MySqlClient
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Me.Master.Item_Clicked() End Sub
Protected Sub BtnRegist_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnRegist.Click Dim a As New DBConnect Dim Form As Integer Dim Position As Integer Dim Place As Integer Dim NId As Integer 'Dim login As New SessionManagement 'login.LoginCheck()
Place = 1 a.Open()
Dim x As MySqlDataReader = a.SqlRead("select Id from Company ORDER BY Id DESC") x.Read() NId = x("Id") + 1
a.Close() ' MsgBox(x("Id"))
If RdoFStock.Checked = True Then Form = 0 Position = 0 ElseIf RdoRStock.Checked = True Then Form = 0 Position = 1 ElseIf RdoFLimited.Checked = True Then Form = 1 Position = 0 ElseIf RdoRLimited.Checked = True Then Form = 1 Position = 1 End If
Dim z As Integer = a.SqlUpdate("INSERT INTO Company(Id,Kana,Name,Form,Position,Place) VALUES('" & NId & "','" + TbxKanaCustomer.Text + "','" + TbxCustomer.Text + "'," & Form & "," & Position & "," & Place & ")")
↑この部分で使うのかな、と思っているのですが正確なsqlが打てずエラーばかりで
a.Close()
End Sub
End Class
もしよろしければご教授ください m(__)m
|
|