-
Hỏi cách lập report
ledangvan > 11-08-15, 10:26 AM
Tôi có một report (In hóa đơn) trong report có các dòng : Tên người mua, Đơn vị mua, địa chỉ .... Các dòng này được đặt cố định để khi in vừa với tờ giấy A4, cỡ chữ 10.
Vấn đề là : Đối với những đơn vị có tên đơn vị vừa phải thì vừa với dòng in, tuy nhiên nhiều đơn vị có cái tên rất dài khi in bị mất chữ (Ô của dòng thì hạn chế, tôi không muốn cho xuống dòng bởi dòng Đơn vị mua và địa chỉ sát nhau - theo mẫu của tờ hóa đơn)
Tôi muốn : Nếu tên đơn vị mua dài vừa phải hoặc ngắn thì cỡ chữ vẫn là 10, còn nếu tên đơn vị dài thì sẽ tự động chuyển cỡ chữ sao cho vừa vặn với ô của dòng đó.
Có thể diễn giải chưa gãy góc, xin các bác, các chú, các anh, các em giúp đỡ. Xin chân thành cảm ơn -
RE: Hỏi cách lập report
tranthanhan1962 > 11-08-15, 11:23 AM
(11-08-15, 10:26 AM)ledangvan Đã viết: Tôi có một report (In hóa đơn) trong report có các dòng : Tên người mua, Đơn vị mua, địa chỉ .... Các dòng này được đặt cố định để khi in vừa với tờ giấy A4, cỡ chữ 10.
Vấn đề là : Đối với những đơn vị có tên đơn vị vừa phải thì vừa với dòng in, tuy nhiên nhiều đơn vị có cái tên rất dài khi in bị mất chữ (Ô của dòng thì hạn chế, tôi không muốn cho xuống dòng bởi dòng Đơn vị mua và địa chỉ sát nhau - theo mẫu của tờ hóa đơn)
Tôi muốn : Nếu tên đơn vị mua dài vừa phải hoặc ngắn thì cỡ chữ vẫn là 10, còn nếu tên đơn vị dài thì sẽ tự động chuyển cỡ chữ sao cho vừa vặn với ô của dòng đó.
Có thể diễn giải chưa gãy góc, xin các bác, các chú, các anh, các em giúp đỡ. Xin chân thành cảm ơn
Mình đã có bài viết về vấn đề này bạn có thể tham khảo ở đây.
Đa dạng hóa trong vẽ line ô của báo cáo -
RE: Hỏi cách lập report
ledangvan > 05-10-15, 11:03 AM
Bác tranthanhan1962 cho em hỏi thêm với : Cái demo của bác dùng thì OK nhưng với điều kiện nó có nhiều dòng và phải xuống dòng, em thử chỉ cho 1 dòng thì cái được cái không.
Tại vì dòng trên tờ hoá đơn nó hạn chế nên em muốn nó chỉ giới hạn trong ô va trong 1 dòng thôi (không được xuống dòng) vì nếu xuống dòng nó chèn các dòng khác nhảy không đúng vị trí cần in.
Ví dụ :
Tên đơn vị : .....................................................................................
Địa chi : ........................................................................................
Mã số thuế : ...............................................................................
Khi áp dụng theo demo của bác nó bị đẩy dòng
Tên đơn vị : .....................................................................................
Địa chi : ........................................................................................
Mã số thuế : ...............................................................................[url=http://thuthuataccess.com/forum/user-15953.html][/url] -
RE: Hỏi cách lập report
ongke0711 > 05-10-15, 12:31 PM
Lúc trước tôi cũng có làm cái vụ này và tìm trên thấy trên mạng cái code này, nay share với bác.
- Copy code vào sự kiện On Print của Detail Report.
- Textbox nào cần tự động resize font để fit với textbox thì đặt tên với ký tự "v" ở đầu. Ví dụ: vTenCty. Muốn ký tự nào cũng được, nếu đổi thì sửa chút trong đoạn code.
Mã PHP:Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
Dim ctl As Control, strText As Variant, strName As String
Me.ScaleMode = 1
For Each ctl In Me.Detail.Controls
If ctl.ControlType = acTextBox And ctl.Name Like "v*" Then
strName = ctl.Name
If Nz(ctl.Tag, "") = "" Then
ctl.Tag = ctl.FontSize
End If
ctl.FontSize = ctl.Tag
Me.FontSize = ctl.FontSize
strText = ctl.Value
Do Until TextWidth(strText) < ctl.Width '- (ctl.Width * 0.26)
ctl.FontSize = ctl.FontSize - 1
Me.FontSize = ctl.FontSize
Loop
Do Until TextHeight(strText) < ctl.Height - (ctl.Height * 0.26)
ctl.FontSize = ctl.FontSize - 1
Me.FontSize = ctl.FontSize
Loop
End If
Next ctl
End Sub -
RE: Hỏi cách lập report
ledangvan > 05-10-15, 12:51 PM
(05-10-15, 12:31 PM)ongke0711 Đã viết: Lúc trước tôi cũng có làm cái vụ này và tìm trên thấy trên mạng cái code này, nay share với bác.
- Copy code vào sự kiện On Print của Detail Report.
- Textbox nào cần tự động resize font để fit với textbox thì đặt tên với ký tự "v" ở đầu. Ví dụ: vTenCty. Muốn ký tự nào cũng được, nếu đổi thì sửa chút trong đoạn code.
Mã PHP:Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
Dim ctl As Control, strText As Variant, strName As String
'This routine uses the TextWidth methods to determine the maximum size
'of font possible to ensure a text string is printed in full in the
'report's current font without loosing any characters.
Me.ScaleMode = 1 ' set all measurments to twips
For Each ctl In Me.Detail.Controls
If ctl.ControlType = acTextBox And ctl.Name Like "v*" Then
strName = ctl.Name
If Nz(ctl.Tag, "") = "" Then
ctl.Tag = ctl.FontSize
End If
' set the control's fontsize to a suitable large size to begin with
ctl.FontSize = ctl.Tag
' make sure the report font size is equal to the control's fontsize.
Me.FontSize = ctl.FontSize
' grab the text from the control
strText = ctl.Value
' evaluate the Loop until the text fits the Width of the box less 24%. Do this
' by reducing the font size incrementally and re-testing the Loop's criteria.
Do Until TextWidth(strText) < ctl.Width '- (ctl.Width * 0.26)
ctl.FontSize = ctl.FontSize - 1
' reset the report's font size so the TextWidth function will
' continue to track the reducing font size correctly.
Me.FontSize = ctl.FontSize
Loop
' now evaluate for the height of the text to make sure it fits vertically
Do Until TextHeight(strText) < ctl.Height - (ctl.Height * 0.26)
ctl.FontSize = ctl.FontSize - 1
' reset the report's font size so the TextHeight function will
' continue to track the reducing font size correctly.
Me.FontSize = ctl.FontSize
Loop
End If
Next ctl
End Sub
Copy code vào nó báo đỏ dòng này bạn à :
continue to track the reducing font size correctly.
Nếu bỏ dòng này khi chạy nó báo lỗi dòng này :
Do Until TextWidth(strText) < ctl.Width '- (ctl.Width * 0.26)
Xem giúp tôi với, xin cảm ơn -
RE: Hỏi cách lập report
ongke0711 > 05-10-15, 01:04 PM
Bác Copy lại đoạn code ở trên nhé. Chắc lúc paste có lỗi cú pháp gì đó. -
RE: Hỏi cách lập report
ledangvan > 05-10-15, 02:40 PM
-
RE: Hỏi cách lập report
ongke0711 > 05-10-15, 03:09 PM
Cái textbox tên đơn vị của bác (strText) không để Null được nha bác, phải có control source sẵn, chứ khi load và set control source cho nó thì sẽ báo lỗi "invalid..." . -
RE: Hỏi cách lập report
tranthanhan1962 > 05-10-15, 03:49 PM
Mình hiểu rồi bạn muốn thiết kế report in hóa đơn chứ gì. Thông thường repord này có 2 phần. Phần ghi số hóa đơn và tên đơn vị dạng columnar. Và phần ghi hàng hóa dạng tabular. Đây là kinh nghiệm của mình. Khi thiết kế bạn kiểm tra các ô quan trọng tên đơn vị, địa chỉ, tên hàng hóa xem ô nó chứa được bao nhiêu chữ m, Khi thiết đặt các field bạn xác định field size đúng số lượng ký tự nó hiển thị được. Điều này nhằm khống chế việc đặt tên hoặc ghi địa chỉ tùy tiện.
Riêng ô bằng chữ thì bạn cho 2 dòng là xong. -
RE: Hỏi cách lập report
tanbacmy > 05-10-15, 03:51 PM
thank you