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

HOME > .NET Framework > Forum > อยากรบกวนเกี่ยวกับการจับคู่ใน VB ครับ ถ้าสมมติผมมีข้อมูล งานอยู่100งาน(สมมติไม่มีปัจจัยอื่นๆ)



 

อยากรบกวนเกี่ยวกับการจับคู่ใน VB ครับ ถ้าสมมติผมมีข้อมูล งานอยู่100งาน(สมมติไม่มีปัจจัยอื่นๆ)

 



Topic : 035597

Guest




ถ้าสมมติผมมีข้อมูล
งานอยู่100งาน(สมมติไม่มีปัจจัยอื่นๆ)โดยแต่ละงานจะมีรายได้แตกต่างกัน
แล้วต้องการให้เราสามารถกดbutton แล้วจับคู่คนกับงานโดยอัตโนมัติ
โดยมีคนงานทั้งหมด 5คน และสนใจว่ารายได้จากแต่ละงาน
สุดท้ายแล้วรายได้จะกระจาย 5คนพอๆกัน
ซึ่งจากข้อมูลข้างต้นผมลองคิดดูเป็นlogicได้ประมาณว่า
ให้เก็บค่าarrayของงาน100งาน กับคน 5คน แล้วใช้หลักการ sortคน
ให้จับคู่กับงานโดย จะต้องเก็บค่าสะสมรายได้ของแต่ละคน
จากนั้นก็จะsort คนที่ได้น้อยที่สุดมาเป็นคนแรก วนอย่างนี้ไปเรื่อยจนครบ100 งาน

เลยอยากจะขอรบกวนพื้นที่ตรงนี้และทุกท่านช่วยแนะนำผมที
ว่าควรจะต้องเขียนโค๊ดอย่างไร หรือผิดถูกอย่างไรสำหรับแนวความคิดนี้

ขอบคุณมากๆครับ



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2009-12-11 01:14:28 By : ผู้อ่อนด้วยประสบการณ์ View : 2188 Reply : 22
 

 

No. 1



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

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

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


ลองออกแบบวิธีการด้วยมือก่อนครับ

แล้วค่อยเอาวิธีการที่ได้มาเขียนอีกที






Date : 2009-12-11 09:00:12 By : tungman
 


 

No. 2

Guest


ผมเคยลองออกแบบวิธีการด้วยมือแล้วครับ ใช้ excel
แล้วเลยได้เป็นหลักการที่บอกไปครับ คือเข้าใจหลักการ
แต่ผมไม่สามารถแปลงเป็น code ได้ครับ
เนื่องจากยอมรับว่าเริ่มต้นแบบไม่เป็นเท่าไหร่
เพิ่งจะมาศึกษาจริงจังช่วงนี้นะครับ

เลยอยากรบกวนขอคำแนะนำเพิ่มเติมด้วยครับ
ขอบคุณมากครับ
Date : 2009-12-11 11:18:36 By : จขกท
 

 

No. 3



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

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

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


vb6 หรือ .Net ครับ
Date : 2009-12-11 11:22:24 By : Sek-Artdrinker
 


 

No. 4

Guest


.net ครับผม
Date : 2009-12-11 11:29:10 By : จขกท
 


 

No. 5



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



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


5คน และสนใจว่ารายได้จากแต่ละงาน
สุดท้ายแล้วรายได้จะกระจาย 5คนพอๆกัน
หมายความว่าไงครับ

แบบนี้หรือเปล่า มี งาน 100 งาน แต่ละงานจะมีรายได้ แตกต่ากันไป

มี คน อยู่ 5 คน แต่ละคนต้องการรายได้ ไม่เท่ากัน
เช่น คน ที่ 1 ต้องการรายได้ 2000 เราจะต้องจัดการจับคู่ให้ คนที่ 1 กับ งาน ว่างานไหน จะทำให้เขาได้รายได้ 2000 หรือ ว่า เขา ต้องทำกี่งานจึงจะได้ รายได้ 2000 แบบนี้อ่ะเปล่าครับ ที่จะทำ

อิอิ อ่านโจทย์ แล้ว งง ครับ ประสบการณ์น้อยเหมือนกัน ^^
Date : 2009-12-11 11:44:13 By : ksillapapan
 


 

No. 6



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

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

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


1. สร้าง Table ขึ้นมา 2 Table

Table_Work
- WorkID Int, PK, (Index)
- WorkName NVarChar (ชื่องาน)
- InCome Float (รายได้)
- WorkerCode NVarChar (รหัสคนงานที่รับงาน)

Table_Worker
- WorkerID Int, PK, (Index)
- WorkerCode NVarChar (รหัสคนงาน)
- WorkName NVarChar (ชื่อคนงาน)
Date : 2009-12-11 11:48:28 By : tungman
 


 

No. 7



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

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

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


2. ใส่ข้อมูลคนงานทั้งหมดใน Table_Worker

3. สร้าง Form เพื่อป้อนงานเข้ามา ซึ่งจะมี Input คือ
- ชื่องาน
- รายได้

4. เมื่อกดปุ่ม บันทึก โปรแกรมจะ Insert งานเก็บลงใน Table_Work ส่วนฟิล WorkerCode นั้น

โปรแกรมจะเลือกรหัสคนงานที่มีรายได้รวมน้อยที่สุดขึ้นมา โดยการ Query ข้อมูลจาก Table_Work

Select Sum(Income) As [Income], [WorkerCode] From [Table_Work] Group By [WorkerCode] Order By [Income] ASC

เราก็จะได้คนงานที่มีรายได้รวมน้อยที่สุดมา กรณียังไม่มีงานในฐานข้อมูลเลย ให้เลือกคนงานตาม Index
Date : 2009-12-11 11:57:34 By : tungman
 


 

No. 8



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

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

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


สรุปคือ รับงานใหม่มาหนึ่งงาน จะจ่ายงานให้คนงานที่มีรายได้รวมน้อยที่สุด

ส่วนโปรแกรม รอผู้ชำนาญ vb app มาตอบ
Date : 2009-12-11 12:01:04 By : tungman
 


 

No. 9

Guest


คือสมมติว่า
มีคน5คนนาย A, B, C, D, E
มีงาน 100งาน แต่ละงานจะให้เบี้ยเลี้ยงแตกต่างกันอยู่ 3เรท คือ 60, 80, 100
ทีนี้สิ่งที่ต้องการก็คือว่า
อยากจะแสดงtableออกมาว่ามี
งาน------------คน
001(60B)
002(80B)
003(60B)
'
'
'
100
แล้วเมื่อกดcommand button แล้วจะจับคนใส่งานให้โดยเงื่อนไขที่ต้องการคือ รายได้ที่พอๆกัน
งาน------------คน
001(60)-----------A
002(80)-----------B
003(60)-----------C
004(100)-----------D
005(80)-----------E
006(100)----------A
007(60)-----------C
'
'
'
100-----------------X

สิ่งที่ทำอยู่ก็คือสร้างdatabase แล้วมีฟิลงาน และก็คน(null) เพื่อรอกดปุ่มแล้วแสดงผล
คือต้องการให้แสดงผลออกมาด้วยอะครับ อาจจะเป็น datagrid

ยังไงก็รบกวนด้วยนะครับ
ขอบคุณมากครับ
Date : 2009-12-11 12:04:51 By : จขกท
 


 

No. 10



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

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

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


แสดงว่ามีงานอยู่แล้ว

งั้นวนวูปเลย ใช้ algoritm ของผมนั้นแหละ "จะจ่ายงานให้คนงานที่มีรายได้รวมน้อยที่สุด ถ้ายังไม่มีงานให้เลือกคนงานตาม Index"
Date : 2009-12-11 12:20:15 By : tungman
 


 

No. 11

Guest


แต่ก็ยังมีคำถามอยู่ครับว่า
ถ้าหากผมจะลอง coding ใน button ตามalgorithm แล้ว
จะสามารถสั่งให้มันแสดงผลออกมาใน datagrid ได้หรือไม่ครับ
สมมติ datagrid มีfieldของ งานอยู่ แล้วก็ คน แต่คนยังเป็นว่างๆรอการgenจากการกดbutton
ถ้าได้ต้องcodeอย่างไรครับ
แล้วถ้าไม่ได้ ต้องทำยังไงครับ

ขอบคุณทุกคนจริงๆครับ
Date : 2009-12-11 12:25:21 By : จขกท
 


 

No. 12



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

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

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


datagrid ไม่ได้เก็บข้อมูลครับ ใช้แสดงข้อมูลเฉยๆ

ถ้าข้อมูลใน database เปลี่ยน datagrid ก็เปลี่ยนด้วยครับ
Date : 2009-12-11 12:37:27 By : tungman
 


 

No. 13

Guest


งั้นแสดงว่าผมต้องทำการโปรแกรมก่อนเพื่อจัดงาน แล้วจึงค่อยดึงข้อมูลมาแสดงผลใน datagrid ใช่มั๊ยครับ
Date : 2009-12-11 12:45:57 By : จขกท
 


 

No. 14



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

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

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


ขอเกาศีรษะ 3 แก๊ก

ทำแบบนั้นก็ได้ครับ เขาเรียกว่าเตรียมข้อมูล คือตอนนี้มี 100 มียังไม่มีคนงานใช่ไหมครับ

ซึ่งไม่น่าจะมีให้ทำบ่อยๆ เราก็มาเตรียมข้อมูลโดนจับ map ระหว่างงานกับคนงานให้หมดก่อน

จากนั้นก็ไม่ต้องทำขั้นตอนนี้อีกต่อไป ให้ใช้งานผ่านโปรแกรมเลย คือคราวนี้งานจะเข้ามาทีละ 1 รายการ

โปรแกรมก็จะเลือกคนงานให้เราเอง

ส่วน datagrid นั้นสามารถให้มัน insert ข้อมูลให้มันแสดงผลได้ทันทีครับ (แต่ต้อง bind data ให้มันใหม่ก่อน)

แนะนำให้ จขกท ลองเขียนโปรแกรมง่ายๆ ก่อนครับ ทีละฟังก์ชั่น ดูวิธีการใช้ และผล

จะได้เข้าใจได้ง่ายขึ้น
Date : 2009-12-11 13:03:17 By : tungman
 


 

No. 15

Guest


ขอโทษจริงๆนะครับที่ถามเยอะ
แต่ก็ขอบคุณมากจริงๆครับ
ได้ไอเดียเยอะเลยจากที่นั่งหมกหมุ่นอยู่หลายนาน

แต่อาจจะมีปัญหาเกิดขึ้นต่อ - -

ยังไงก็รบกวนด้วยนะครับ

ขอบคุณครับผมคุณ tungman
Date : 2009-12-11 13:05:24 By : จขกท
 


 

No. 16

Guest


ถึงคุณ tungman ครับ
คือผมยังมีปัญหาไม่เข้าใจในส่วนนี้นะครับ

โปรแกรมจะเลือกรหัสคนงานที่มีรายได้รวมน้อยที่สุดขึ้นมา โดยการ Query ข้อมูลจาก Table_Work

Select Sum(Income) As [Income], [WorkerCode] From [Table_Work] Group By [WorkerCode] Order By [Income] ASC

ว่าต้องใส่ไว้ตรงไหนในcodeครับ

ตอนนี้ที่ลองทำได้คือการ insert ครับผม

ยังไงรบกวนด้วยนะครับ
Date : 2009-12-12 18:14:12 By : จขกท
 


 

No. 17



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

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

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


เอา Select Sum(Income) As [Income], [WorkerCode] From [Table_Work] Group By [WorkerCode] Order By [Income] ASC

query ข้อมูลใน db จับยัดเข้า datatable แล้วเรียกใช้ด้วย row[0] ของ datatable นั้น

คนงานที่มีรายได้น้อยที่สุด = datatable.Rows[0]["WorkerCode"].ToString();

แล้วก็นำไปใช้ insert ข้อมูล

ส่วนตรงไหนนั้น ผมนึกไม่นึก

มันแล้วแต่ว่าคุณจะ insert ข้อมูลตรงไหน
Date : 2009-12-12 18:30:37 By : tungman
 


 

No. 18

Guest


ถึงคุณ tungman ครับ
ผมลองcodingได้ประมาณนี้ครับ
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
With conn
Dim conn As New MySqlConnection("Database=table;Data Source=localhost;User Id=root;Password=admin")

If .State = ConnectionState.Open Then .Close()
.Open()
End With
Try
Dim strsql As String = TextBox1.Text
da = New MySqlDataAdapter(strsql, conn)
Dim dt As New DataTable
da.Fill(dt)
Dim row As DataRow = dt.Rows(0)("workercode")
dt.Rows(0)("workercode").ToString()
row("workercode") = "insert workercode from table_work where sum(income) as income asc"
DataGridView1.DataSource = dt
conn.Close()

Catch ex As Exception
MessageBox.Show(ex.ToString, "error", MessageBoxButtons.OK, MessageBoxIcon.Error)

End Try
End Sub

คือสามารถquery อย่างที่คุณtungmanแนะนำ แต่ไม่สามารถ insert ได้อะครับ มันขึ้นerror เกี่ยวกับ system.datarow ครับ
ทำยังไงดีครับ
Date : 2009-12-13 10:36:41 By : จขกท
 


 

No. 19

Guest


เพิ่มเติมครับ
คือตอนนี้กลายเป็นว่า สามารถ insert ได้แต่มันไม่ได้เป็นการ query ครับ
มันกลับขึ้นเป็น sql เป็น string ธรรมดาครับผม
ทำยังไงดีครับ - - อีกนิดเดียวเอง
Date : 2009-12-13 12:16:38 By : จขกท
 


 

No. 20



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

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

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


คือผมไม่ค่อยถนัด vb นักนะครับ ขออภัยถ้าโค้ดผิด เพราะโค้ดสด

เอาเป็นว่าเมื่อ คลิก button1 จะทำการ insert งานใหม่พร้อมเลือก WorkerCode มาใส่นะครับ

Code (VB.NET)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
   Dim sqlConnection As SqlConnection
   Dim sqlSelectCommand As SqlCommand
   Dim sqlInsertCommand As SqlCommand

   Dim WorkerCode As String

   Dim sqlConnectionString As String
   sqlConnectionString = "Database=table;Data Source=localhost;User Id=root;Password=admin"
   sqlConnection = New SqlConnection(sqlConnectionString)

   Dim sqlSelectCommandString As String
   sqlSelectCommandString = "Select Sum(Income) As [Income], [WorkerCode] From [Table_Work] Group By [WorkerCode] Order By [Income] ASC"
   sqlSelectCommand = New SqlCommand(sqlSelectCommandString, sqlConnection)

   Try
      Dim DtWorker As DataTable
      DtWorker = New DataTable

      Dim sqlDataAdapter As SqlDataAdapter
      sqlDataAdapter = New SqlDataAdapter(sqlSelectCommand)
      sqlDataAdapter.Fill(DtWorker)

      WorkerCode = DtWorker.Rows(0)("WorkerCode")
   Catch ex As Exception
      MessageBox.Show(ex.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Error)
   End Try

   Dim sqlInsertCommandString As String
   sqlInsertCommandString = "Insert Into [Table_Work] ([WorkName], [InCome], [WorkerCode]) Values (@WorkName, @InCome, @WorkerCode)"
   sqlInsertCommand = New SqlCommand(sqlInsertCommandString, sqlConnection)
   sqlInsertCommand.Parameters.AddWithValue("@WorkName", TextBoxWorkName.Text)
   sqlInsertCommand.Parameters.AddWithValue("@InCome", Double.Parse(TextBoxInCome.Text))
   sqlInsertCommand.Parameters.AddWithValue("@WorkerCode", WorkerCode)

   Try
      sqlConnection.Open()
      sqlInsertCommand.ExecuteNonQuery()
      sqlConnection.Close()
   Catch ex As Exception
      MessageBox.Show(ex.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Error)
   End Try  
End Sub

Date : 2009-12-13 20:13:43 By : tungman
 


 

No. 21

Guest


ขอบคุณมากครับ
พบว่ามีปัญหาตรง
sqlInsertCommand.Parameters.AddWithValue("@WorkerCode", WorkerCode)
มันทำให้เวลาinsert ลง db แล้วกลายเป็นค่า null ทั้งหมดเลยครับ
ต้องแก้ไขยังไงครับ
Date : 2009-12-13 21:55:35 By : จขกท
 


 

No. 22



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

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

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


แสดงว่าใน [Table_Work] ยังไม่มีข้อมูลแน่เลย

ต้องเขียนเงื่อนไขเพิ่มครับว่า ถ้ายังไม่มีข้อมูลหรือยังแจกงานให้คนงานไม่ครบทุกคน

ให้ไปเอาข้อมูลจาก [Table_Worker] ครับ

ลองเขียนเองแป๊บนะ เพราะตอนนี้ผมติดไวรัส มึนหัวมากๆ

ถ้าไม่ได้อย่างไรบอกด้วย
Date : 2009-12-15 13:30:27 By : tungman
 

   

ค้นหาข้อมูล


   
 

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