• Thứ Ba, 21/06/2011 08:02 (GMT+7)

    Lập trình VB6 không xuất được datareport theo nhóm

    Câu hỏi :

    Lập trình báo cáo trong Visual basic 6.0, tôi đã có thể xuất được datareport những gì đã tìm, nhưng khi group by Magv, têngv, email, điện thoại thì không thể xuất datareport được, bị báo lỗi “Datafield command1.tendt not found” (tendt là field đã không group by). Xin hướng dẫn.

    Cụ thể đoạn code của tôi như sau:
    Private Sub Cmdin_Click()
    Dim gt, sql As String
    gt = giaovien.TxtTritim
    If giaovien.opMaGV = True Then
    'xây dựng lệnh Select theo mã giáo viên
    sql = select giaovien.magv, giaovien.tengv, giaovien.dienthoai, giaovien.email, detai.tendt, detai.ngaybd, detai.ngaykt, detai.diem from giaovien, huongdanchuyenmon, detai
    where giaovien.magv=huongdanchuyenmon.magv and huongdanchuyenmon.madt=detai.madt and giaovien.Magv=group by magv, tengv, email, dienthoai & gt &
    ElseIf giaovien.opTenGV = True Then
    'xây dựng lệnh Select theo tên giáo viên
    sql = select giaovien.magv, giaovien.tengv, giaovien.dienthoai, giaovien.email, detai.tendt, detai.ngaybd, detai.ngaykt, detai.diem from giaovien, huongdanchuyenmon, detai
    where giaovien.magv=huongdanchuyenmon.magv and huongdanchuyenmon.madt=detai.madt and giaovien.tengv like % & gt & %
    End If
    DataEnvironment1.Connection1.Properties.Refresh DataEnvironment1.Commands(command1_Grouping).CommandText = sql
    If DataEnvironment1.rsCommand1.State = 0 Then DataEnvironment1.rsCommand1_Grouping.Requery
    End If
    danhsachgv.Show
    End Sub



    Trả lời :

    Bạn không miêu tả rõ ràng cấu trúc record của từng bảng dữ liệu, mỗi field trong record có tên gì và thuộc kiểu dữ liệu nào nên chúng tôi chỉ trả lời tổng quát. Về cú pháp, sau khi xem đoạn lệnh VB mà bạn viết, chúng tôi thấy lệnh gán xây dựng câu truy vấn Select theo mã giáo viên bị lỗi cú pháp, cụ thể lỗi nằm ở điều kiện where cuối cùng (giaovien.Magv=group by ...). Lưu ý rằng trong câu truy vấn Select, "group by" là mệnh đề độc lập với mệnh đề where, như vậy điều kiện giaovien.Magv= còn thiếu toán hạng bên phải toán tử "=". Tham số của mệnh đề "group by" thường là tên field được dùng làm tiêu chuẩn gom nhóm. Các field có kiểu là text, ntext, và image không thể dùng làm field gom nhóm.
     

    Chuyên mục: Lập trình