Hỏi cách trình bày dữ liệu trong 1 field

  • Thread starter tung99
  • Ngày gửi
T

tung99

Sơ cấp
30/10/08
14
1
3
Tay Ninh
Chào tất cả các bạn!
Trong access mình có 2 field là: TENHH và SOLUONG được trình bày theo cột như sau:

TENHH SOLUONG
Bánh 10
Sữa 8
Kẹo 15

Mình muốn tại form TONGHOP các số liệu được trình bày trong 1 field như sau:
GHICHU
Bánh (10), Sữa (8), Kẹo (15)

Nhờ các bạn và các anh chi hướng dẫn cụ thể dùn. Cám ơn rất nhiều!
 
Sửa lần cuối:
Khóa học Quản trị dòng tiền
T

tung99

Sơ cấp
30/10/08
14
1
3
Tay Ninh
Ðề: Hỏi cách trình bày dữ liệu trong 1 field

Anh hai2hai, anh Đào Việt Cường ơi! giúp với.
Cảm ơn nhiều lắm!
 
T

tung99

Sơ cấp
30/10/08
14
1
3
Tay Ninh
Ðề: Hỏi cách trình bày dữ liệu trong 1 field

Diễn đàn lúc nầy buồn và chán thật, gặp lúc khó khăn không ai thèm đếm xỉa gì hết.
 
N

nguoiconxunui

Khách vãng lai
29/6/04
1,280
215
63
Bình Định
aso2pc.co.cc
Chào tất cả các bạn!
Trong access mình có 2 field là: TENHH và SOLUONG được trình bày theo cột như sau:

TENHH SOLUONG
Bánh 10
Sữa 8
Kẹo 15

Mình muốn tại form TONGHOP các số liệu được trình bày trong 1 field như sau:
GHICHU
Bánh (10), Sữa (8), Kẹo (15)

Nhờ các bạn và các anh chi hướng dẫn cụ thể dùn. Cám ơn rất nhiều!

SELECT DISTINCTROW tblHH.ID, tblHH.tenhh, [tenHH] &"("& [soluong] & ")" AS [GHICHU]
FROM tblHH;
 
T

tung99

Sơ cấp
30/10/08
14
1
3
Tay Ninh
SELECT DISTINCTROW tblHH.ID, tblHH.tenhh, [tenHH] &"("& [soluong] & ")" AS [GHICHU]
FROM tblHH;
Cám ơn bạn đã quan tâm.
Mình mò mấy ngày nay nhưng chưa làm được, mình còn non lắm, nhờ bạn chỉ cụ thể dùm câu lệnh kia đặt vào chỗ nào?
Cám ơn rất nhiều!
 
N

nguoiconxunui

Khách vãng lai
29/6/04
1,280
215
63
Bình Định
aso2pc.co.cc
Cám ơn bạn đã quan tâm.
Mình mò mấy ngày nay nhưng chưa làm được, mình còn non lắm, nhờ bạn chỉ cụ thể dùm câu lệnh kia đặt vào chỗ nào?
Cám ơn rất nhiều!
create query -> view SQL mode: copy và paste vào, nhớ đổi các trường lại cho đúng
 
T

tung99

Sơ cấp
30/10/08
14
1
3
Tay Ninh
Mình quen dùng query dạng lưới, nên câu lệnh của bạn mình thấy tưởng lạ. Câu lệnh đó cũng chỉ tạo ra 1 trường là: BÁNH 10 thành BÁNH (10) . Các loại khác như: KẸO, SỮA cũng vậy và nằm ở các record khác nhau.
Ý mình muốn là tạo ra trường mới có: BÁNH (10), KẸO (15), SỮA (8) cả 3 loại cùng nằm chung 1 record.
Vậy phải làm sao bạn. Cám ơn nhiều nhé!
 
N

nguoiconxunui

Khách vãng lai
29/6/04
1,280
215
63
Bình Định
aso2pc.co.cc
Dùng vba đi, còn access tớ không biết có hỗ trợ hay không trong phiên bản mới, tớ dùng 2003 thì không hỗ trợ như thế
 
N

nguoiconxunui

Khách vãng lai
29/6/04
1,280
215
63
Bình Định
aso2pc.co.cc
Sao không cho sửa bài mình nhỉ
Đầu tiên bạn dùng vba:
PHP:
Public Function ConcatRelated(strField As String, _
    strTable As String, _
    Optional strWhere As String, _
    Optional strOrderBy As String, _
    Optional strSeparator = ", ") As Variant
On Error GoTo Err_Handler
    'Purpose:   Generate a concatenated string of related records.
    'Return:    String variant, or Null if no matches.
    'Arguments: strField = name of field to get results from and concatenate.
    '           strTable = name of a table or query.
    '           strWhere = WHERE clause to choose the right values.
    '           strOrderBy = ORDER BY clause, for sorting the values.
    '           strSeparator = characters to use between the concatenated values.
    'Notes:     1. Use square brackets around field/table names with spaces or odd characters.
    '           2. strField can be a Multi-valued field (A2007 and later), but strOrderBy cannot.
    '           3. Nulls are omitted, zero-length strings (ZLSs) are returned as ZLSs.
    '           4. Returning more than 255 characters to a recordset triggers this Access bug:
    '               http://allenbrowne.com/bug-16.html
    Dim rs As DAO.Recordset         'Related records
    Dim rsMV As DAO.Recordset       'Multi-valued field recordset
    Dim strSql As String            'SQL statement
    Dim strOut As String            'Output string to concatenate to.
    Dim lngLen As Long              'Length of string.
    Dim bIsMultiValue As Boolean    'Flag if strField is a multi-valued field.
 
    'Initialize to Null
    ConcatRelated = Null
 
    'Build SQL string, and get the records.
    strSql = "SELECT " & strField & " FROM " & strTable
    If strWhere <> vbNullString Then
        strSql = strSql & " WHERE " & strWhere
    End If
    If strOrderBy <> vbNullString Then
        strSql = strSql & " ORDER BY " & strOrderBy
    End If
    Set rs = DBEngine(0)(0).OpenRecordset(strSql, dbOpenDynaset)
    'Determine if the requested field is multi-valued (Type is above 100.)
    bIsMultiValue = (rs(0).Type > 100)
 
    'Loop through the matching records
    Do While Not rs.EOF
        If bIsMultiValue Then
            'For multi-valued field, loop through the values
            Set rsMV = rs(0).Value
            Do While Not rsMV.EOF
                If Not IsNull(rsMV(0)) Then
                    strOut = strOut & rsMV(0) & strSeparator
                End If
                rsMV.MoveNext
            Loop
            Set rsMV = Nothing
        ElseIf Not IsNull(rs(0)) Then
            strOut = strOut & rs(0) & strSeparator
        End If
        rs.MoveNext
    Loop
    rs.Close
 
    'Return the string without the trailing separator.
    lngLen = Len(strOut) - Len(strSeparator)
    If lngLen > 0 Then
        ConcatRelated = Left(strOut, lngLen)
    End If

Exit_Handler:
    'Clean up
    Set rsMV = Nothing
    Set rs = Nothing
    Exit Function

Err_Handler:
    MsgBox "Error " & Err.Number & ": " & Err.Description, vbExclamation, "ConcatRelated()"
    Resume Exit_Handler
End Function

Tiếp theo bạn giữ lại câu lệnh SQL ở bài trước tớ gửi với tên query1
Sau đó, dùng tiếp SQL sau:
PHP:
SELECT DISTINCT ConcatRelated("[GHICHU]","[Query1]","","[GHICHU]",", ") AS [NOTE_2]
FROM Query1;
 
  • Like
Reactions: tung99

Xem nhiều