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 > ขอคำแนะนำ เรื่อง การตัดจำนวนสินค้าเมื่อการสั่งซื้อหน่อยครับ



 

ขอคำแนะนำ เรื่อง การตัดจำนวนสินค้าเมื่อการสั่งซื้อหน่อยครับ

 



Topic : 127407



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



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



ขอคำแนะนำ เรื่อง การตัดจำนวนสินค้าเมื่อการสั่งซื้อหน่อยครับ

คือผมอยากให้มันตัดจำนวนสินค้า เมื่อมีการบันทึการสั่งซื้อ

อันนี้รูป ฟอร์ม สั่งซื้อ


purchase

ส่วนอันนี้เป็นโดค้ หน้า สั่งซื้อ ผมควรแทรกโค้ดตัดสต้อกไว้ตรงไหน แล้วยังไงมั่งครับ ขอคำแนะนำที


Code (VB.NET)
Imports System.Data
Imports System.Data.SqlClient




Public Class frmpurchase
    Dim connect As New SqlConnection
    Dim da As New SqlDataAdapter
    Dim ds As New DataSet


    Private Sub btncus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btncus.Click
        Dim searchcustomer As New searchcustomer
        searchcustomer.MdiParent = frmmain
        searchcustomer.Show()
        Me.Hide()
    End Sub

    Private Sub btnemp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnemp.Click
        Dim sqlshowemp As String

        Dim empid As String

        empid = txtempid.Text

        connect.ConnectionString = "Data Source=(local);Initial Catalog=udomdate;Integrated Security=True"
        connect.Open()

        sqlshowemp = "select * from employee where empid='" & empid & "'"

        da = New SqlDataAdapter(sqlshowemp, connect)
        da.Fill(ds, "emp")
        txtempname.Text = ds.Tables("emp").Rows(0)("empname").ToString
        ds.Clear()

        connect.Close()



    End Sub



    Private Sub frmpurchase_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim sqlshowproduct As String
        Dim i As Integer ' i มาจาก interval คือการวนลูบข้อมูล รหัสสินค้าสู่ combobox

        connect.ConnectionString = "Data Source=(local);Initial Catalog=udomdate;Integrated Security=True"
        connect.Open()
        sqlshowproduct = "select * from product"

        da = New SqlDataAdapter(sqlshowproduct, connect)

        da.Fill(ds, "pro")

        For i = 0 To ds.Tables("pro").Rows.Count - 1
            cboproid.Items.Add(ds.Tables("pro").Rows(i)("proid").ToString)

        Next
        connect.Close()



    End Sub


    Private Sub cboproid_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboproid.SelectedIndexChanged
        Dim sqlshowproduct As String
        Dim proid As String
        proid = cboproid.SelectedItem


        connect.ConnectionString = "Data Source=(local);Initial Catalog=udomdate;Integrated Security=True"
        connect.Open()

        sqlshowproduct = "select * from product where proid='" & proid & "'"

        da = New SqlDataAdapter(sqlshowproduct, connect)

        da.Fill(ds, "pro1")

        txtproname.Text = ds.Tables("pro1").Rows(0)("proname").ToString
        txtproprice.Text = ds.Tables("pro1").Rows(0)("proprice").ToString
        txtprostock.Text = ds.Tables("pro1").Rows(0)("prostock").ToString
        ds.Clear()



        connect.Close()
    End Sub

    Private Sub btnadd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnadd.Click
        'ประกาศตัวแปรที่เกี่ยวข้อง
        Dim proid, proname As String
        Dim proprice, prosum As Double 'prosum คือตัวแปรรับผลรวมจาก จำนวน * ราคา
        Dim pronum As Integer
        ' เนื่องจากต้องตรวจสอบรายการที่ซื้อด้วย จะต้องใช้ วนลูป จึงต้องประกาศตัวแปร
        Dim i As Integer
        'ในการเก็บข้อมูลแต่ละรายการสู่ listview จะต้องกระทำพร้อมกัน โดยผ่านตัวแปร listview
        'ดังนั้นเพื่อให้สะดวกในการจัดเก็บข้อมูลสู่ listview จึงควรนำค่าที่ได้จาก combobox และ textbox
        'ใส่ตัวแปร array
        Dim proitem(5) As String
        Dim lvpro As New ListViewItem
        ' ตรวจสอบว่ามีการป้อนข้อมูลไว้ใน textbox จำนสน เรียบร้อย
        If txtnum.Text = "" Then
            MessageBox.Show("กรุณาป้อนจำนวน")
            txtnum.Focus()

            Exit Sub

        Else
            If txtnum.text <= 0 Then
                MessageBox.Show("กรุณาป้อนจำนวนซื้อที่มากกว่า 0")
                txtnum.clear()
                txtnum.focus()
                Exit Sub
            Else

                proid = cboproid.SelectedItem
                pronum = txtnum.Text

                For i = 0 To lsvbuy.Items.Count - 1

                    If lsvbuy.Items(i).SubItems(0).Text = proid Then
                        If (MessageBox.Show("คุณต้องการซื้อเพิ่มใช่หรือไม่", "ยินยันการซื้อ", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes) Then


                            pronum = pronum + lsvbuy.Items(i).SubItems(3).Text
                            lsvbuy.Items(i).Remove()
                            Exit For
                        Else 'ถ้าเลือก no คือไม่เพิ่มจำนวน
                            Exit Sub

                        End If

                    End If

                Next
                proname = txtproname.Text
                proprice = txtproprice.Text
                prosum = pronum * proprice
                proitem(0) = proid
                proitem(1) = proname
                proitem(2) = proprice
                proitem(3) = pronum
                proitem(4) = prosum

                lvpro = New ListViewItem(proitem)
                lsvbuy.Items.Add(lvpro)


            End If

        End If






    End Sub

    Private Sub btndel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btndel.Click
        Dim itemdel As Object
        For Each itemdel In lsvbuy.CheckedItems
            If (MessageBox.Show("จะลบจริงๆหรอ", "ลบให้แล้วนะ", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes) Then

                lsvbuy.Items.Remove(itemdel)

            End If
        Next





    End Sub

    Private Sub btnsave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsave.Click
        Dim cusid As String
        Dim empid As String
        Dim proid As String
        Dim proprice As Double
        Dim pronum As Integer
        Dim prosum As Double
        Dim purtotal As Double
        Dim purdate As Date
        Dim purid As Integer


        Dim i As Integer
        Dim sqlcheckorder As String
        Dim sqladdorder As String
        Dim sqladddetail As String
        Dim cmd As New SqlCommand
        Dim cmd1 As New SqlCommand

        If txtcusid.Text = "" Then
            MessageBox.Show("กรุณาเลือกลูกค้า")
        Else
            If txtempid.Text = "" Then
                MessageBox.Show("กรุณาระบุพนักงานขาย")
            Else

                cusid = txtcusid.Text
                empid = txtempid.Text

                If lsvbuy.Items.Count <> 0 Then

                    For i = 0 To lsvbuy.Items.Count - 1

                        purtotal = purtotal + lsvbuy.Items(i).SubItems(4).Text

                    Next
                End If

                purdate = Today

                connect.ConnectionString = "Data Source=(local);Initial Catalog = udomdate;Integrated Security=true"
                connect.Open()

                sqladdorder = "insert into purchase(cusid,empid,purdate,purtotal) values('" & cusid & "','" & empid & "'," & purdate & "," & purtotal & ")"

                cmd.CommandType = CommandType.Text
                cmd.CommandText = sqladdorder
                cmd.Connection = connect
                cmd.ExecuteNonQuery()

                sqlcheckorder = "select max(purid) from purchase"

                da = New SqlDataAdapter(sqlcheckorder, connect)
                da.Fill(ds, "pur")
                purid = ds.Tables("pur").Rows(0).Item(0).ToString

                For i = 0 To lsvbuy.Items.Count - 1
                    proid = lsvbuy.Items(i).SubItems(0).Text
                    proprice = lsvbuy.Items(i).SubItems(2).Text
                    pronum = lsvbuy.Items(i).SubItems(3).Text
                    prosum = lsvbuy.Items(i).SubItems(4).Text
                    sqladddetail = "insert into detail(purid,proid,proprice,pronum,prosum) values(" & purid & ",'" & proid & "'," & proprice & "," & pronum & "," & prosum & " ) "

                    cmd.CommandType = CommandType.Text
                    cmd.CommandText = sqladddetail
                    cmd.Connection = connect
                    cmd.ExecuteNonQuery()


                Next

                MessageBox.Show("การสั่งซื้อสินค้าเรียบร้อย")
                ds.Clear()
                connect.Close()

                txtcusid.Clear()
                txtcusname.Clear()
                txtcusaddress.Clear()
                txtcustel.Clear()
                txtempname.Clear()
                cboproid.SelectedItem = ""
                txtproname.Clear()
                txtproprice.Text = 0
                txtprostock.Text = 0
                txtnum.Text = 0
                lsvbuy.Items.Clear()

            End If
        End If


    End Sub


End Class




Tag : .NET, Ms SQL Server 2008, VBScript, VS 2010 (.NET 4.x)









ประวัติการแก้ไข
2017-04-29 14:16:21
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2017-04-29 14:15:08 By : 1318104428243545 View : 959 Reply : 5
 

 

No. 1



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



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

Code (VB.NET)
For i = 0 To lsvbuy.Items.Count - 1
                    proid = lsvbuy.Items(i).SubItems(0).Text
                    proprice = lsvbuy.Items(i).SubItems(2).Text
                    pronum = lsvbuy.Items(i).SubItems(3).Text
                    prosum = lsvbuy.Items(i).SubItems(4).Text
                    sqladddetail = "insert into detail(purid,proid,proprice,pronum,prosum) values(" & purid & ",'" & proid & "'," & proprice & "," & pronum & "," & prosum & " ) "
                    ' เอา pronum ไปตัด stock 
                    CutStock(proid ,pronum )
                    cmd.CommandType = CommandType.Text
                    cmd.CommandText = sqladddetail
                    cmd.Connection = connect
                    cmd.ExecuteNonQuery()


                Next


Code (VB.NET)
Sub CutStock(id As Integer,count As Integer)
{
  1. check ก่อนว่าใน stock เหลือเท่าไหร่ สมมติให้เป็น countStock ละกัน
     dim sql as string = "select * from product where proid='" & proid & "'"
    เอา sql ไปจัดการละกัน 
    Dim  countStock =  Int.Prase(ds.Tables("pro1").Rows(0)("prostock"))
    ** เช็คให้ดีละว่ามีรึไม่มี ถ้าไม่มีก็ countStock =0
  2. หายอดที่เหลือซะเลย
   countStock = countStock -count 
 3.Update  product  ตามยอดที่เหลือ
}


โค้ดนี้เขียนแบบขี้เกียจๆหน่อยนะครับเพราะผมไม่ถนัด SQL
เอาเป็นว่าความคิดบ้านๆแหละครับ
หายอดที่เหลือไป Update ตาราง product

ส่วน SQL ถ้าอยากให้ง่าย แนะนำให้เขียนแบบนี้ครับ

Code (VB.NET)
Public Sub CreateCommand(ByVal queryString As String, _
  ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)
        command.Connection.Open()
        command.ExecuteNonQuery()
    End Using
End Sub

ที่มา
http://
https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1


แบบนี้ค่อยใช้งานง่ายหน่อย
Code (VB.NET)
Dim ConnectionString As String = "Data Source=(local);Initial Catalog=udomdate;Integrated Security=True"
sqladdorder = "insert into purchase(cusid,empid,purdate,purtotal) values('" & cusid & "','" & empid & "'," & purdate & "," & purtotal & ")"

CreateCommand(sqladdorder ,ConnectionString )


ประโยชน์มันคือช่วยให้ลดโค้ดลงไปอีกเป็นกอง แถมจัดการ database ก็ง่าย
ส่วนหากต้องการใช้งานแบบ dataset หรือ datatable ก็ลองประยุคต์ดู






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-04-29 17:01:16 By : lamaka.tor
 


 

No. 2



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



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

โอ้วว ขอบคุณครับ Sub Cutstock นี่เอาแทรกไว้ตรงไหนครับพี่


ประวัติการแก้ไข
2017-04-29 17:39:00
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-04-29 17:38:28 By : 1318104428243545
 

 

No. 3



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



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

ตอบความคิดเห็นที่ : 2 เขียนโดย : 1318104428243545 เมื่อวันที่ 2017-04-29 17:38:28
รายละเอียดของการตอบ ::
ตามโค้ดแรกคับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-04-30 01:29:45 By : lamaka.tor
 


 

No. 4



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



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

ตอบความคิดเห็นที่ : 3 เขียนโดย : lamaka.tor เมื่อวันที่ 2017-04-30 01:29:45
รายละเอียดของการตอบ ::
รบกวนพี่ช่วยเขียนเป็นตัวอย่างให้หน่อยได้ไหมครับ พอดีผมพึ่งเรียน ยังไม่ค่อยเข้าใจเท่าไหร่ ขอบคุณครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-04-30 12:29:25 By : 1318104428243545
 


 

No. 5



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



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

ตอบความคิดเห็นที่ : 4 เขียนโดย : 1318104428243545 เมื่อวันที่ 2017-04-30 12:29:25
รายละเอียดของการตอบ ::
Code (C#)
For i = 0 To lsvbuy.Items.Count - 1
                    proid = lsvbuy.Items(i).SubItems(0).Text
                    proprice = lsvbuy.Items(i).SubItems(2).Text
                    pronum = lsvbuy.Items(i).SubItems(3).Text
                    prosum = lsvbuy.Items(i).SubItems(4).Text
                    sqladddetail = "insert into detail(purid,proid,proprice,pronum,prosum) values(" & purid & ",'" & proid & "'," & proprice & "," & pronum & "," & prosum & " ) "
                    ' เอา pronum ไปตัด stock 
                    CutStock(proid ,pronum )
                    cmd.CommandType = CommandType.Text
                    cmd.CommandText = sqladddetail
                    cmd.Connection = connect
                    cmd.ExecuteNonQuery()


                Next


Code (C#)
Sub CutStock(id As Integer,count As Integer)
{
  1. check ก่อนว่าใน stock เหลือเท่าไหร่ สมมติให้เป็น countStock ละกัน
     dim sql as string = "select * from product where proid='" & proid & "'"
    เอา sql ไปจัดการละกัน 
    Dim  countStock =  Int.Prase(ds.Tables("pro1").Rows(0)("prostock"))
    ** เช็คให้ดีละว่ามีรึไม่มี ถ้าไม่มีก็ countStock =0
  2. หายอดที่เหลือซะเลย
   countStock = countStock -count 
 3.Update  product  ตามยอดที่เหลือ
}


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-05-01 02:25:51 By : lamaka.tor
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ขอคำแนะนำ เรื่อง การตัดจำนวนสินค้าเมื่อการสั่งซื้อหน่อยครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 อัตราราคา คลิกที่นี่