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

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


 

[.NET] อยากรบกวนเกี่ยวกับการจับคู่ใน 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 : 2281 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)
01.Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
02.   Dim sqlConnection As SqlConnection
03.   Dim sqlSelectCommand As SqlCommand
04.   Dim sqlInsertCommand As SqlCommand
05. 
06.   Dim WorkerCode As String
07. 
08.   Dim sqlConnectionString As String
09.   sqlConnectionString = "Database=table;Data Source=localhost;User Id=root;Password=admin"
10.   sqlConnection = New SqlConnection(sqlConnectionString)
11. 
12.   Dim sqlSelectCommandString As String
13.   sqlSelectCommandString = "Select Sum(Income) As [Income], [WorkerCode] From [Table_Work] Group By [WorkerCode] Order By [Income] ASC"
14.   sqlSelectCommand = New SqlCommand(sqlSelectCommandString, sqlConnection)
15. 
16.   Try
17.      Dim DtWorker As DataTable
18.      DtWorker = New DataTable
19. 
20.      Dim sqlDataAdapter As SqlDataAdapter
21.      sqlDataAdapter = New SqlDataAdapter(sqlSelectCommand)
22.      sqlDataAdapter.Fill(DtWorker)
23. 
24.      WorkerCode = DtWorker.Rows(0)("WorkerCode")
25.   Catch ex As Exception
26.      MessageBox.Show(ex.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Error)
27.   End Try
28. 
29.   Dim sqlInsertCommandString As String
30.   sqlInsertCommandString = "Insert Into [Table_Work] ([WorkName], [InCome], [WorkerCode]) Values (@WorkName, @InCome, @WorkerCode)"
31.   sqlInsertCommand = New SqlCommand(sqlInsertCommandString, sqlConnection)
32.   sqlInsertCommand.Parameters.AddWithValue("@WorkName", TextBoxWorkName.Text)
33.   sqlInsertCommand.Parameters.AddWithValue("@InCome", Double.Parse(TextBoxInCome.Text))
34.   sqlInsertCommand.Parameters.AddWithValue("@WorkerCode", WorkerCode)
35. 
36.   Try
37.      sqlConnection.Open()
38.      sqlInsertCommand.ExecuteNonQuery()
39.      sqlConnection.Close()
40.   Catch ex As Exception
41.      MessageBox.Show(ex.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Error)
42.   End Try 
43.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 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





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