|
|
|
สอบถามเรื่อง VB กดบันทึกข้อมูลได้แล้วแต่มีข้อมูลบางส่วนไม่แสดงใน database SQL Server |
|
|
|
|
|
|
|
Code (VB.NET)
Private Sub tsSave_Click(sender As Object, e As EventArgs) Handles tsSave.Click
If ListView1.Items.Count = 0 Then ' ถ้านับแถวรายการสินค้าที่ขายในลิสต์วิว ได้ 0 แถว ก็คือไม่มีสินค้าใด ๆ ให้ขาย
MessageBox.Show("ไม่ปรากฏรายการขายใด ๆ ให้บันทึกลงฐานข้อมูล", "ผิดพลาด", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub ' ออกจากการทำงานของปุ่มบันทึกไป
End If
If MessageBox.Show("ต้องการบันทึกรายการขายสินค้า?", "ยืนยัน", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
tr = Conn.BeginTransaction()
' Try
For i = 0 To ListView1.Items.Count - 1
sb = New StringBuilder
sb.Append("INSERT INTO AssistSaleDetail(SaleID, ProductID, Price, Qty, TotalPrice) ")
sb.Append(" VALUES (@SaleID, @ProductID, @Price, @Qty, @TotalPrice) ")
sql = sb.ToString()
Command = New SqlCommand
With Command
.CommandText = sql
.CommandType = CommandType.Text
.Connection = Conn
.Transaction = tr
.Parameters.Clear()
.Parameters.Add("@SaleID", SqlDbType.VarChar).Value = txtSaleid.Text
.Parameters.Add("@ProductID", SqlDbType.VarChar).Value = CStr(ListView1.Items(i).SubItems(0).Text)
.Parameters.Add("@Price", SqlDbType.Decimal).Value = CDec(ListView1.Items(i).SubItems(4).Text)
.Parameters.Add("@Qty", SqlDbType.Int).Value = CInt(ListView1.Items(i).SubItems(6).Text)
.Parameters.Add("@TotalPrice", SqlDbType.Decimal).Value = CDec(ListView1.Items(i).SubItems(7).Text)
.ExecuteNonQuery()
End With
'ส่วนต่อไปนี้ คือส่วนของการตัด Stock สินค้าในตาราง Product
sb.Remove(0, sb.Length)
sb.Append("SELECT * FROM AssistStock")
sb.Append(" WHERE ProductID=@ProductID")
sql = sb.ToString()
Dim OldQtyStock As Integer = 0 ' ประกาศตัวแปรนี้ เพื่อเก็บจำนวนสินค้าคงเหลือตัวเดิม
Dim NewQtyStock As Integer = 0 ' ประกาศตัวแปรนี้ เพื่อเก็บจำนวนสินค้าคงเหลือปัจจุบัน
Dim tmpProductid As String ' ประกาศตัวแปรนี้ เพื่อเก็บรหัสสินค้าแต่ละแถวใน ListView
Dim qtySale As Integer ' ประกาศตัวแปรนี้ เพื่อเก็บจำนวนขายในแต่ละแถวของ ListView
With Command
.CommandText = sql
tmpProductid = CStr(ListView1.Items(i).SubItems(0).Text)
.Parameters.Clear()
.Parameters.Add("@ProductID", SqlDbType.VarChar).Value = tmpProductid 'ให้ฟิลด์ ProductID ในฐานข้อมูลเก็บค่าตัวแปร tmpProductid
dr = .ExecuteReader()
If dr.HasRows Then
dr.Read()
OldQtyStock = dr.GetInt32(dr.GetOrdinal("Stock")) ' อ่านค่าฟิลด์ Stock มา เพื่อจะดูว่าสินค้าคงเหลือเดิมมีกี่ชิ้น โดยเอาจำนวนชิ้นที่ได้มาเก็บไว้ที่ตัวแปร OldQtyStock
dr.Close()
End If
qtySale = CInt(ListView1.Items(i).SubItems(6).Text)
NewQtyStock = OldQtyStock - qtySale ' ให้ตัวแปร NewQtyStock เก็บค่า จาก จำนวนคงเหลือเดิม - จำนวนขายสินค้า
dr.Close()
sb.Remove(0, sb.Length)
sb.Append("UPDATE AssistStock") ' แก้ไขตาราง Product
sb.Append(" SET Stock=@Stock") ' แก้ไขฟิลด์ จำนวนคงเหลือ (Stock)
sb.Append(" WHERE (ProductID=@ProductID)")
sql = sb.ToString()
With Command
.CommandText = sql
.Parameters.Clear()
.Parameters.Add("@Stock", SqlDbType.Int).Value = NewQtyStock ' กำหนดฟิลด์ Stock ในฐานข้อมูล เก็บค่า NewQtyStock ที่คำนวณได้
.Parameters.Add("@ProductID", SqlDbType.VarChar).Value = tmpProductid
.ExecuteNonQuery()
End With
End With
Next
'-----------ส่วนของการบันทึกข้อมูลลงตาราง Sale -----------------------------
txtQty.Text = Intnum
sb.Remove(0, sb.Length)
sb.Append("INSERT INTO AssistSale (SaleID, SaleDate, UserName, CategoryName, Brand, Gen, Total, Discount, Net) ")
sb.Append(" VALUES (@SaleID, @SaleDate, @UserName, @CategoryName, @Brand, @Gen, @Total, @Discount, @Net ) ")
sql = sb.ToString()
Command = New SqlCommand
With Command
.CommandText = sql
.CommandType = CommandType.Text
.Connection = Conn
.Transaction = tr
.Parameters.Clear()
.Parameters.Add("@SaleID", SqlDbType.VarChar).Value = txtSaleid.Text
.Parameters.Add("@SaleDate", SqlDbType.Date).Value = dtpDateSale.Value
.Parameters.Add("@UserName", SqlDbType.VarChar).Value = LblEmp.Text
.Parameters.Add("@CategoryName", SqlDbType.VarChar).Value = txtCategoryName.Text
.Parameters.Add("@Brand", SqlDbType.VarChar).Value = txtBrand.Text
.Parameters.Add("@Gen", SqlDbType.VarChar).Value = txtGen.Text
.Parameters.Add("@Total", SqlDbType.Decimal).Value = CDbl(LblTotal.Text)
.Parameters.Add("@Discount", SqlDbType.Decimal).Value = CDbl(txtDiscount.Text)
.Parameters.Add("@Net", SqlDbType.Decimal).Value = CDbl(LblNet.Text)
.ExecuteNonQuery()
End With
tr.Commit()
MessageBox.Show("บันทึกรายการขายสินค้าเรียบร้อยแล้ว", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
ClearData()
ClearProductData()
ListView1.Items.Clear()
LockButton()
LockInputControl()
End Sub
Tag : VB.NET
|
|
|
|
|
|
Date :
2018-12-15 14:37:49 |
By :
nancom1 |
View :
862 |
Reply :
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ฐาน และข้อมูลที่ไม่แสดงครับ
|
|
|
|
|
Date :
2018-12-15 14:40:21 |
By :
nancom1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ช่วยทีค้าบบบบ เช็คดูคาดว่าชัวแล้วตัวแปรที่แทนก็ตรงหมดนะครับ
|
|
|
|
|
Date :
2018-12-15 19:37:21 |
By :
nancom1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|