รวมชื่อให้อยูในฟิลด์เดียวกัน หรือบรรทัดเดียวกัน
กระทู้เก่าบอร์ด อ.Yeadram

 1,804   3
URL.หัวข้อ / URL
รวมชื่อให้อยูในฟิลด์เดียวกัน หรือบรรทัดเดียวกัน

เรียนถาม อ.Yeadram และท่านผู้รู้ทุกท่าน
table ผมมี 2 ฟิลด์ Name, Company

Name                  Company
Mr.AA                  ComA
Mr.BB                  ComA
Mr.CC                 ComB
Mr.DD                 ComB
Mr.EE                  ComC
Mr.FF                  ComC
Mr.GG                 ComD
Mr.HH                 ComD

ต้องการแสดงใน Query, หรือใน Form หรือ Report แบบนี้ครับ
Field1                 Field2
ComA                  Mr.AA, Mr.BB
ComB                  Mr.CC, Mr.DD
ComC                  Mr.EE, Mr.FF
ComD                  Mr.GG, Mr.HH

ขอบพระคุณอย่างสูงครับ

3 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R02265
ถ้าใช้แบบคิวรี่ทำทั้งหมด มันค่อนข้างจะเขียนยากครับ เพราะจำคำสั่งพวก switch หรือ case ไม่ค่อยได้ อิอิ (จริงๆ มันก็ทำได้นั่นแหละครับถ้าศึกษาภาษา SQL จริงๆ)

ข้อดีของมันคือ realtime แม้ข้อมูลจะถูกแก้ไขปรับปรุงเมื่อไหร่ เราก็มั่นใจได้ว่า ผลลัพธ์มันจะออกมาถูกต้องแน่นอน

แต่ถ้า งูๆ ปลาๆ อย่างผม ผมคงต้องเขียนเป็นฟังก์ชั่นเฉพาะ ขึ้นมาเพื่อใช้งาน ให้วนลูปนำข้อมูลที่จัดเรียงแล้วไปลงในตารางพัก แหละครับ
ข้อเสียคือ ตรงกันข้ามกับข้อดีของการเขียน SQL นั่นแหละครับ กล่าวคือ เมื่ออยากได้ข้อมูลที่ถูกต้องแม่นยำครั้งใด ก็ต้องสั่งรันฟังก์ชั่นซ้ำทุกที

อืมม หรือว่ารออีกหน่อย อาจจะมีคนหาทางทำได้โดย sql มาบอกก็ได้ครับ
2 @R02268
เอาฟังก์ชั่นนี้ไปไว้ในโมดูล

Public Function CpName(ByVal Comp As String) As String

Dim sq As String
Dim Rs As New ADODB.Recordset
Dim Conn As New ADODB.Connection
Set Conn = CurrentProject.Connection

CpName = ""
sq = "Select [Name] From Table2 where Company = '" & Comp & "';"
Rs.Open sq, Conn, 1
If Rs.EOF And Rs.BOF Then GoTo Endfunction

Do While Not Rs.EOF
    CpName = CpName & Rs(0) & ", "
    Rs.MoveNext
Loop

CpName = Left(CpName, Len(CpName) - 2)

Endfunction:
    If Rs.State <> 0 Then Rs.Close
    Set Rs = Nothing
    If Conn.State <> 0 Then Conn.Close
    Set Conn = Nothing
End Function



แล้วเอาคิวรี่นี้ไปใช้ครับ
SELECT Company AS Field1, CpName([Company]) AS Field2
FROM Table2
GROUP BY Company, CpName([Company]);



ได้แบบ Real Time แล้วครับ อิอิ แต่ว่ามันจะหนักมากๆ ถ้าเจอข้อมูลเยอะๆ
3 @R02272
ขอบคุณ อ.yeadram มากครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3112s