ช่วยดูโค้ดให้หน่อยค่ะ เมื่อสินค้าหมดอายุ ต้องไม่สามารถขายสินค้าได้ค่ะ เขียนแล้วมันยังขายได้อยู่เลย
เมื่อสินค้าหมดอายุ ต้องไม่สามารถขายสินค้าได้ค่ะ เขียนแล้วมันยังขายได้อยู่เลย ช่วยหน่อยนะค่ะ ด่วนมากๆๆๆ
Private Sub cmdAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAdd.Click
If (txtSearchProduct.Text.Trim() = "") OrElse (lblProductName.Text.Trim() = "") Then
txtSearchProduct.Focus()
Exit Sub
End If
If CDate(Label7.Text) < Today Then
CheckExpdate()
MessageBox.Show("สินค้าตัวนี้ไม่สามารถขายได้ เนื่องจากหมดอายุแล้ว !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtSearchProduct.Focus()
End If
If CInt(txtAmount.Text) > Amount Then
MessageBox.Show("คุณระบุจำนวนสินค้าที่ขาย มากกว่าจำนวนสินค้าที่อยู่ในร้าน !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtAmount.Focus()
txtAmount.SelectAll()
Exit Sub
End If
Dim i As Integer = 0
Dim lvi As ListViewItem
Dim ProductID As String = ""
For i = 0 To lsvProductList.Items.Count - 1
ProductID = CStr(Val(CStr(lsvProductList.Items(i).SubItems(0).Text.Trim())))
If txtSearchProduct.Text.Trim() = ProductID Then
MessageBox.Show("คุณเลือกรายการสินค้า ซ้ำกัน !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
ClearProduct()
txtSearchProduct.Focus()
Exit Sub
End If
Next
Dim anyData() As String
anyData = New String() { _
txtSearchProduct.Text.Trim(), _
lblProductName.Text, _
lblSalePrice.Text, _
txtAmount.Text, _
lblTotal.Text _
}
lvi = New ListViewItem(anyData)
lsvProductList.Items.Add(lvi)
ClearProduct()
cmdExchange.Enabled = True
cmdSave.Enabled = True
CalculateNet()
txtSearchProduct.Focus()
End Sub
Private Sub CheckExpdate()
Dim OldAmount As Integer = 0
Dim NewAmount As Integer = 0
sb.Remove(0, sb.Length)
sb.Append("SELECT ProdID,ProdName,ExpDate")
sb.Append(" FROM Product")
sb.Append(" WHERE ExpDate=Getdate()")
Dim sqlProduct As String = sb.ToString()
Dim dr As SqlDataReader
Dim dt As DataTable
com = New SqlCommand()
With com
.CommandType = CommandType.Text
.CommandText = sqlProduct
.Connection = Conn
dr = .ExecuteReader()
dt = New DataTable()
If dr.HasRows Then
dr.Read()
dr.Close()
OldAmount = dr.GetInt32(3)
NewAmount = OldAmount - OldAmount
sb.Remove(0, sb.Length)
sb.Append("UPDATE Product")
sb.Append(" SET Amount=@Amount")
sb.Append(" WHERE (ProdID=@ProdID)")
Dim sqlSave As String
sqlSave = sb.ToString()
With com
.CommandText = sqlSave
.Parameters.Clear()
.Parameters.Add("@Amount", SqlDbType.Int).Value = NewAmount
.ExecuteNonQuery()
End With
End If
End With
dr.Close()
MessageBox.Show("ไม่สามารถขายสินค้าได้ เนื่องจากสินค้าตัวนี้หมดอายุแล้ว!!!", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information)
End SubTag : - - - -
Date :
2010-04-08 16:12:22
By :
pakakrong
View :
1037
Reply :
1
เขียนแบบนี้ ดูยาก ครับ
จุดที่ 1 คุณต้องทำ CheckExpdate() เป็น function ครับ
เพราะถ้าเขียน แบบนี้ ยังไงมัน ก็ต้องทำงาน ต่อไป เพราะมัน ไม่ยอมออกจาก sub
CheckExpdate()
MessageBox.Show("สินค้าตัวนี้ไม่สามารถขายได้ เนื่องจากหมดอายุแล้ว !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtSearchProduct.Focus()
End If
จะเห็นว่า มัน เข้าไปที่ CheckExpdate ทำ เสร็จมัน ก็มาทำ บรรทัดต่อมาต่อ
เพราะไม่ได้สั่งให้ออก จาก sub
เช่น
Code (VB.NET)
if CheckExpdate() then
MessageBox.Show("ไม่สามารถขายสินค้าได้ เนื่องจากสินค้าตัวนี้หมดอายุแล้ว!!!", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information)
end if
Code (VB.NET)
Private Function CheckExpdate() As Boolean
Dim OldAmount As Integer = 0
Dim NewAmount As Integer = 0
sb.Remove(0, sb.Length)
sb.Append("SELECT ProdID,ProdName,ExpDate")
sb.Append(" FROM Product")
sb.Append(" WHERE ExpDate=Getdate()")
Dim sqlProduct As String = sb.ToString()
Dim dr As SqlDataReader
com = New SqlCommand()
With com
.CommandType = CommandType.Text
.CommandText = sqlProduct
.Connection = Conn
dr = .ExecuteReader()
If dr.HasRows Then
dr.Read()
dr.Close()
Return True
End If
End With
End Function
ปล. code ที่เขียนให้ เป็น code ที่ยกตัวอย่างให้ ดู ไม่ได้ หมายความว่า เอาไปแล้วใช้งานได้นะครับ
ยัง ไงเขียนใหม่ จะดีกว่า ทำเป็น ลำดับขั้นตอนกว่า นี้ กรณีต้องการตรวจสอบ สิ่งใดให้ทำเป็น function ดีวกว่า
อย่า พยายามเอาทุกสิ่งทุกอย่างมารวมกันไว้ ใน sub procedure
Date :
2010-04-08 20:37:33
By :
msorawich
Load balance : Server 02