Dim i As Integer
Dim detail As String
strSQL = "SELECT * FROM detail where name='" & TextBox1.Text & "' and status='1'"
da = New SqlDataAdapter(strSQL, Conn)
da.Fill(ds, "detail")
If ds.Tables("detail").Rows.Count <> 0 Then
For i = 0 To ds.Tables("detail").Rows.Count - 1
detail = ds.Tables("detail").Rows(0).Item("id").ToString()
strSQL = "UPDATE detail SET status='2' where id='" & detail & "'"
Dim comSave As New SqlCommand
With comSave
.CommandType = CommandType.Text
.CommandText = strSQL
.Connection = Conn
.ExecuteNonQuery()
End With
Next
MessageBox.Show("เสร็จสิ้น")
ShowDataadd()
Else
MessageBox.Show("ไม่มีข้อมูล")
DataGridView1.Visible = False
End If
ถ้าเป็น id primary key ของ Detail มันก็จะไป select หา name จากตาราง detail ก่อน ใน Sub Query
เช่นหา name = A และมี status = 1 อาจจะมี name ที่ชื่อซ้ำกัน สรุปเจอ A สองแถว มันก็ Update จาก ID
ของสองแถวนั้นละ ให้มี Status = 2 ซึ่งก็คือ Update เฉพาะแถวที่มี Name = A และ Status = 1 อยู่ดี
กรณีที่สอง
ถ้าเป็น id foreign key เป็น id ของ Header มันจะไป select หา name จากตาราง detail ก่อน ใน Sub Query เช่นเคย
ซึ่งมันก็จะได้ id ของ Header มา ทีนี้ละ ไม่รู้แถวไหนโยงกับ Header บ้าง อัพเดท status = 1 หมดอะ (เฉพาะแถวที่โยงกับ Header)