strsql = "INSERT INTO GoodsReceive_Detail (re_id_m,re_id_detail,name_re_m,type_id,type_id_sub) VALUES (@re_id_m,@re_id_detail,@name_re_m,@type_id,@type_id_sub)"
For i As Integer = 0 To DataGridView1.RowCount - 1
If Not DataGridView1.Rows(i).IsNewRow Then
connectdb()
cm = New SqlCommand(strsql, cn)
With cm
.Parameters.Add(New SqlParameter("@re_id_m", txtRe_id_m.Text))
.Parameters.Add(New SqlParameter("@re_id_detail", txtre_id_detail.Text))
.Parameters.Add(New SqlParameter("@name_re_m", DataGridView1.Rows(i).Cells(2).Value))
.Parameters.Add(New SqlParameter("@type_id", DataGridView1.Rows(i).Cells(3).Value))
.Parameters.Add(New SqlParameter("@type_id_sub", DataGridView1.Rows(i).Cells(4).Value))
End With
cm.ExecuteNonQuery()
cm.Parameters.Clear()
closedb()
End If
Next
MessageBox.Show("บันทึกข้อมูลรายการรับ เรียบร้อยแล้ว", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
Me.Dispose()
ผมมี Sub ที่สำหรับตรวจสอบค่าก่อน แล้วเพิ่มค่าให้ แล้วค่อยไปบันทึกอีกทีครับ
Code (VB.NET)
Sub AutoID()
Dim S As String
strsql = "SELECT MAX(RIGHT(re_id_detail,5)) AS max_id FROM GoodsReceive_Detail"
connectdb()
cm = New SqlCommand(strsql, cn)
rs = cm.ExecuteReader
rs.Read()
If Not rs.HasRows Then
S = "000001"
Else
i = rs.Item("max_id")
i += 1
S = i.ToString("000000")
End If
closedb()
txtre_id_detail.Text = txt4.Text & S
End Sub
เอา function นี้ไปรันใน sql server น่ะ
ปล. เลือก Database ให้ถูกด้วยล่ะ
Code (SQL)
create function fnGetDocNo() returns varchar(5) as
begin
declare @value varchar(5)
declare @result varchar(5)
select @value = max(re_id_detail) from GoodsReceive_Detail;
if(@value is null)
set @result = '00001'
else
set @result = right('0000'+cast(@value+1 as varchar(5)),5);
return @result;
end;
insert ก็น่าจะเขียนประมาณนี้ล่ะ Code (VB.NET)
strsql = "INSERT INTO GoodsReceive_Detail (re_id_m,re_id_detail,name_re_m,type_id,type_id_sub) VALUES (@re_id_m,@re_id_detail,@name_re_m,@type_id,@type_id_sub)"
For i As Integer = 0 To DataGridView1.RowCount - 1
If Not DataGridView1.Rows(i).IsNewRow Then
connectdb()
cm = New SqlCommand(strsql, cn)
With cm
.Parameters.Add(New SqlParameter("@re_id_m", txtRe_id_m.Text))
.Parameters.Add(New SqlParameter("@re_id_detail", "fnGetDocNo()")) '-----เรียกใช้ function fnGetDocNo จ้า
.Parameters.Add(New SqlParameter("@name_re_m", DataGridView1.Rows(i).Cells(2).Value))
.Parameters.Add(New SqlParameter("@type_id", DataGridView1.Rows(i).Cells(3).Value))
.Parameters.Add(New SqlParameter("@type_id_sub", DataGridView1.Rows(i).Cells(4).Value))
End With
cm.ExecuteNonQuery()
cm.Parameters.Clear()
closedb()
End If
Next
MessageBox.Show("บันทึกข้อมูลรายการรับ เรียบร้อยแล้ว", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
Me.Dispose()
strsql = "INSERT INTO GoodsReceive_Detail (re_id_m,re_id_detail,name_re_m,type_id,type_id_sub) VALUES (@re_id_m,@re_id_detail,@name_re_m,@type_id,@type_id_sub)"
For i As Integer = 0 To DataGridView1.RowCount - 1
If Not DataGridView1.Rows(i).IsNewRow Then
AutoID()'Sub ที่สำหรับตรวจสอบค่าก่อน แล้วเพิ่มค่าให้ แล้วค่อยไปบันทึกอีกทีครับ
connectdb()
cm = New SqlCommand(strsql, cn)
With cm
.Parameters.Add(New SqlParameter("@re_id_m", txtRe_id_m.Text))
.Parameters.Add(New SqlParameter("@re_id_detail", txtre_id_detail.Text))
.Parameters.Add(New SqlParameter("@name_re_m", DataGridView1.Rows(i).Cells(2).Value))
.Parameters.Add(New SqlParameter("@type_id", DataGridView1.Rows(i).Cells(3).Value))
.Parameters.Add(New SqlParameter("@type_id_sub", DataGridView1.Rows(i).Cells(4).Value))
End With
cm.ExecuteNonQuery()
cm.Parameters.Clear()
closedb()
End If
Next
MessageBox.Show("บันทึกข้อมูลรายการรับ เรียบร้อยแล้ว", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
Me.Dispose()