ongke0711 > 07-07-18, 12:04 AM
(06-07-18, 11:02 PM)thanhtruong Đã viết: Còn cái số lượng nữa, phải thêm thế nào
ví dụ : X072 SL 1, X073 SL 2.
phải sửa code ở chổ nào ạ.
Function GopDong2(TenField1CanGop As String, TenField2CanGop As String, TenFieldThamChieu As String, FieldThamChieu As Variant, TenTable As String)
'Ham dung de gop các dong co chung mot truong (field) nao do lai voi nhau.'
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Dim RowList As String
Set db = CurrentDb()
strSQL = "SELECT " & TenField1CanGop & "," & TenField2CanGop & " FROM " & TenTable & " WHERE CStr([" & TenFieldThamChieu & "])=""" & FieldThamChieu & """"
Debug.Print strSQL
Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)
If Not rs.EOF Then
rs.MoveFirst
End If
Do While Not rs.EOF
RowList = RowList & rs(0) & " SL " & rs(1) & "; "
rs.MoveNext
Loop
GopDong2 = Left(RowList, Len(RowList) - 2)
End Function
Xuân Thanh > 07-07-18, 01:27 PM
Sub TinhTong()
Dim Tong As Recordset
Set Tong = CurrentDb.OpenRecordset("T_Tong")
Dim PhanCong As Recordset
Set PhanCong = CurrentDb.OpenRecordset("T_PhanCong")
If Tong.RecordCount > 0 Then CurrentDb.Execute ("Delete * From T_Tong")
Tong.Index = "PrimaryKey"
PhanCong.MoveFirst
Do Until PhanCong.EOF
Tong.Seek "=", PhanCong!MaGV
If Tong.NoMatch Then
Tong.AddNew
Tong!MaGV = PhanCong!MaGV
Tong.Update
Tong.Bookmark = Tong.LastModified
End If
Tong.Edit
If IsNull(Tong!DayMon) Then
Tong!DayMon = PhanCong!MaMon
Else
Tong!DayMon = Tong!DayMon & ", " & PhanCong!MaMon
End If
Tong!SoLopDay = Tong!SoLopDay + PhanCong!SoLopDay
If IsNull(Tong!TenKN) Then
Tong!TenKN = PhanCong!MaKN
Else
Tong!TenKN = Tong!TenKN & ", " & PhanCong!MaKN
End If
Tong.Update
PhanCong.MoveNext
Loop
Dim STT As Integer
STT = 0
Tong.MoveFirst
Do Until Tong.EOF
Tong.Edit
Tong!STT = STT + 1
Tong.Update
STT = Tong!STT
Tong.MoveNext
Loop
End Sub
thanhtruong > 08-07-18, 07:16 PM
(07-07-18, 12:04 AM)ongke0711 Đã viết:(06-07-18, 11:02 PM)thanhtruong Đã viết: Còn cái số lượng nữa, phải thêm thế nào
ví dụ : X072 SL 1, X073 SL 2.
phải sửa code ở chổ nào ạ.
À tôi không để ý vụ số lượng. Bạn chỉnh code lại chút là được rồi.
- Code cho hàm GopDong2() như bên dưới.
- Truyền tham số trong Query:
CHIDINH: GopDong2("mathuthuat","SoLuong","maso",[maso],"thuthuat")
Hàm GopDong2():
Mã PHP:Function GopDong2(TenField1CanGop As String, TenField2CanGop As String, TenFieldThamChieu As String, FieldThamChieu As Variant, TenTable As String)
'Ham dung de gop các dong co chung mot truong (field) nao do lai voi nhau.'
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Dim RowList As String
Set db = CurrentDb()
strSQL = "SELECT " & TenField1CanGop & "," & TenField2CanGop & " FROM " & TenTable & " WHERE CStr([" & TenFieldThamChieu & "])=""" & FieldThamChieu & """"
Debug.Print strSQL
Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)
If Not rs.EOF Then
rs.MoveFirst
End If
Do While Not rs.EOF
RowList = RowList & rs(0) & " SL " & rs(1) & "; "
rs.MoveNext
Loop
GopDong2 = Left(RowList, Len(RowList) - 2)
End Function
ongke0711 > 08-07-18, 11:24 PM
(08-07-18, 07:16 PM)thanhtruong Đã viết: Ví dụ: Cái này làm trên nhiều cột
Tiêu đề: TThuat | SL | TThuat | SL |TThuat | SL |TThuat | SL |TThuat | SL |TThuat | SL |
Kết quả: A037 | 1 | A038 | 2 |A039 | 2 | A040 | 2 | A041 | 2 | A041 | 2 |
Còn Hiện tại dùng trên 1 dòng: X072 SL 1, X073 SL 2.
thanhtruong > 09-07-18, 08:59 AM
(08-07-18, 11:24 PM)ongke0711 Đã viết:(08-07-18, 07:16 PM)thanhtruong Đã viết: Ví dụ: Cái này làm trên nhiều cột
Tiêu đề: TThuat | SL | TThuat | SL |TThuat | SL |TThuat | SL |TThuat | SL |TThuat | SL |
Kết quả: A037 | 1 | A038 | 2 |A039 | 2 | A040 | 2 | A041 | 2 | A041 | 2 |
Còn Hiện tại dùng trên 1 dòng: X072 SL 1, X073 SL 2.
Ý bạn là có bao nhiêu mã thủ thuật sẽ tạo bấy nhiêu cột + cột SL kèm theo?
Report mà có số cột biến thiên như vậy là không khả thi trong Access. Bạn ngâm cứu xem có định dạng report nào khác khả thi và cũng dễ đọc hiểu hơn không.
ongke0711 > 09-07-18, 01:36 PM
(09-07-18, 08:59 AM)thanhtruong Đã viết: Yêu cầu là nhiều nhất là 5 thủ thuật, vì ở đây là phòng khám nhỏ. 1 bệnh nhân chỉ khám thôi, chứ không có làm thủ thuật nhiều. lâu lâu mới có người làm 1 cái thủ thuật.
Hiện tại họ làm báo cáo theo file excel như sau
SELECT thuthuat.maso, thuthuat.mathuthuat, (SELECT Count(*)
FROM thuthuat As X
WHERE X.maso = thuthuat.maso
And X.mathuthuat <= thuthuat.mathuthuat) AS sttThuThuat, thuthuat.SoLuong
FROM thuthuat;
Xuân Thanh > 10-07-18, 08:37 AM
(09-07-18, 08:59 AM)thanhtruong Đã viết: Ví dụ: Cái này làm trên nhiều cột
Tiêu đề: TThuat | SL | TThuat | SL |TThuat | SL |TThuat | SL |TThuat | SL |TThuat | SL |
Kết quả: A037 | 1 | A038 | 2 |A039 | 2 | A040 | 2 | A041 | 2 | A041 | 2 |
Còn Hiện tại dùng trên 1 dòng: X072 SL 1, X073 SL 2.
Yêu cầu là nhiều nhất là 5 thủ thuật, vì ở đây là phòng khám nhỏ. 1 bệnh nhân chỉ khám thôi, chứ không có làm thủ thuật nhiều. lâu lâu mới có người làm 1 cái thủ thuật.
Xuân Thanh > 10-07-18, 07:54 PM
nguyentrunghoadh > 21-05-20, 04:12 PM
nguyentrunghoadh > 23-05-20, 04:31 PM