Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hỏi] Gạch chéo report!
#1
Mình xin hỏi mọi người cách gạch chéo phần còn thừa trong subreport bằng code VBA.
Cụ thể là mình đang làm chương trình in hóa đơn theo mẫu in sẵn.
Nhưng theo luật mới bên cục thuế thì họ bắt mình fai gạch phần còn thừa lại trên hóa đơn GTGT. MOng mọi người giúp.
Mẫu như thế này:
[Hình: hoa+don_4.JPG]

Thanks all!!
Chữ ký của trieule9786 Xin chào, mình là trieule9786, Tham gia http://thuthuataccess.com/forum từ ngày 14-03 -14.
Reply
Những người đã cảm ơn
#2
Bạn vẻ 2 line (1 line ngang và 1line chéo) như trong hóa đơn
Giờ bạn viết code theo dạng
line.width=
line.hight=
line.top=
Tùy theo điều kiện (nhiều hay ích sản phẩm) trong sự kiện form_load bạn tùy chỉnh các thông số width,hight,top cho phù hợp
- Đối vói line ngang do không thay đổi về độ dài, nên bạn chỉ cần chỉnh thông số top cho phù hợp
- Đối với line chéo có điểm cuối cố định, thay đổi về chiều dài và vị trí điểm đầu nên bạn thay đổi thông số hight và top cho phù hợp.
Mẹo:
Bạn vẽ line ra từng trường hợp cho đúng với mẫu hóa đơn, sau đó vào code bạn dùng lệnh Msgbox để hiện thị các thông số của các line theo vị trí cần thiết từ đó bạn đặt câu lệnh dễ dàng hơn.
Chữ ký của trunghieu <<---Trên bước đường thành công, không có dấu chân của kẻ lười biếng --->>
ღღღღღTài sản của trunghieu (View All Items) ღღღღღ
Reply
Những người đã cảm ơn trieule9786 , Noname
#3
À hay lắm, mình cám ơn TRUNGHIEU nhiều, nhưng nói thêm ở đây tý:
_ Line ngang: mình cứ vẽ ở phần report footer là OK (nó se co giãn theo số record có trên subreport)
_Line chéo: line này là hơi khó cho chúng ta. Chúng ta phải tìm cho rõ cái thông số width, hight, và top của nó( chưa bít tìm sao ??)
Chữ ký của trieule9786 Xin chào, mình là trieule9786, Tham gia http://thuthuataccess.com/forum từ ngày 14-03 -14.
Reply
Những người đã cảm ơn
#4
Có ai có ý kiến nào khác không nhỉ ? potay.com r !
Chữ ký của trieule9786 Xin chào, mình là trieule9786, Tham gia http://thuthuataccess.com/forum từ ngày 14-03 -14.
Reply
Những người đã cảm ơn
#5
Bạn Up chương trình lên đi. Lười ngồi tạo dữ liệu nháp quá!
Chữ ký của nhannt4 Xin chào, mình là nhannt4, Tham gia http://thuthuataccess.com/forum từ ngày 22-07 -12.
Reply
Những người đã cảm ơn
#6
Chào bạn trieule9786 !

Thấy chủ đề này cũng hay, mình thử tìm kiếm thấy câu hỏi tương tự trên một số diễn đàn nhưng cho đến nay vẫn chưa có câu trả lời thỏa đáng

Ý tưởng là:

Để vẽ được đoạn thẳng ta cần xác định tọa độ điểm khởi đầu và tọa độ điểm kết thúc

-Điểm khởi đầu (y1) của đường chéo sẽ = Chiều cao H (của trang in) - H (của ReportHeader) - H (PageHeader) - H(Detail) * (Số Record trang cuối)

Cái khó là làm sao đếm số dòng (record) trên trang cuối cùng để tính ra khoảng cách từ đầu trang đến điểm khởi đầu?

Sau khi tiêu tốn khá nhiều Calories (Thiếu chút nữa là đốt cháy bộ não014) mình cũng tìm ra phương án khả thi :
1-Trước tiên bạn phải chắc chắn trên PageFooter có một text box có control source ="Page " & [Page] & " of " & [Pages]

2-Khai báo một biến nội bộ ở dầu trang code:
Mã:
Option Compare Database
Dim intRecCount As Integer

3-Bấm chọn PageHeader và nhập intRecCount = 0 cho sự kiện On format
Mã:
Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer)
    intRecCount = 0
End Sub

4-Chọn Detail và code cho sự kiện On Print như sau:
Mã:
Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
    intRecCount = intRecCount + 1
End Sub

5-Tại sự kiện On Page của report bạn viết thủ tục như sau:

Mã:
Private Sub Report_Page()
    Dim lngColor As Long
    Dim sngTop As Single, sngLeft As Single
    Dim sngWidth As Single, sngHeight As Single
    
    Me.ScaleMode = 0
    
    If Me.Page = Me.Pages Then
    
        sngLeft = Me.mavt.Width  'Thay mavt bằng tên  cột mà bạn muốn vẽ đường ngang bên dưới
        
        If Me.Pages = 1 Then
            sngTop = (intRecCount) * (Me.Detail.Height) + _
             Me.PageHeaderSection.Height + Me.ReportHeader.Height +  (Me.Detail.Height/2)
        Else
            sngTop = intRecCount * (Me.Detail.Height) + Me.PageHeaderSection.Height + (Me.Detail.Height/2)
        End If
        
        sngWidth = Me.Width
        sngHeight = Me.ScaleHeight - Me.PageFooterSection.Height - Me.ReportFooter.Height
    
        lngColor = RGB(255, 0, 0)
    
        Me.Line (Me.mavt.Left, sngTop)-(sngLeft, sngTop), lngColor
        Me.Line (sngLeft, sngTop)-(sngWidth, sngHeight), lngColor
    
    End If
    
End Sub

-Bạn có thể tham khảo Report.line method tại địa chỉ sau:
http://msdn.microsoft.com/en-us/library/...e.15).aspx

-Tham khảo thuộc tính Report.ScaleMode tại địa chỉ:
http://msdn.microsoft.com/en-us/library/...e.15).aspx

Cuối cùng là ví dụ minh họa:

Download Demo

Hình:
[Hình: 1058634709_504904455_574_574.jpg]

P/s: Nếu có thêm các nhóm (như GroupHeader...) thì bạn phải tùy biến cộng trừ thêm nhé 015

Chúc bạn thành công!
Chữ ký của MatTroiNguQuen Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn paulsteigel , trieule9786 , dinhnhieu , ongke0711 , Minh Tiên , ledangvan
#7
Mình cũng muốn thiết kê như vậy nhưng hơi khó
Chữ ký của ngochuong279 Xin chào, mình là ngochuong279, Tham gia http://thuthuataccess.com/forum từ ngày 11-11 -13.
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
Question [Help] Làm sao để in được trang chẳn hoặc trang lẻ trong report access? nhattiensinh 6 1,069 11 Giờ trước
Bài mới nhất: MatTroiNguQuen
  [Help] thay đổi cách sắp xếp report bằng câu lệnh khi mở Rt tieuho828 1 45 Hôm nay, 12:24 AM
Bài mới nhất: maidinhdan
  [Help] Cho mình hỏi cách tạo report động theo ngày BayVeo 1 71 07-12-16, 09:09 PM
Bài mới nhất: maidinhdan
  Hướng Dẫn Cách sắp xếp report? tieuho828 0 30 03-12-16, 09:05 PM
Bài mới nhất: tieuho828
  [Help] Xin Giúp đỡ Dàn Report theo hàng ngang toi511 2 143 03-11-16, 01:10 PM
Bài mới nhất: toi511

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ơ