Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > สอบถามการตัดสต็อกสินค้าค่ะ...โดยต้องการให้การขาย 1 ครั้งมีการตัดสต็อกสินค้า 1 ครั้ง ต้อง ทำไงเหรอค่ะ



 

สอบถามการตัดสต็อกสินค้าค่ะ...โดยต้องการให้การขาย 1 ครั้งมีการตัดสต็อกสินค้า 1 ครั้ง ต้อง ทำไงเหรอค่ะ

 



Topic : 029796



โพสกระทู้ ( 51 )
บทความ ( 0 )



สถานะออฟไลน์




โดยต้องการให้การขาย 1 ครั้งมีการตัดสต็อกสินค้า 1 ครั้ง ต้อง ทำไงเหรอค่ะ สมมติว่าใน db totalstock ของเรามียาพาราอยูจำนวน 100 กระปุก ขายไป 10 กระปุก เมื่อเรากดปุ่ม save ก็ให้ทำการปรับยอดใน db totalstock ซึ่ง totalstock อยู่ที่ table product เหลือ 90 กระปุก ต้องทำไงค่ะ ช่วยหน่อยนะค่ะ ขอบคุณค่ะ



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2009-07-31 15:00:34 By : aaaaa View : 9746 Reply : 33
 

 

No. 1



โพสกระทู้ ( 27 )
บทความ ( 0 )



สถานะออฟไลน์


เราก็ทำการดึงข้อมูลจำนวนยาพาราเดิมจากฐานข้อมูลขึ้นมาก่อน จากนั้นก็ทำการลบออกจากจำนวนที่ขายไป แล้วลำดับสุดท้ายก็ทำการแก้ไขข้อมูลลงฐานข้อมูล

อยากทราบว่าใช้ภาษาอะไรหรือครับ
Code (C#)
using System.Data.SqlClient;

int amountTotal;
public void sellProduct(int id, int amountSell){
     using(SqlConnection con=new SqlConnection()){
          con.ConnectionString=ConfigurationManager.ConnectionString["ConnectionName"].ConnectionString;
          con.Opn();
          using(SqlCommand command=new SqlCommand()){
               command.CommandText="SELECT productAmount FROM product WHERE productID='"+id+"'";
               command.Connection=con;
               using(SqlDataReader reader=command.ExucuteReader()){
                    reader.Read();
                    amountTotal=reader.GetInt32(0);
               }
               amountTotal-=amount;
               command.CommandText="UPDATE [product] SET productAmount='"+amountTotal+"'";
               command.Connection=con;
               try{
                    command.ExecuteNonQuery();
               }catch(Exception ex){
                    
               }
          }
     }
}


ถ้าเป็นโด้ค C# ก็น่าจะพอใช้ได้ครับ
โดยจะมีการรับพารามิเตอร์มา 2 ตัว คือ รหัสสินค้า กับ จำนวนที่ขาย
ผมสร้างเป็น method ไว้ ลองเอาไปประยุกต์ใช้ดูนะครับ






Date : 2009-07-31 15:23:28 By : iamdevil
 


 

No. 2

Guest


ขอเป็น vbได้ไหมค่ะ
รบกวนอีกครั้งนะค่ะ
Date : 2009-07-31 16:40:06 By : aaaaa
 

 

No. 3



โพสกระทู้ ( 482 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


Code (VB.NET)
Dim Sql_pro As String = "select * from t_product"
        Da_Pro.MissingSchemaAction = MissingSchemaAction.AddWithKey
        Da_Pro.SelectCommand = New OleDbCommand(Sql_pro, Cn)
        Try
            Da_Pro.Fill(Ds_Pro, "t_product")
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        Dim Dr As DataRow = Ds_Pro.Tables("t_product").Rows.Find(IdPro)
Dr เป็นหารหัสสินค้าสินค้า
        Dim a As Integer = Dr("ชื่อฟิลด์ที่เก็บจำนวนสินค้าในตารางคลังสินค้า").ToString
        With Dr
            .BeginEdit()
            .Item("pro_total_pro") = a - Val(FrmSell.TxtSell_Total.Text)
            .EndEdit()
        End With
        Dim CbPro As New OleDbCommandBuilder(Da_Pro)
        Da_Pro.UpdateCommand = CbPro.GetUpdateCommand
        Da_Pro.Update(Ds_Pro.Tables("t_product"))
        Ds_Pro.AcceptChanges()

หวังว่าน่าจะตรงตามต้องการนะครับ
จาก
นักเรียนโรงเรียนอาชีวพระมหาไถ่ พัทยา
Date : 2009-07-31 17:30:19 By : babyprogrammer
 


 

No. 4



โพสกระทู้ ( 51 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณทุกคนที่ช่วยนะค่ะ แต่ยังนำมา ใช้ไม่ได้เลยค่ะ ขอคำอธิบายเพิ่มเติมได้ไหมค่ะ หรือว่า ตัวอย่างใหม่เลยก็ได้ค่ะ ขอบคุณค่ะ
Date : 2009-07-31 18:01:50 By : aaaaa
 


 

No. 5



โพสกระทู้ ( 482 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


Code (VB.NET)
Dim Sql_pro As String = "select * from ชื่อตารางของคลังสินค้า"
        Da_Pro.MissingSchemaAction = MissingSchemaAction.AddWithKey
        Da_Pro.SelectCommand = New OleDbCommand(Sql_pro, Cn)
        Try
            Da_Pro.Fill(Ds_Pro, "ชื่อตารางของคลังสินค้า")
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        Dim Dr As DataRow = Ds_Pro.Tables("ชื่อตารางของคลังสินค้า").Rows.Find(เป็นรหัสของสินค้า)
        Dim TotalPro As Integer = Dr("เป็นฟิลด์ที่เก็บจำนวนสินค้าที่มีอยู่ในตารางคลังสินค้า").ToString
        With Dr
            .BeginEdit()
            .Item("ฟิลด์ที่เก็บจำนวนสินค้าที่มีอยู่ในตารางคลังสินค้า") = TotalPro - จำนวนสินค้าที่ถูกซื้อไป
TotalPro เป็นตัวแปรที่ดึงข้อมูลมาจากในฟิลด์ของจำนวนสินค้าที่อยู่ในตาราง ซึ่งนำจำนวนที่มีอยู่ในสต๊อกทั้งหมดมาลบกับจำนวนสินค้าที่ถูกซื้อ
            .EndEdit()
        End With
        Dim CbPro As New OleDbCommandBuilder(Da_Pro)
        Da_Pro.UpdateCommand = CbPro.GetUpdateCommand
        Da_Pro.Update(Ds_Pro.Tables("t_product"))
        Ds_Pro.AcceptChanges()
โค๊ตอันนี้เป็นโค๊ตที่ไม่ต้องใช้คำสั่ง sql เพื่อ update ข้อมูลเพียงแค่ select ข้อมูลออกมาก่อนเท่านั้น ง่ายดีนะครับ


ถ้าสงสัยส่วนไหนก็ถามได้นะครับ เพราะว่าตอนนี้ก็กำลังทำโปรแกรมนี้อยู่ใกล้เสร็จแล้วล่ะ
Date : 2009-07-31 20:24:14 By : babyprogrammer
 


 

No. 6



โพสกระทู้ ( 51 )
บทความ ( 0 )



สถานะออฟไลน์


Dim Sql_pro As String = "select * from product"
Dim adapter As SqlDataAdapter
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey

adapter.SelectCommand = New SqlCommand(Sql_pro, conn)
Dim data As DataSet
Try

adapter.Fill(data, "product")


Catch ex As Exception

MsgBox(ex.Message)

End Try

Dim Dr1 As DataRow = data.Tables("product").Rows.Find(txtserialno.Text)

Dim totalstock As Integer = dr("totalstock").ToString

With dr

.BeginEdit()

.Item("totalstock") = totalstock - txtquantity.Text
'totalstock เป็นตัวแปรที่ดึงข้อมูลมาจากในฟิลด์ของจำนวนสินค้าที่อยู่ในตาราง ซึ่งนำจำนวนที่มีอยู่ในสต๊อกทั้งหมดมาลบกับจำนวนสินค้าที่ถูกซื้อ

.EndEdit()

End With

Dim CbPro As New SqlCommandBuilder(adapter)

adapter.UpdateCommand = CbPro.GetUpdateCommand

adapter.Update(data.Tables("product"))

data.AcceptChanges()

จากโค้ดที่ babyprogrammer ให้มา มื่อทำการรันแล้วมันฟ้อง error ว่า
Object reference not set to an instance of an object. ที่
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
Date : 2009-08-01 11:21:15 By : aaaaa
 


 

No. 7



โพสกระทู้ ( 482 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ที่คุณประกาศ Dim adapter As SqlDataAdapter
อยากให้ลองเปลี่ยนเป็น Dim adapter As new OleDbDataAdapter

และ adapter.SelectCommand = New SqlCommand(Sql_pro, conn)
ให้ลองเปลี่ยนเป็น adapter.SelectCommand = New OleDbCommand(Sql_pro, Conn)

ลองดูนะ จะเข้ามาดูเรื่อยๆ
Date : 2009-08-01 11:39:26 By : babyprogrammer
 


 

No. 8



โพสกระทู้ ( 51 )
บทความ ( 0 )



สถานะออฟไลน์


ได้แล้วค่ะ แต่คราวนี้ มัน error ที่บรรทัด Dim Dr1 As DataRow = data.Tables("product").Rows.Find(txtserialno.Text) ฟ้อง error Object reference not set to an instance of an object. แต่พอเมื่อเรากด บันทึก จะมี msg ออกมาคือ The connectionString Properties has not been initialized ค่ะ
Date : 2009-08-01 11:52:42 By : aaaaa
 


 

No. 9



โพสกระทู้ ( 482 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ขอดู Code ที่คุณเขียนในช่วง Update หน่อยครับ
Date : 2009-08-01 13:49:01 By : babyprogrammer
 


 

No. 10



โพสกระทู้ ( 51 )
บทความ ( 0 )



สถานะออฟไลน์


Dim conn As New SqlClient.SqlConnection()
Dim cmd As New SqlClient.SqlCommand()
'..............................................................................
Dim x As String = Today.Month & "/" & Today.Day & "/" & Today.Year
'............................................................................................................
conn.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename='C:\Documents and Settings\User\My Documents\Visual Studio 2008\Projects\PROJECT MORYA.mdf';Integrated Security=True;Connect Timeout=30;User Instance=True"
conn.Open()
Dim dt As New DataTable
dt.Columns.Add("รหัสสินค้า")
dt.Columns.Add("ชื่อสินค้า")
dt.Columns.Add("หน่วยสินค้า")
dt.Columns.Add("ราคาขาย")
dt.Columns.Add("จำนวน")
dt.Columns.Add("รวมเป็นเงิน")

Dim i As Integer = 0
While (i < DataGridView1.RowCount)
Dim a As String
a = ("เลขที่ใบเสร็จรับเงิน : " & txtid.Text & "") & vbNewLine
a &= ("วันที่ขายสินค้า : " & txtdate.Text & "") & vbNewLine
a &= ("รหัสเภสัชกร : " & cmbphar.Text & "") & vbNewLine
a &= ("รหัสสินค้า : " & txtserialno.Text & "") & vbNewLine
a &= ("ชื่อสินค้า : " & txtname.Text & "") & vbNewLine
a &= ("หน่วย : " & txtuniit.Text & "") & vbNewLine
a &= ("ราคาขาย/หน่วย: " & txtprice.Text & "") & vbNewLine
a &= ("จำนวน : " & txtquantity.Text & "") & vbNewLine
a &= ("รวมเป็นเงิน : " & txttotal.Text & "")
MessageBox.Show(a, "แสดงผล", MessageBoxButtons.OK, MessageBoxIcon.Information)

Dim cmdTXT As String = "insert into sales (id,date,pharmacist_id) values ('" & txtid.Text & "','" & txtdate.Text & "','" & cmbphar.Text & "')"
cmd.CommandText = cmdTXT
cmd.Connection = conn
i = i + 1
cmd.ExecuteNonQuery()

Dim cmdTXT1 As String = "insert into salesdetail (sales_date,product_serialno,product_name,product_unit,product_saleprice,quantity,total,sumtotal) values ('" & x & "','" & DataGridView1.Rows(i).Cells(0).Value & "','" & DataGridView1.Rows(i).Cells(1).Value & "', '" & DataGridView1.Rows(i).Cells(2).Value & "','" & DataGridView1.Rows(i).Cells(3).Value & "','" & DataGridView1.Rows(i).Cells(4).Value & "','" & DataGridView1.Rows(i).Cells(5).Value & "','" & txtsumtotal.Text & "')"
cmd.CommandText = cmdTXT1
cmd.Connection = conn
i = i + 1
cmd.ExecuteNonQuery()
End While
'..................................................................................

Dim Sql_pro As String = "select * from product"
Dim con As New SqlClient.SqlConnection()
Dim cmd1 As New SqlClient.SqlCommand(Sql_pro, con)
Dim adapter As New SqlDataAdapter(cmd1)
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey

adapter.SelectCommand = New SqlCommand(Sql_pro, con)
Dim data As New DataSet
Try
adapter.Fill(data, "product")
Catch ex As Exception
MsgBox(ex.Message)
End Try
Dim Dr1 As DataRow = data.Tables("product").Rows.Find(txtserialno.Text)
Dim totalstock As Integer = Dr1("totalstock").ToString
With dr1
.BeginEdit()
.Item("totalstock") = totalstock - txtquantity.Text
'totalstock เป็นตัวแปรที่ดึงข้อมูลมาจากในฟิลด์ของจำนวนสินค้าที่อยู่ในตาราง ซึ่งนำจำนวนที่มีอยู่ในสต๊อกทั้งหมดมาลบกับจำนวนสินค้าที่ถูกซื้อ
.EndEdit()
End With
Dim CbPro As New SqlCommandBuilder(adapter)
adapter.UpdateCommand = CbPro.GetUpdateCommand
adapter.Update(data.Tables("product"))
data.AcceptChanges()
'...........................................................................................
'....................................................................................
MessageBox.Show("บันทึกข้อมูลเรียบร้อยแล้ว ", "บันทึกข้อมูล", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtserialno.Text = ""
txtname.Text = ""
txtuniit.Text = ""
txtprice.Text = ""
txtquantity.Text = ""
txttotal.Text = ""
Date : 2009-08-01 14:02:58 By : aaaaa
 


 

No. 11



โพสกระทู้ ( 482 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


ลองเปลี่ยน Dim con As New SqlClient.SqlConnection() ที่คุณเขียนเป็น
Public Con As New OleDbConnection(Sql_pro)
และไม่ทราบว่า Dim cmd1 As New SqlClient.SqlCommand(Sql_pro, con) คืออะไร
และที่ err ว่า error Object reference not set to an instance of an object ก็จะประมาณว่ามันหาชื่อ dataset ไม่เจอครับ
Date : 2009-08-01 14:33:52 By : babyprogrammer
 


 

No. 12

Guest


ที่คุณ babyprogrammer บอกว่าให้เปลี่ยนจาก Dim con As New SqlClient.SqlConnection() เป็น
Public Con As New OleDbConnection(Sql_pro) พอดีว่าฐานข้อมูลเป็น sql server ค่ะ ไม่ได้เก็บด้วย access ค่ะ รบกวนหน่อยนะค่ะ ขอบคุณมากค่ะ
Date : 2009-08-01 18:45:17 By : aaaaa
 


 

No. 13



โพสกระทู้ ( 51 )
บทความ ( 0 )



สถานะออฟไลน์


ได้แล้วค่ะ ขอบคุณทุกคนมากเลยค่ะ
Date : 2009-08-03 14:58:03 By : aaaaa
 


 

No. 14

Guest


ช่วยบอกวิธีการตักสต๊อกสินค้าเช่นมีสบู่10ถูกซื้อ5ก้อนเหลือ5ก้อนอันนี้ผมทำได้แต่เมื่อคนมาซื้อสบูอีกมันกับเอาจำนวนคงเหลือ10ก้อนเหมือนเดิมช่วยบอกวิธีหน่อยคับเอาตั่งแต่คิวลี่เลยจะทำอย่างไรคับผมจนปัญญาแล้วพอดีโปรเจคมันต้องตัดสต๊อกสินค้าโดยใช้โปรแกรม Access2003ช่วยทีคับ
Date : 2009-08-18 17:11:58 By : tom
 


 

No. 15

Guest


ขอแบบระเอียดเลยนะคับผมไม่ค่อยเก่งรบกวนหน่อยนะคับ
Date : 2009-08-18 17:27:06 By : tom
 


 

No. 16

Guest


stock turnover คืออะไรคะ มีหลักการทำงานอย่างไร เพื่อน ๆ คนไหนทราบรบกวนข้อมูลด้วยค่ะ
Date : 2009-12-11 10:33:21 By : su
 


 

No. 17



โพสกระทู้ ( 40 )
บทความ ( 0 )



สถานะออฟไลน์


ขอเป็นโค้ด vb 2008 ได้ไหมค่ะ เขียนไม่ค่อยถูกค่ะ
มันติดตรง
ivate Sub cmdSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSave.Click
If lsvProductList.Items.Count > 0 Then
If MessageBox.Show("คุณต้องการบันทึกรายการการซื้อสินค้า ใช่หรือไม่ ?", "คำยืนยัน", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = DialogResult.Yes Then
'tr = Conn.BeginTransaction()

dr.Close()
Dim i As Integer
Dim CProductID As String
Dim CProductName As String
Dim CAmount As Integer = 0
Dim CPrice As Double = 0.0
Dim CTotal As Double = 0.0
Dim CPaidToSupplier As Double = 0.0

Dim NetTotal As Double = 0.0

Dim OldAmount As Integer = 0
Dim NewAmount As Integer = 0

For i = 0 To lsvProductList.Items.Count - 1
CProductID = lsvProductList.Items(i).SubItems(0).Text
CProductName = lsvProductList.Items(i).SubItems(1).Text
CAmount = CInt(lsvProductList.Items(i).SubItems(3).Text)
CPrice = CDbl(lsvProductList.Items(i).SubItems(2).Text)
CTotal = CDbl(lsvProductList.Items(i).SubItems(4).Text)

sb.Remove(0, sb.Length)
sb.Append("INSERT INTO SalesDetail (SaleID,ProdID,Amount,SalePrice,Total)")
sb.Append(" VALUES (@SaleID,@ProdID,@Amount,@SalePrice,@Total)")
Dim sqlSave As String = sb.ToString()
sqlSave = sb.ToString()
With com

.CommandText = sqlSave
.Connection = Conn
'.Transaction = tr
.Parameters.Clear()
.Parameters.Add("@SaleID", SqlDbType.VarChar).Value = lblSaleID.Text.Trim()
.Parameters.Add("@ProdID", SqlDbType.NVarChar).Value = CProductID
.Parameters.Add("@SalePrice", SqlDbType.Real).Value = CPrice
.Parameters.Add("@Amount", SqlDbType.Int).Value = CAmount
.Parameters.Add("@Total", SqlDbType.Real).Value = CTotal
'.Parameters.Add("@BranchID", SqlDbType.NVarChar).Value = CStr(cboBranch.SelectedValue)
'.Parameters.Add("@CustomerID", SqlDbType.NVarChar).Value = txtSearchCustomer.Text.Trim()
'.Parameters.Add("@ProdName", SqlDbType.NVarChar).Value = CProductName
.ExecuteNonQuery()
End With

sb.Remove(0, sb.Length)
sb.Append("INSERT INTO Sale(SaleID,BranchID,CustomerID,ProdID,ProdName,SalePrice,Amount,Total,Date)")
sb.Append(" VALUES (@SaleID,@BranchID,@CustomerID,@ProdID,@ProdName,@SalePrice,@Amount,@Total,@Date)")
sqlSave = sb.ToString()

With com
.CommandType = CommandType.Text
.CommandText = sqlSave
.Connection = Conn
'.Transaction = tr
.Parameters.Clear()
.Parameters.Add("@SaleID", SqlDbType.Char).Value = lblSaleID.Text.Trim()
.Parameters.Add("@BranchID", SqlDbType.NVarChar).Value = CStr(cboBranch.SelectedValue)
.Parameters.Add("@CustomerID", SqlDbType.NVarChar).Value = txtSearchCustomer.Text.Trim()
.Parameters.Add("@ProdID", SqlDbType.NVarChar).Value = CProductID
.Parameters.Add("@ProdName", SqlDbType.NVarChar).Value = CProductName
.Parameters.Add("@SalePrice", SqlDbType.Real).Value = CPrice
.Parameters.Add("@Amount", SqlDbType.Int).Value = CAmount
.Parameters.Add("@Total", SqlDbType.Real).Value = lblNet.Text.Trim()
.Parameters.Add("@Date", SqlDbType.DateTime).Value = Date.Today
.ExecuteNonQuery()
End With

sb.Remove(0, sb.Length)
sb.Append("SELECT ProdID,Amount")
sb.Append(" FROM Product")
sb.Append(" WHERE (ProdID=@ProdID)")
sqlSave = sb.ToString()

With com
.CommandText = sqlSave
.Parameters.Clear()
.Parameters.Add("@ProdID", SqlDbType.Char).Value = CProductID
dr = .ExecuteReader()
If dr.HasRows Then
dr.Read()
OldAmount = dr.GetInt32(3) "มันติดตรงนี้ค่ะ"
dr.Close()

NewAmount = OldAmount - CAmount

sb.Remove(0, sb.Length)
sb.Append("UPDATE Product")
sb.Append(" SET Amount=@Amount")
sb.Append(" WHERE (ProdID=@ProdID)")
sqlSave = sb.ToString()

With com
.CommandText = sqlSave
.Parameters.Clear()
.Parameters.Add("@Amount", SqlDbType.Int).Value = NewAmount
.Parameters.Add("@ProdID", SqlDbType.Char).Value = CProductID
.ExecuteNonQuery()
End With
End If
dr.Close()
End With

Next
dr.Close()

'tr.Commit()
MessageBox.Show("บันทึกรายการการการซื้อสินค้า!!!", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information)

lsvProductList.Clear()
ClearCustomer()
ClearProduct()
UnLockCustomerData()
lblNet.Text = "0"
txtSearchCustomer.Focus()
AutoGenerateSaleID()
lblSaleID.Text = ""
End If
End If
End Sub
Date : 2010-04-02 12:25:16 By : pakakrong
 


 

No. 18



โพสกระทู้ ( 1,348 )
บทความ ( 1 )



สถานะออฟไลน์


หลักการระบบสต็อคสินค้า ต้องมีอย่างน้อย 2 ตาราง
1. Product ตารางข้อมูลสินค้าซึ่งประกอบด้วย ProductID, ProductName,...

2. ProductMovement ตารางเก็บข้อมูลการเพิ่ม/ลดจำนวนสินค้า PK, ProductID, Num, nBalance, MovementDate, ...

โดยที่ PK เป็น Primary Key
Num ยอดที่เพิ่มหรือลด (+ เมื่อเพิ่มจำนวน, - เมื่อลดจำนวนสินค้า)
nBalance เป็นจำนวนของสินค้าเมื่อเพิ่มหรือลดแล้ว
MovementDate วันที่และเวลา ที่เพิ่มหรือลดจำนวนสินค้า

แต่ถ้าต้องการ ให้ระบบคำนวณได้ว่า สินค้าในคลังมีมูลค่าเหลืออยู่กี่บาท 2 ตารางไม่เพียงพอแน่นอน
Date : 2010-04-02 12:48:12 By : watcharop
 


 

No. 19



โพสกระทู้ ( 40 )
บทความ ( 0 )



สถานะออฟไลน์


แล้วต้องแก้ตรงไหนค่ะ
Date : 2010-04-02 12:53:12 By : pakakrong
 


 

No. 20



โพสกระทู้ ( 1,348 )
บทความ ( 1 )



สถานะออฟไลน์


To: krong

SELECT ProdID,Amount
FROM Product
WHERE (ProdID=@ProdID)

มันจะ Return แค่ 2 ฟิล์ด
การใช้คำสั่ง dr.GetInt32(3) ก็ต้องผิดพลาดเป็นธรรมดา
ถ้าต้องการ Amount ต้องเป็น dr.GetInt32(1) มากกว่านะครับ
Date : 2010-04-02 13:02:40 By : watcharop
 


 

No. 21



โพสกระทู้ ( 40 )
บทความ ( 0 )



สถานะออฟไลน์


dr.GetInt32(1) ตรงคำว่า 1 มันหมายความว่าไงเหรอค่ะ ไม่ค่อยเข้าใจ
Date : 2010-04-02 13:08:41 By : pakakrong
 


 

No. 22



โพสกระทู้ ( 1,348 )
บทความ ( 1 )



สถานะออฟไลน์


Public Overrides Function GetInt32 ( _
i As Integer _
) As Integer

Parameters i
Type: System.Int32
The zero-based column ordinal.

Return Value
Type: System.Int32
The value of the specified column.

-------------------------------------
ข้างบนเป็น Help ของคำสั่ง GetInt32 ของ DataReader
Parameter i คือ เลขลำดับแสดง Column
สิ่งที่ Return คือ ค่าที่อยู่ใน Column นั้นๆ

ดังนั้น จาก SQL
SELECT ProdID,Amount
FROM Product
WHERE (ProdID=@ProdID)

Column 0 คือ ProdID
Column 1 คือ Amount
เพราะฉะนั้น dr.GetInt32(1) ก็หมายถึงเราต้องการให้ dr เอาค่า Amount มาให้เรา
ถ้าบังเอิญ Column 1 เป็นฟิล์ดแบบตัวอักษร ฟังก์ชั่นนี้ก็จะผิดพลาดเหมือนกัน
Date : 2010-04-02 13:14:34 By : watcharop
 


 

No. 23



โพสกระทู้ ( 40 )
บทความ ( 0 )



สถานะออฟไลน์


แก้ให้หน่อยนะค่ะ มันขึ้น Error ว่า Conversion from string "" to type 'Integer' is not valid. ไม่รู้แก้ตรงไหนค่ะ ลองแก้แล้ว มันก็ยัง Error อยู่ ช่วยหน่อยนะค่ะ

Dim dc As Single = 0.0
dc = CSng(Total * (CInt(txtDc.Text) / 100))
Date : 2010-04-02 13:38:09 By : pakakrong
 


 

No. 24



โพสกระทู้ ( 373 )
บทความ ( 0 )



สถานะออฟไลน์


Conversion from string "" to type 'Integer' is not valid.
การแปลงค่า string เป็น integer ไม่ถูกต้องหรือทำไม่ได้...

สาเหตุ? ลองคิดครับ

CInt(txtDc.Text)

txtDc.Text มีค่าเป็นอะไร ถึงแปลงไม่ได้ ?

null, "", "abc","1.2abc" ฯลฯ

วิธีแก้ ?
1. txtDc.Text ทำอย่างไรให้ค่ามันไม่เป็น string ที่ผิดๆ (if...else)
2. txtDc.Text ถ้ามันผิดแล้ว จะทำอย่างไรให้โปรแกรมมันรู้แล้ว แจ้งเราได้ (try...catch)

"code error ยังรู้ว่า error แต่ คน error ทำยังไงก็ไม่รู้"
Date : 2010-04-02 13:49:03 By : numenoy
 


 

No. 25



โพสกระทู้ ( 40 )
บทความ ( 0 )



สถานะออฟไลน์


txtDc.Text = "0"
เขียนแบบนี้อ่ะค่ะ แล้วมันก็ยัง Error อยู่
Date : 2010-04-02 13:53:58 By : pakakrong
 


 

No. 26



โพสกระทู้ ( 1,348 )
บทความ ( 1 )



สถานะออฟไลน์


: Krong

ฟั่งก์ชั่น CSng กับ CInt ต้องการ Paramenter ที่เป็นสตริงตัวเลข
ถ้าเป็นสตริงว่าง มันก็แปลค่าเป็นตัวเลขไม่ได้
เพราะฉะนั้นก่อนเรียกฟั่งก์ชั่นดังกล่าวต้องแน่ใจว่า Parameter นั้นเป็นสตริงตัวเลขหรือไม่
ใช้ฟังก์ชั่น TryParse
Date : 2010-04-02 13:54:29 By : watcharop
 


 

No. 27



โพสกระทู้ ( 40 )
บทความ ( 0 )



สถานะออฟไลน์


If CInt(txtDc.Text) = 0 Then
txtDc.Focus()
Exit Sub
End If

เขียนแบบนี้ใช้ป่าวค่ะ ลองเขียนแล้วมันก็ยัง Error อยู่เลย ไม่รู้ทำยังไงแล้ว
งั้นหนูเอาโค้ดมาให้ดูหมดเลยล่ะกัน
แล้วลองแก้ให้หน่อยนะค่ะ ช่วยหน่อยเถอะค่ะ

Option Explicit On
Option Strict On
Imports System.Text
Imports System.Data
Imports System.Data.SqlClient
Imports System.Drawing.Drawing2D
Imports System.Globalization
Imports System.Drawing.Printing


Public Class frmPurchase
Dim strConn As String
Dim Conn As SqlConnection
Dim com As SqlCommand
Dim dr As SqlDataReader
Dim dtSupplier As DataTable
Dim dtUnit As DataTable
Dim dtProduct As DataTable
Dim tr As SqlTransaction
Dim sb As StringBuilder

Dim Today As Date
Dim PageSize As Integer
Dim TotalRecord As Integer
Dim CurrentPage As Integer
Dim PageCount As Integer
Dim RecordToDisplay As Integer
Dim OldPageSize As Integer

Dim CBranchID As String
Dim CSupplierID As String
Dim sqlCheck As String
Dim CheckResult As Integer
Dim dtCheck As DataTable
Dim dtfInfo As DateTimeFormatInfo

Dim IsMouseDown As Boolean = False
Dim p As Point
Dim CurrentProduct(10) As String

Dim UseFont As New Font("MS Sans Serif", 10)
Dim prDoc As PrintDocument = New PrintDocument
Dim prDlg As PrintDialog = New PrintDialog

Dim sw As New Stopwatch()
Dim ProcessTime As Double
Dim _ToolStripLabel As New ToolStripLabel

'Public Sub New(ByRef refToolStripLabel As ToolStripLabel)
' InitializeComponent()

' _ToolStripLabel = refToolStripLabel
'End Sub

Private Sub frmPurchase_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.WindowState = FormWindowState.Maximized
sw.Reset()
sw.Start()

With lsvProductList
.Columns.Add("รหัสสินค้า", 70, HorizontalAlignment.Left)
.Columns.Add("ชื่อสินค้า", 150, HorizontalAlignment.Left)
.Columns.Add("จำนวน", 50, HorizontalAlignment.Right)
.Columns.Add("ส่วนลด", 60, HorizontalAlignment.Right)
.Columns.Add("รวมเป็นเงิน", 75, HorizontalAlignment.Right)
.Columns.Add("", 0, HorizontalAlignment.Right)
.Columns.Add("", 0, HorizontalAlignment.Right)
.Columns.Add("", 0, HorizontalAlignment.Right)

.View = View.Details
.GridLines = True
End With

strConn = "Data Source=2GUYSCOM-71BCF6;Initial Catalog=DataBeautiful;Integrated Security=True; "
Conn = New SqlConnection()

With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With

Today = DateTime.Today

sb = New StringBuilder()
sb.Append("SELECT * FROM Branch;")
sb.Append("SELECT * FROM Supplyer")
Dim sqlIni As String
sqlIni = sb.ToString()

RemoveHandler cboBranch.SelectedValueChanged, AddressOf cboBranch_SelectedValueChanged
RemoveHandler cboSupplier.SelectedValueChanged, AddressOf cboSupplier_SelectedValueChanged

com = New SqlCommand()
With com
.CommandText = sqlIni
.CommandType = CommandType.Text
.Connection = Conn
dr = .ExecuteReader()
End With

If dr.HasRows Then
Dim dtBranch As DataTable
dtBranch = New DataTable()
dtBranch.Load(dr)
With cboBranch
.BeginUpdate()
.DisplayMember = "BranchName"
.ValueMember = "BranchID"
.DataSource = dtBranch
.EndUpdate()
End With

dtSupplier = New DataTable()
dtSupplier.Load(dr)
With cboSupplier
.BeginUpdate()
.DisplayMember = "SupName"
.ValueMember = "SupID"
.DataSource = dtSupplier
.EndUpdate()
End With
End If
dr.Close()

AddHandler cboBranch.SelectedValueChanged, AddressOf cboBranch_SelectedValueChanged
AddHandler cboSupplier.SelectedValueChanged, AddressOf cboSupplier_SelectedValueChanged

With cboPageSize
.Items.Add("10")
.Items.Add("25")
.Items.Add("50")
.Items.Add("100")
.SelectedIndex = 0
End With
txtPage.Text = "1"

OldPageSize = CInt(cboPageSize.Text)
PageSize = CInt(cboPageSize.Text)
CBranchID = CStr(cboBranch.SelectedValue)
CSupplierID = CStr(cboSupplier.SelectedValue)

cboBranch.ContextMenu = New ContextMenu()
cboSupplier.ContextMenu = New ContextMenu()
cboPageSize.ContextMenu = New ContextMenu()
txtSearch.ContextMenu = New ContextMenu()
txtPage.ContextMenu = New ContextMenu()
lblNetVAT.Text = "7"
AutoGenerateOrderID()

ClearPODetails()
ClearTotal()
ClearProductDetails()
ClearProductList()

CalculateTotal()
dtfInfo = DateTimeFormatInfo.InvariantInfo

sw.Stop()
ProcessTime = sw.ElapsedMilliseconds / 1000
_ToolStripLabel.Text = "เวลาที่ใช้ : " & ProcessTime.ToString("0.0000") & " วินาที"

AddHandler prDoc.PrintPage, New PrintPageEventHandler(AddressOf Me.StringToPrint_Print)
prDoc.DocumentName = "สั่งซื้อสินค้า"
prDlg.Document = prDoc
End Sub

Private Sub cboBranch_SelectedValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboBranch.SelectedValueChanged
CBranchID = CStr(cboBranch.SelectedValue)

End Sub

Private Sub cboSupplier_SelectedValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboSupplier.SelectedValueChanged
CSupplierID = CStr(cboSupplier.SelectedValue)

End Sub

Private Sub ClearPODetails()
lblToday.Text = Today.ToString("D")
dtpPaidDate.Value = Today
dtpReceiveDate.Value = Today
End Sub

Private Sub ClearTotal()
lblNetDC.Text = "0"
lblNet.Text = "0"
End Sub

Private Sub ClearProductDetails()
txtSearch.Text = ""
lblProductName.Text = ""
lblPrice.Text = "0"
txtAmount.Text = "1"
txtDc.Text = "0"
lblTotal.Text = "0.00"
pnlProductList.Visible = False
End Sub

Private Sub ClearProductList()
lsvProductList.Items.Clear()
End Sub

Private Sub txtSearch_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtSearch.KeyDown
If txtSearch.Text.Trim() = "" Then Exit Sub
If e.KeyCode = Keys.Enter Then
sb.Remove(0, sb.Length)
sb.Append("SELECT ProdID,ProdName,SalePrice")
sb.Append(" FROM Product")
sb.Append(" WHERE (ProdID=@ProdID)")
Dim sqlProduct As String = sb.ToString()

Dim dtProduct As DataTable
With com
.Parameters.Clear()
.Parameters.Add("@ProdID", SqlDbType.Char).Value = txtSearch.Text.Trim()
.CommandText = sqlProduct
.CommandType = CommandType.Text
.Connection = Conn
dr = .ExecuteReader
If dr.HasRows Then
dtProduct = New DataTable
dtProduct.Load(dr)
If dtProduct.Rows.Count = 1 Then
ClearBinding()
txtSearch.DataBindings.Add("Text", dtProduct, "ProdID")
lblProductName.DataBindings.Add("Text", dtProduct, "ProdName")
lblPrice.DataBindings.Add("Text", dtProduct, "SalePrice")
CalculateTotal()

End If
txtSearch.Focus()
txtSearch.SelectAll()

Else
ClearProductList()
MessageBox.Show("ไม่มีรายชื่อสินค้าตามเงื่อนไขที่คุณระบุ !!!", "ผลการค้นหา", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End With
dr.Close()
End If

sw.Stop()
ProcessTime = sw.ElapsedMilliseconds / 1000
_ToolStripLabel.Text = "เวลาที่ใช้ : " & ProcessTime.ToString("0.0000") & " วินาที"
End Sub

Private Sub txtSearch_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSearch.TextChanged
lblProductName.Text = ""
lblPrice.Text = "0"
txtAmount.Text = "1"
txtDc.Text = "0"
lblTotal.Text = "0"
pnlProductList.Visible = False
End Sub

Private Sub ClearBinding()
txtSearch.DataBindings.Clear()
lblProductName.DataBindings.Clear()
lblPrice.DataBindings.Clear()

End Sub

Private Sub cboPageSize_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboPageSize.SelectedIndexChanged
If CInt(cboPageSize.Text) <> OldPageSize Then
ReCalculateRecordToDisplay()
OldPageSize = CInt(cboPageSize.Text)
Else
CurrentPage = 1
RecordToDisplay = 0
ShowProduct(CurrentPage)
End If
End Sub

Private Sub txtPage_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtPage.KeyDown
If e.KeyCode = Keys.Enter Then
PageSize = CInt(cboPageSize.Text)
TotalRecord = dtProduct.Rows.Count
PageCount = CInt(Math.Ceiling(TotalRecord / PageSize))

If CInt(txtPage.Text) > PageCount Then
txtPage.Text = CStr(PageCount)
End If

CurrentPage = CInt(txtPage.Text)
RecordToDisplay = (CurrentPage - 1) * PageSize
ShowProduct(CurrentPage)
End If
End Sub

Private Sub llbMoveFirst_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles llbMoveFirst.LinkClicked
If CInt(cboPageSize.Text) <> OldPageSize Then
ReCalculateRecordToDisplay()
OldPageSize = CInt(cboPageSize.Text)
Else
CurrentPage = 1
RecordToDisplay = 0
ShowProduct(CurrentPage)
End If
End Sub

Private Sub llbMovePrevious_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles llbMovePrevious.LinkClicked
If CInt(cboPageSize.Text) <> OldPageSize Then
ReCalculateRecordToDisplay()
OldPageSize = CInt(cboPageSize.Text)
Else
CurrentPage = CurrentPage - 1
If CurrentPage < 1 Then
CurrentPage = 1
RecordToDisplay = 0
Else
RecordToDisplay = (CurrentPage - 1) * PageSize
End If
ShowProduct(CurrentPage)
End If
End Sub

Private Sub llbMoveNext_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles llbMoveNext.LinkClicked
If CInt(cboPageSize.Text) <> OldPageSize Then
ReCalculateRecordToDisplay()
OldPageSize = CInt(cboPageSize.Text)
Else
CurrentPage = CurrentPage + 1
If CurrentPage > PageCount Then
CurrentPage = PageCount
End If
If RecordToDisplay = TotalRecord Then
Exit Sub
End If
ShowProduct(CurrentPage)
End If
End Sub

Private Sub llbMoveLast_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles llbMoveLast.LinkClicked
If CInt(cboPageSize.Text) <> OldPageSize Then
ReCalculateRecordToDisplay()
OldPageSize = CInt(cboPageSize.Text)
Else
CurrentPage = PageCount
RecordToDisplay = (CurrentPage - 1) * PageSize
ShowProduct(CurrentPage)
End If
End Sub

Private Sub ShowProduct(ByVal PageNum As Integer)
Dim i As Integer
Dim FirstRecord As Integer
Dim LastRecord As Integer
Dim dtCurrent As DataTable

dtCurrent = dtProduct.Clone
FirstRecord = RecordToDisplay
If PageNum < PageCount Then
LastRecord = PageNum * PageSize
Else
LastRecord = TotalRecord
End If

For i = FirstRecord To LastRecord - 1
dtCurrent.ImportRow(dtProduct.Rows(i))
RecordToDisplay = RecordToDisplay + 1
Next

Dim p As New Point()
p.X = tbProductDetail.Left + grbProductDetail.Left + txtSearch.Left + 3
p.Y = tbProductDetail.Top + grbProductDetail.Left + txtSearch.Left + txtSearch.Height + 35
With pnlProductList
dgvProductList.DataSource = dtCurrent
.Location = p
.Visible = True
End With

lblPage.Text = "หน้าที่ : " & CurrentPage.ToString() & "/" & PageCount.ToString()
End Sub

Private Sub ReCalculateRecordToDisplay()
If dtProduct Is Nothing Then Exit Sub
PageSize = CInt(cboPageSize.Text)
TotalRecord = dtProduct.Rows.Count
PageCount = CInt(Math.Ceiling(TotalRecord / PageSize))

CurrentPage = 1
RecordToDisplay = 0
ShowProduct(CurrentPage)
End Sub

Private Sub FormatDgvProductList()
With dgvProductList
If .RowCount > 0 Then
.Columns(0).HeaderText = "รหัสสินค้า"
.Columns(1).HeaderText = "ชื่อสินค้า"
.Columns(2).HeaderText = "ราคา"

.Columns(0).Width = 80
.Columns(1).Width = 200
.Columns(2).Width = 90

.Columns(0).ReadOnly = True
.Columns(1).ReadOnly = True
.Columns(2).ReadOnly = True
End If
End With
End Sub

Private Sub dgvProductList_CellFormatting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles dgvProductList.CellFormatting
If e.ColumnIndex = -1 Then Exit Sub
If dgvProductList.Columns(e.ColumnIndex).Name = "LastCost" Then
e.CellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
e.CellStyle.Format = "#,##0.00"
End If
End Sub

Private Sub cmdClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdClose.Click
pnlProductList.Visible = False
txtSearch.Focus()
txtSearch.SelectAll()
End Sub

Private Sub dgvProductList_CellMouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles dgvProductList.CellMouseClick
With dgvProductList
txtSearch.Text = CStr(.Rows.Item(e.RowIndex).Cells(0).Value)
lblProductName.Text = CStr(.Rows.Item(e.RowIndex).Cells(1).Value)

End With
End Sub

Private Sub txtAmount_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAmount.TextChanged
If txtAmount.Text.Trim() = "" Then txtAmount.Text = "1"
If CInt(txtAmount.Text) = 0 Then txtAmount.Text = "1"
CalculateTotal()
End Sub

Private Sub txtDc_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtDc.TextChanged
If txtDc.Text.Trim() = "" Then txtDc.Text = "0"
If CInt(txtDc.Text) = 0 Then txtDc.Text = "0"
CalculateTotal()
End Sub

Private Sub CalculateTotal()
Dim Total As Double = 0
Total = CDbl(lblPrice.Text) * CInt(txtAmount.Text)

Dim dc As Single = 0.0
dc = CSng(Total * (CInt(txtDc.Text) / 100))
Total = Total - dc
lblTotal.Text = Total.ToString("#,##0.00")
End Sub

'Private Sub dgvProductList_CellMouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles dgvProductList.CellMouseDown
' CalculateCurrentProduct(dgvProductList, e)
'End Sub

'Private Sub CalculateCurrentProduct(ByVal TargetDataGridView As DataGridView, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs)
' Dim Price As Single = 0.0
' Dim Total As Single = 0.0
' Dim dc As Single = 0.0

' With TargetDataGridView
' If e.RowIndex = -1 Then Exit Sub
' CurrentProduct(0) = CStr(.Rows.Item(e.RowIndex).Cells(0).Value)
' CurrentProduct(1) = CStr(.Rows.Item(e.RowIndex).Cells(1).Value)
' CurrentProduct(2) = Format(.Rows.Item(e.RowIndex).Cells(2).Value, "#,##0.00")

' Price = CSng(CSng(.Rows.Item(e.RowIndex).Cells(2).Value) * (CInt(txtDc.Text) / 100))
' Total = CSng(.Rows.Item(e.RowIndex).Cells(2).Value) * CInt(txtAmount.Text)
' dc = CSng(Total * (CInt(txtDc.Text) / 100))
' Total = Total - dc

' CurrentProduct(3) = txtAmount.Text
' CurrentProduct(5) = dc.ToString("#,##0.00")
' CurrentProduct(6) = Total.ToString("#,##0.00")
' CurrentProduct(7) = CStr(Price)
' End With
'End Sub

Private Sub dgvProductList_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles dgvProductList.MouseMove
If e.Button = Windows.Forms.MouseButtons.Left Then
Dim AnyData As DataObject
AnyData = New DataObject
AnyData.SetData(DataFormats.Text, CurrentProduct)

Dim dde As DragDropEffects
dde = dgvProductList.DoDragDrop(AnyData, DragDropEffects.Copy)
End If
End Sub

Private Sub lsvProductList_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles lsvProductList.DragEnter
If (CurrentProduct(0) = "") OrElse (CurrentProduct(1) = "") Then Exit Sub

If (e.Data.GetDataPresent(DataFormats.Text, True)) Then
e.Effect = DragDropEffects.Copy
End If
End Sub

Private Sub lsvProductList_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles lsvProductList.DragDrop
CurrentProduct = DirectCast(e.Data.GetData(DataFormats.Text, True), String())

Dim i As Integer = 0
Dim lvi As ListViewItem
Dim ProductID As String = ""
For i = 0 To lsvProductList.Items.Count - 1
ProductID = lsvProductList.Items(i).SubItems(0).Text
If CurrentProduct(0) = ProductID Then
MessageBox.Show("คุณเลือกรายการสินค้า ซ้ำกัน !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
Exit Sub
End If
Next

lvi = New ListViewItem(CurrentProduct)
lsvProductList.Items.Add(lvi)

CalculateNet()
cmdSave.Enabled = True
Array.Clear(CurrentProduct, 0, CurrentProduct.Length)
End Sub

Private Sub cmdAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAdd.Click
If (txtSearch.Text.Trim() = "") OrElse (lblProductName.Text.Trim() = "") Then
txtSearch.Focus()
Exit Sub
End If

If CSng(lblPrice.Text) = 0 Then
Exit Sub
End If

If CInt(txtDc.Text) = 0 Then
txtDc.Focus()
Exit Sub
End If

If CInt(txtAmount.Text) = 0 Then
txtAmount.Focus()
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 = lsvProductList.Items(i).SubItems(0).Text
If txtSearch.Text.Trim() = ProductID Then
MessageBox.Show("คุณเลือกรายการสินค้า ซ้ำกัน !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
ClearProductDetails()
txtSearch.Focus()
Exit Sub
End If
Next

Dim anyData() As String
Dim Price As Single = 0.0
Dim TotalDiscount As Single = 0.0

Price = CSng(CSng(lblPrice.Text) * (CInt(txtDc.Text) / 100))
TotalDiscount = CInt(txtAmount.Text) * Price

anyData = New String() { _
txtSearch.Text.Trim(), _
lblProductName.Text, _
Price.ToString("0"), _
txtDc.ToString, _
txtAmount.Text, _
lblTotal.Text _
}

lvi = New ListViewItem(anyData)
lsvProductList.Items.Add(lvi)
Array.Clear(CurrentProduct, 0, CurrentProduct.Length)

ClearProductDetails()
CalculateNet()
txtSearch.Focus()
End Sub

Private Sub cmdCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCancel.Click
ClearProductDetails()
txtSearch.Focus()
End Sub

Private Sub lsvProductList_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lsvProductList.DoubleClick
Dim i As Integer = 0
For i = 0 To lsvProductList.SelectedItems.Count - 1
Dim lvi As ListViewItem
lvi = lsvProductList.SelectedItems(i)
lsvProductList.Items.Remove(lvi)
Next

If (lsvProductList.Items.Count = 0) Then cmdSave.Enabled = False
CalculateNet()
End Sub

Private Sub CalculateNet()
Dim i As Integer = 0
Dim NetVAT As Single
Dim NetDc As Single = 0.0
Dim Net As Single = 0.0

For i = 0 To lsvProductList.Items.Count - 1
NetDc = NetDc + CSng(lsvProductList.Items(i).SubItems(4).Text)
Next

lblNetDC.Text = NetDc.ToString("#,##0.00")
NetVAT = CSng(lblNetVAT.Text) * CSng(lblNetDC.Text) / 100
lblNet.Text = CSng(Net + NetVAT).ToString("#,##0.00")
End Sub

Private Sub pnlProductList_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pnlProductList.MouseDown
IsMouseDown = True
p = New Point(e.X, e.Y)
End Sub

Private Sub pnlProductList_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pnlProductList.MouseUp
IsMouseDown = False
End Sub

Private Sub pnlProductList_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pnlProductList.MouseMove
Dim xPos As Integer
Dim yPos As Integer
If IsMouseDown = True Then
xPos = (pnlProductList.Location.X + e.X) - p.X
yPos = (pnlProductList.Location.Y + e.Y) - p.Y

pnlProductList.Left = xPos
pnlProductList.Top = yPos
End If
End Sub

Private Sub cmdSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSave.Click
Try
If lsvProductList.Items.Count > 0 Then

If MessageBox.Show("คุณต้องการบันทึกรายการการสั่งซื้อสินค้า ใช่หรือไม่ ?", "คำยืนยัน", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = DialogResult.Yes Then
'tr = Conn.BeginTransaction()

dr.Close()
Dim i As Integer
Dim CProductID As String
Dim CNumberToOrder As String
Dim CDC As Double = 0.0
Dim CTotal As Double = 0.0

Dim NetTotal As Double = 0.0

For i = 0 To lsvProductList.Items.Count - 1
CProductID = lsvProductList.Items(i).SubItems(0).Text
CNumberToOrder = lsvProductList.Items(i).SubItems(1).Text
CDC = CDbl(lsvProductList.Items(i).SubItems(3).Text)
CTotal = CDbl(lsvProductList.Items(i).SubItems(4).Text)

sb.Remove(0, sb.Length)
sb.Append("INSERT INTO OrderDetail (OrderID,ProdID,NumberToOrder,TotalDiscount,Total)")
sb.Append(" VALUES (@OrderID,@ProdID,@NumberToOrder,@TotalDiscount,@Total)")
Dim sqlSave As String = sb.ToString()
sqlSave = sb.ToString()
With com

.CommandText = sqlSave
.Connection = Conn
'.Transaction = tr
.Parameters.Clear()
.Parameters.Add("@OrderID", SqlDbType.VarChar).Value = lblOrderID.Text.Trim()
.Parameters.Add("@ProdID", SqlDbType.NVarChar).Value = CProductID
.Parameters.Add("@NumberToOrder", SqlDbType.Int).Value = CNumberToOrder
.Parameters.Add("@TotalDiscount", SqlDbType.Real).Value = CDC
.Parameters.Add("@Total", SqlDbType.Real).Value = CTotal
.ExecuteNonQuery()
End With

sb.Remove(0, sb.Length)
sb.Append("INSERT INTO Orders(OrderID,BranchID,SupID,OrderDate,ReceiveDate,PaidDate,NetDC,Net)")
sb.Append(" VALUES (@OrderID,@BranchID,@SupID,@OrderDate,@ReceiveDate,@PaidDate,@NetDC,@Net)")
sqlSave = sb.ToString()

With com
.CommandType = CommandType.Text
.CommandText = sqlSave
.Connection = Conn
'.Transaction = tr
.Parameters.Clear()
.Parameters.Add("@OrderID", SqlDbType.Char).Value = lblOrderID.Text.Trim()
.Parameters.Add("@BranchID", SqlDbType.Char).Value = CStr(cboBranch.SelectedValue)
.Parameters.Add("@SupID", SqlDbType.Char).Value = CStr(cboSupplier.SelectedValue)
.Parameters.Add("@OrderDate", SqlDbType.DateTime).Value = Date.Today
.Parameters.Add("@ReceiveDate", SqlDbType.DateTime).Value = dtpPaidDate.Text.Trim
.Parameters.Add("@PaidDate", SqlDbType.DateTime).Value = dtpReceiveDate.Text.Trim
.Parameters.Add("@NetDC", SqlDbType.Real).Value = lblNetDC.Text.Trim
.Parameters.Add("@Net", SqlDbType.Real).Value = lblNet.Text.Trim
.ExecuteNonQuery()
End With
Next
End If
End If

tr.Commit()

sw.Stop()
ProcessTime = sw.ElapsedMilliseconds / 1000
_ToolStripLabel.Text = "เวลาที่ใช้ : " & ProcessTime.ToString("0.0000") & " วินาที"

'prDoc.Print()

ClearPODetails()
ClearTotal()
ClearProductDetails()
ClearProductList()
AutoGenerateOrderID()

MessageBox.Show("บันทึกรายการสั่งซื้อสินค้า เรียบร้อยแล้ว !!!", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information)

Catch ex As Exception
tr.Rollback()
MessageBox.Show("ไม่สามารถบันทึกรายการสั่งซื้อได้ เนื่องจาก " & ex.Message, "ข้อผิดพลาด", MessageBoxButtons.OK, MessageBoxIcon.Warning)
cmdSave.Focus()

End Try
End Sub

Private Sub StringToPrint_Print(ByVal sender As Object, ByVal e As PrintPageEventArgs)
Dim Today As Date
Today = Date.Now

AnyString(e.Graphics, cboSupplier.Text, 175, 200)
AnyString(e.Graphics, lblOrderID.Text, 550, 135)
AnyString(e.Graphics, lblToday.Text, 550, 185)
AnyString(e.Graphics, dtpPaidDate.Text, 550, 210)
AnyString(e.Graphics, dtpReceiveDate.Text, 550, 235)

Dim i As Integer = 0
Dim CurrentYPosition As Integer = 330
Dim strColumn1 As String = ""
Dim strColumn2 As String = ""
Dim strColumn3 As Integer = 0
Dim strColumn4 As Integer = 0
Dim strColumn5 As String = ""
Dim strColumn6 As Integer = 0
Dim strColumn7 As Integer = 0

For i = 0 To lsvProductList.Items.Count - 1
strColumn1 = lsvProductList.Items(i).SubItems(0).Text
strColumn2 = lsvProductList.Items(i).SubItems(1).Text
strColumn3 = CInt(lsvProductList.Items(i).SubItems(2).Text)
strColumn4 = CInt(lsvProductList.Items(i).SubItems(3).Text)
strColumn5 = lsvProductList.Items(i).SubItems(4).Text
strColumn6 = CInt(lsvProductList.Items(i).SubItems(5).Text)
strColumn7 = CInt(lsvProductList.Items(i).SubItems(6).Text)

AnyString(e.Graphics, strColumn1, 120, CurrentYPosition)
AnyString(e.Graphics, strColumn2, 220, CurrentYPosition)
AnyString(e.Graphics, strColumn3.ToString("#,##0"), 425, CurrentYPosition)
AnyString(e.Graphics, strColumn4.ToString(), 495, CurrentYPosition)
AnyString(e.Graphics, strColumn5, 535, CurrentYPosition)
AnyString(e.Graphics, strColumn6.ToString(), 620, CurrentYPosition)
AnyString(e.Graphics, strColumn7.ToString("#,##0"), 685, CurrentYPosition)

CurrentYPosition = CurrentYPosition + 20
Next

AnyString(e.Graphics, lblNetDC.Text, 580, 580)
AnyString(e.Graphics, lblNetVAT.Text, 580, 605)
AnyString(e.Graphics, lblNet.Text, 580, 630)
End Sub

Private Sub AnyString(ByVal g As Graphics, ByVal printString As String, ByVal xPos As Integer, ByVal yPos As Integer)
Dim anyPoint As New PointF(xPos, yPos)
g.DrawString(printString, UseFont, Brushes.Black, anyPoint)
End Sub

Private Sub AutoGenerateOrderID()
Dim sqlTmp As String = ""
Dim comTmp As SqlCommand = New SqlCommand
Dim drTmp As SqlDataReader
Dim tmpOrderID As Integer = 0


sqlTmp = "SELECT TOP 1 OrderID FROM Orders "
sqlTmp &= " ORDER BY OrderID DESC"

Try
With comTmp
.CommandType = CommandType.Text
.CommandText = sqlTmp
.Connection = Conn
drTmp = .ExecuteReader()

drTmp.Read()

tmpOrderID = CInt(drTmp.Item("OrderID"))
tmpOrderID = tmpOrderID + 1
lblOrderID.Text = tmpOrderID.ToString("0000000000000000")
End With
Catch
lblOrderID.Text = "0000000000000001"
End Try
drTmp.Close()
End Sub
End Class
Date : 2010-04-02 14:06:46 By : pakakrong
 


 

No. 28



โพสกระทู้ ( 40 )
บทความ ( 0 )



สถานะออฟไลน์


แก้ได้หรืป่าวค่ะ
Date : 2010-04-02 15:02:54 By : pakakrong
 


 

No. 29



โพสกระทู้ ( 1,348 )
บทความ ( 1 )



สถานะออฟไลน์


สงสัยมันง่ายเกิน
เลยไม่มีคนอยากแก้ไขมั้ง

Date : 2010-04-02 15:13:08 By : watcharop
 


 

No. 30



โพสกระทู้ ( 28 )
บทความ ( 0 )



สถานะออฟไลน์


ตัวแปร CurrentProduct มันเอาไว้ทำอะไรหลอคะ
Date : 2010-05-22 22:09:46 By : doraemieee
 


 

No. 31

Guest


อยากได้โค้ด vb 2003 คลังยาช่วยบอกวิธีการคลังยาเช่นมียา10ถูกเบิก5เหลือ5แล้วเมื่อรับยามาอีกก็ต้องเพิ่มอีกคืออยากให้ข้อมูลมันอัพเดท
และใช้ฐานข้อมูล access 2003 เหมือนว่าจะตัดยาในคลังออแล้วสามารถที่จะอัพเดทข้อมูลลงในคลังได้อีกส่งมาให้หน่อยทางเมลคือยังทำไม่ได้โปรเจ็คจบด้วย
Date : 2010-10-19 17:02:00 By : อุไรวรรณ รอดรักษา
 


 

No. 32



โพสกระทู้ ( 162 )
บทความ ( 0 )



สถานะออฟไลน์


update total = total - 5 where productId = 'สบู่'
update total = total + 5 where productId = 'สบู่'

sql update เขียนแบบนี้ก็ได้นะ
Date : 2010-10-19 17:08:59 By : superpheak
 


 

No. 33

Guest


ช่วยที่คลังยานะ
Date : 2010-10-19 17:27:32 By : อุ๊
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามการตัดสต็อกสินค้าค่ะ...โดยต้องการให้การขาย 1 ครั้งมีการตัดสต็อกสินค้า 1 ครั้ง ต้อง ทำไงเหรอค่ะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่