Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Nhờ giúp dùm bài tập access
#11
(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 027

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 StringTenField2CanGop As StringTenFieldThamChieu As StringFieldThamChieu As VariantTenTable 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(strSQLdbOpenSnapshot)

   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(RowListLen(RowList) - 2)

End Function 
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn thanhtruong
#12
Đã dùng VBA thì dùng luôn vậy. Hihi
1/ Tạo thêm môt table T_Tong để chứa dữ liệu trả về của VBA
Gồm các trường sau
- STT, Number
- MaGV, Text, PrimaryKey
- SolopDay, Number
- TenKN, Text
 
2/ Chép đoạn code sau vào modun và chạy nó

Mã PHP:
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!DayMonThen
           Tong
!DayMon PhanCong!MaMon
       Else
           Tong
!DayMon Tong!DayMon ", " PhanCong!MaMon
       End 
If
       Tong!SoLopDay Tong!SoLopDay PhanCong!SoLopDay
       If IsNull
(Tong!TenKNThen
           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 
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn thanhtruong
#13
(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 027

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 StringTenField2CanGop As StringTenFieldThamChieu As StringFieldThamChieu As VariantTenTable 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(strSQLdbOpenSnapshot)

   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(RowListLen(RowList) - 2)

End Function 

Mình đã làm thành công. xin cảm ơn!
Nhưng Cũng cái báo cáo đó nhưng nó khác một tý ở cách thế này
Số lượng ở đây họ bắt tách ra 1 cột riêng, chứ không cho dính chung vào mới ác chứ.
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.
Thế thì phải chỉnh code lại thế nào? Xin cho ý kiến. Xin cảm ơn.
Chữ ký của thanhtruong Xin chào, mình là thanhtruong, Tham gia http://thuthuataccess.com/forum từ ngày 23-06 -14.
Reply
Những người đã cảm ơn
#14
(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.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn thanhtruong
#15
(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.

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
[Hình: hinh-4.jpg]
Chữ ký của thanhtruong Xin chào, mình là thanhtruong, Tham gia http://thuthuataccess.com/forum từ ngày 23-06 -14.
Reply
Những người đã cảm ơn
#16
(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
[Hình: hinh-4.jpg]

Cách nhanh nhất tôi là làm dùng dùng Query. Tổng cộng 3 cái query: 1 Select Qurery để thêm số thứ tự cho mã thủ thuật (để đưa vào 5 field Thủ thuật từ 1 -5), 2 cái crosstab để tổng hợp [mathutuat] và [soluong], 1 Select query để join 2 cái query trên.

- Query thêm số thứ tự thủ thuật:
[Hình: 42573401954_08b9d63273_o.png]

Mã PHP:
SELECT thuthuat.masothuthuat.mathuthuat, (SELECT Count(*)
 
    FROM thuthuat As X
    WHERE X
.maso thuthuat.maso
        
And X.mathuthuat <= thuthuat.mathuthuat) AS sttThuThuatthuthuat.SoLuong
FROM thuthuat


[Hình: 28422584457_e266b69e65_o.png]


Link file demo: http://www.mediafire.com/file/6pq459ovj4...t.mdb/file
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn thanhtruong
#17
(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.

Thử dùng VBA xem sao nhé. (Dựa vào kết quả bài trước gộp dòng cách nhau dấu ,ở #12). Hehe
1/ Ta đã có table TongCong với các trường
- MaSo, Number
- MaThuThuat, Text
- Soluong, Text
Table này đã làm cho bạn rồi thông qua hàm nối cách nhau dấu , để ra kết quả : 
40460        X072, X074       1,1

2/ Tạo thêm table BaoCao theo mẫu Excel gồm trường MaSo và 5 cặp trường TT và SL.Tùy theo hiện thực mà thêm các cặp trương TT,SL cho phù hợp
3/ Viết Hàm BaoCao trong Modul để cập nhật từ table TongCong vào table BaoCao

Xem DeMo đính kèm phía dưới


File đính kèm
.zip   mathuthuat.zip (Kích cỡ: 136.39 KB / Tải về: 15)
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn thanhtruong
#18
Giờ mới coi lại. Hình như cái hàm này chưa ổn tuy có ra kết quả nhưng ...dài quá và sắp xếp chưa được đúng ý chủ thớt
Sory nhiều. Lúc nào rảnh sửa lại
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn thanhtruong


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  tự học Access đang bị vướng về Query xin giúp đỡ!!!! datma 3 225 19-09-18, 03:23 PM
Bài mới nhất: datma
  ACCESS CÓ HÀM TƯƠNG TỰ SUMIFS TRONG EXCEL KHÔNG? hoaducvn90 3 346 18-06-18, 11:00 AM
Bài mới nhất: ongke0711
  [Help] Giúp tính tổng số lượng theo mã nam8384 3 1,030 10-06-18, 02:41 PM
Bài mới nhất: thdanh
  Nhờ giúp dùm bài access tập làm nguyentrunghoadh 0 294 03-01-18, 05:26 PM
Bài mới nhất: nguyentrunghoadh
  [Hỏi] Cấu trúc query với các table trên sqlserver đã link vào access mrsiro 7 1,327 05-12-17, 11:46 PM
Bài mới nhất: maidinhdan

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ| PMA Nha Trang| Gỗ Acrylic Không Đường Line