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,027

HOME > .NET Framework > Forum > ขออนุญาตสอบถามเรื่องการตัด Stock หน่อยครับ Winform



 

ขออนุญาตสอบถามเรื่องการตัด Stock หน่อยครับ Winform

 



Topic : 129535



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



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




ขอสอบถามหน่อยครับ คือผมจะ Check จำนวนของสีที่ใช้ไปอะครับ
เช่น จำนวนสี(กิโลกรัม) ID1,ID2,ID3 มีอยู่ใน Stockอย่างละ 500 ก ก
เมื่อผมเบิก id1=300 ,id1=300 ,id2=200 , id3 =400 จะเห็นได้ว่า id1 เบิกเกินจำนวนสีใน Stock

สิ่งที่ต้องการคือเมื่อ Save หากเบิกเกินต้อง Save ไม่ได้ ผมจะต้อง Check แบบไหนอะครับ
ที่ผมทำคือ Loop ใน ตาราง ที่ Insert เข้าไปที่แรก แต่มันดันไปหักลบก่อนอะครับ พอจะมีวิธี Check อย่างเดียวไหมครับ
dim i as inter
for i = o to grid.rows.count - 1
update color set amount = mount - 'grrid.row(i).cell("amount")' Where id = 'grrid.row(i).cell("id")'
excutenonquery
next



Tag : .NET, Win (Windows App), VB.NET







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2017-11-20 17:00:23 By : adminliver View : 1257 Reply : 13
 

 

No. 1



โพสกระทู้ ( 9,556 )
บทความ ( 2 )



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


Code (SQL)
where id=.....
and amount >= 'grrid.row(i).cell("amount")' 







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-20 17:17:50 By : Chaidhanan
 


 

No. 2



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



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

ผมใช้วิธีดักโดย ใช้ textbox มาโชว์ค่า หรา ไว้เลย

พอ sum จาก datagrid แล้ว เกินจาก textbox ก็แจ้งเตือนกันแบบหน้าด้านๆเลยครับ ว่าคุณเบิกเกิน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-20 17:24:37 By : lamaka.tor
 

 

No. 3



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



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


ตอบความคิดเห็นที่ : 2 เขียนโดย : lamaka.tor เมื่อวันที่ 2017-11-20 17:24:37
รายละเอียดของการตอบ ::
ขอสอบถามเพิ่มเติมครับ
ที่จารย์บอก Check โดย Sum หมายถึง เมื่อ insert จำนวนลงไปแล้วให้ไปรวมในตารางหรือป่าวครับ
ถ้าไม่ใช่ผมขอถามต่อนะครับถ้าข้อมูลเป็นแบบนี้
id1
id2
id1
id3
ในกรณีนี้ id1 เกิินจำนวนจริงจะ Check อย่างไรครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-21 08:03:53 By : adminliver
 


 

No. 4



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



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

ตอบความคิดเห็นที่ : 3 เขียนโดย : adminliver เมื่อวันที่ 2017-11-21 08:03:53
รายละเอียดของการตอบ ::
หน้าตา โปรแกรมเป็นไงครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-21 08:57:37 By : lamaka.tor
 


 

No. 5



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



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


ตอบความคิดเห็นที่ : 4 เขียนโดย : lamaka.tor เมื่อวันที่ 2017-11-21 08:57:37
รายละเอียดของการตอบ ::
เพเดหเดหเดดเดเห
โปรแกรมตอนนี้ผม Check แบบ Realtime ไปเลยอะครับ คือเมื่อเลือกรายการพอกดเพิ่มก็ให้ไปลบกับยอดตั้งต้นเลย
แต่ที่ต้องการคือในขั้นตอนนี้ให้ Add ไปก่อนแล้วค่อย Check ตอนกดปุ่มบันทึกอะครับ
ในที่นี้ ******* id 21000041 เกิน balance ********
if check > balance then

alert
else
save
อยากจะได้ประมาณนี้อะครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-21 09:17:15 By : adminliver
 


 

No. 6



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



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

ตอบความคิดเห็นที่ : 5 เขียนโดย : adminliver เมื่อวันที่ 2017-11-21 09:17:15
รายละเอียดของการตอบ ::
เอะ มัน จาก textbox รึป่าวครับ

แบบนี้ก็

if ยอดที่จ่าย - datagrid คงเหลือ <0 then
จ่ายเกินแล้วจ๊าาาาาา
ยอดที่จ่าย = datagrid คงเหลือ
else
save ซะเลย
end if

แค่นี้ละครับ

ออกแบบได้งง มากครับขอบอก
เพราะ grid ฝั่งซ้าย กับ ฝั่งขวา และ ตัวที่เป็น texbox เอง ดูแล้วข้อมูลมันไม่ค่อยเชื่อมโยงให้ดูง่ายขึ้นนะครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-21 09:28:47 By : lamaka.tor
 


 

No. 7



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



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


ตอบความคิดเห็นที่ : 6 เขียนโดย : lamaka.tor เมื่อวันที่ 2017-11-21 09:28:47
รายละเอียดของการตอบ ::
... ใส่ความคิดเห็นตรงนี้....... ตอบความคิดเห็นที่ : 6 เขียนโดย : lamaka.tor เมื่อวันที่ 2017-11-21 09:28:47
รายละเอียดของการตอบ ::
ขอบคุณมากครับจารย์ Tor


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-21 09:40:52 By : adminliver
 


 

No. 8



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



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


เข้าใจว่า
1. ตอนจะเพิ่มเข้า grid ก็ ยอดคงเหลือ - ยอดที่จะเบิก (ยอดทั้งหมดใน datagrid + ยอดที่กำลังจะเพิ่มไปใหม่) ถ้าเหลือมากพอ
ก็เพิ่มใน datagrid ได้
2. ตอนที่จะบันทึกลง DataBase
ก็ต้องเช็คทั้งหมดใหม่อีกรอบ
แล้วค่อยบันทึก

ปัญหาที่จะพบก็คือ เวลาที่มีการใช้งานหน้าจอเบิกพร้อมกันหลาย ๆ คน
และกดบันทึกพร้อม ๆ กัน
มันอาจจะตัดยอดผิดก็ได้น่ะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-21 09:51:15 By : fonfire
 


 

No. 9



โพสกระทู้ ( 9,556 )
บทความ ( 2 )



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


กรณีทำงานเครื่องเดียวไม่ค่อยจะมีปัญหาทำอย่างไรก็ได้

แต่ถ้ากรณีทำงานหลายเครื่อง คำสั่งสำคัญอยู่ที่ sql statement
ให้ทำงานพร้อมตรวจเช็คพร้อมกันใน statement เดียว เพื่อป้องกันการทำงานซ้ำซ้อนจากหลายเครื่อง
แล้วเอา result ที่ได้จากการคิวรี่ มาตรวจสอบว่า ได้ไม่ได้ แล้ว alert ให้ผู้ใช้รู้


ข้อดีของการทำ transaction / rollback คือสามารถยกเลิก การทำงานได้
แต่ข้อเสียคือมันจะทำการ lock ข้อมูลบาง record ไว้จนกว่าจะคืนค่า ไม่สามารถทำงานพร้อมกันหลายเครื่องได้ในบางโอกาส
เกิด connection ในระยะเวลามากขี้น และยิ่งจำนวนผู้ใช้มาก การออกแบบต้องคำนึงหลายขั้นตอน

แต่ในกรณีที่ไม่ทำ transaction / rollback ใช้ sql statement ดีๆ ก็แค่ตรวจสอบ ผลที่ได้ จบในขั้นตอนเดียว
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-21 09:59:13 By : Chaidhanan
 


 

No. 10



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



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

ตอบความคิดเห็นที่ : 7 เขียนโดย : adminliver เมื่อวันที่ 2017-11-21 09:40:52
รายละเอียดของการตอบ ::
ความจริงหน้านี้น่าจะเป็นหน้าของ job order ที่สามารถเบิกสีได้หลายๆ สีรึป่าวครับ
แบบนี้น่าจะย้ายจากเจ้า textbox มาเป็น grid เลย
เบิกได้เท่าไหร่ก็ตัดยอดที่ละสีลงใน grid เลย
เมื่อเบิกครบ ค่อย save data ทีเดียว แบบนี้ดีไม๊ครับ

ตัวชื่อสี เอามาทำเป็น DataGridViewComboBoxColumn ให้ User เลือกได้ด้วย
แบบนี้ทำให้หน้านี้ยุบลงเหลือแค่ ตารางเดียวได้เลยครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-21 10:04:40 By : lamaka.tor
 


 

No. 11



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



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


ตอบความคิดเห็นที่ : 10 เขียนโดย : lamaka.tor เมื่อวันที่ 2017-11-21 10:04:40
รายละเอียดของการตอบ ::

จารย์ครับผมลองทำตามวิธีแล้วมันยัง Check ไม่ได้อะครับพอจะมีวิธี Check อีกไหมครับ
ะำะำะะำะ
Code (VB.NET)
   For Each rowTemp As DataGridViewRow In gridTempInsert.Rows
                            sqltemp = "select a.MasID as MasIDTempPay,a.MasColorID as MasColorIdTempPay,a.MasName as MasNameTempPay
                                  , isnull(a.MasAmountFix,0) + isnull(TicketTotal,0) as BalanceTotal
                                    From tbMasterColor a 
                                    left outer join (select MasID,isnull(sum(TicKetAmount),0) as TicketTotal from  tbStcTicket group by MasID) b
                                     on a.MasID = b.MasID
                                     Where a.MasStatus = 'Open' and b.masID = '" & rowTemp.Cells(1).Value & "' "
                            Using DA As New SqlDataAdapter(sqltemp, Objconn)
                                DT = New DataTable
                                DA.Fill(DT)
                            End Using
                            Dim BLCheck As Decimal
                            Dim checkTempAmount As Decimal
                            Dim totalBL As Decimal
                            Dim BLCheckNameColor As String
                            BLCheck = DT.Rows(0)("BalanceTotal")
                            BLCheckNameColor = DT.Rows(0)("MasNameTempPay")
                            checkTempAmount = rowTemp.Cells(4).Value
                            totalBL = BLCheck - checkTempAmount
                            If totalBL < 0 Then
                                error_message("ห้ามจ่ายเกินคงเหลือ" & vbCrLf & "ชื่อสี : " & BLCheckNameColor & vbCrLf & "จำนวนคงเหลือ" & BLCheck.ToString)
                            Else

                            End If
                        Next
                    Catch ex As Exception
                        MessageBox.Show(ex.Message)
                    End Try


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-24 14:29:30 By : adminliver
 


 

No. 12



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



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

ตอบความคิดเห็นที่ : 11 เขียนโดย : adminliver เมื่อวันที่ 2017-11-24 14:29:30
รายละเอียดของการตอบ ::
ของผมอาจจะบ้านๆซักหน่อยนะครับ(เน้น user ใช้ง่าย)

555

1. สร้างตัวเช็คยอดคงเหลือมา อาจจะประกาศ เป็นตัวแปร หรือ ใช้ textbox รับค่ามาจาก SQL ก็ย่อมได้
2. หาวิธีเปรียบเทียบให้ได้ อาจจะเช็คตอนที่ กรอกข้อมูลเลย ทำยังไงก็ได้ให้โปรแกรมมันรู้ว่า ต้องเอาตัวไหนมารวมกันมั่ง
อาจจะเอาตัวล่างสุดมาเลย หรืออื่นๆ



ของผมนั้น บ้านๆ มาก เพราะ datagrid หรือ Control ต่างๆ ผูกกับ BindingSource
จากรูปถ้าเราเปลี่ยนค่าใน combobox รายชื่อสาร
จะได้ว่า
Code (C#)
private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(rlIDTextBox.Text)) return;
            tblReagent_oBindingSource.Filter = " rrID = '" + rlIDTextBox.Text + "'";
            tblReagent_BLBindingSource.Filter = " rlID = '" + rlIDTextBox.Text + "'";
            this.tblReagent_oDataGridView.SetDefaultCellStyle();

        }


แค่นี้ก็ได้ ยอดคงเหลือมาแล้วครับ(ไม่ซับซ้อน บ้านๆ จริงๆ)

เมื่อ User ทำการใส่ตัวเลขลงใน DataGridView เพื่อเบิกสาร

Code (C#)
private void tblReagent_rDataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
           //รับ ID มาใส่เลย
            tblReagent_oDataGridView[1, e.RowIndex].Value = rlIDTextBox.Text;
          // ลงชื่ออัตโนมัติ จะได้ไม่เสียเวลา
            tblReagent_oDataGridView[3, e.RowIndex].Value = _class.clsUserLogin.EmployeeName;
           // ลงเวลาอัตโนมัติ จะได้ไม่เสียเวลา
            tblReagent_oDataGridView[4, e.RowIndex].Value = DateTime.Now;
            
             // เช็คยอดว่าตรงไม๊
            if (CheckBL())
            {
                MessageBox.Show("จำนวนคงเหลือ ไม่พอในการเบิกจ่าย","แจ้งเตือน");
                tblReagent_oDataGridView[2, e.RowIndex].Value = bLTextBox.Text;
            }
        }



จากนั้นผมก็สั่งเช็คยอดครับ

Code (C#)
bool CheckBL()
        {
            int n = 0;
            for (int i = 0; i < tblReagent_oDataGridView.RowCount - 1; i++)
            {
                if ((int)tblReagent_oDataGridView[0,i].Value <0)
                n += (int)tblReagent_oDataGridView[2, i].Value;
            }
            return (n > bLTextBox.Text.ToInt());

        }


มีหลายวิธีที่จะทำ ขึ้นอยู่กับว่าเราเริ่มต้นยังไง ผมเริ่มด้วย datagrid ผูกกับ BindingSource
เพราะงั้น เวลา เราเพิ่ม ข้อมูลลงไปใหม่ ก็ จะมีค่า ติดลบ ตรง คอลัมน์แรก(หวานกันเลยทีเดียว)
ก็เอาตัวนั้นมาใช้เป็นประโยชน์

บ้านๆก็มีแค่นี้ละครับ แค่มองหลักการให้ออก แล้วก็ เขียนโค้ดให้ตรงกับหลักที่เราตั้งไว้ก็พอ
ยังไงผลลัพธ์ก็ย่อมตรงกัน และ User ก็ไม่สนใจด้วยว่าเราจะเขียนยังไง เขาสนแค่ผลลัพธ์

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-24 16:12:58 By : lamaka.tor
 


 

No. 13



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



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


ตอบความคิดเห็นที่ : 12 เขียนโดย : lamaka.tor เมื่อวันที่ 2017-11-24 16:12:58
รายละเอียดของการตอบ ::
ขอบคุณมากครับจารย์ ตอนนี้ Check ได้แล้วครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-24 20:20:33 By : adminliver
 

   

ค้นหาข้อมูล


   
 

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