Dim sqlAutoNum As String = "SELECT MAX(id)+1 id FROM test"
Dim sqlReader As SqlDataReader
Dim cmd As SqlCommand
cmd = New SqlCommand(sqlAutoNum, conn)
sqlReader = cmd.ExecuteReader
If IsDBNull("id") Then
TextBox1.Text = "1"
Else
sqlReader.Read()
TextBox1.Text = sqlReader("id")
End If
sqlReader.Close()
ปัญหาตอนนี้คือ มันไม่ยอมเข้าลูป if มันเข้า else ตลอด อาจเป็นเพราะในตารางไม่มีข้อมูลใดๆ อยู่เลยหรือป่าว
กรณีที่ SELECT แล้วไม่ได้ข้อมูลมาเลย ก็ใช้วิธีนับ rows เอาครับ
If DataTable.rows.count = 0 Then "ทำไรทำไป"
กับกรณีที่ ฟิวในฐานข้อมูลมันมีค่าเป็นค่าว่าง (Null)
อันนี้สมมติว่าจะเช็ค ใน row index ที่ i และ column index ที่ 2 มีค่า ว่าง (Null)
ก็ If DataTable.rows(i).item(2) Is DBNull.Value Then "ทำไรทำไป"
Dim newID As Integer
Dim cmdBuilder As System.Text.StringBuilder = New System.Text.StringBuilder()
cmdBuilder.AppendLine( "SELECT " )
cmdBuilder.AppendLine( " CASE Count([id])" )
cmdBuilder.AppendLine( " WHEN 0 THEN 1 " )
cmdBuilder.AppendLine( " ELSE MAX([id]) + 1" )
cmdBuilder.AppendLine( " END AS [NEWID] " )
cmdBuilder.AppendLine( "FROM [test]" )
Dim cmd As SqlCommand = New SqlCommand ( cmdBuilder.ToString() ,conn)
Try
conn.Open()
newID = Convert.ToInt32(cmd.ExecuteScalar())
Catch ex As Exception
'Error handle here
End Try