Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Hỏi cách lập report
#1
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
Chữ ký của ledangvan Xin chào, mình là ledangvan, Tham gia http://thuthuataccess.com/forum từ ngày 22-08 -11.
ღღღღღTài sản của ledangvan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#2
(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
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn maidinhdan , ledangvan
#3
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]
Chữ ký của ledangvan Xin chào, mình là ledangvan, Tham gia http://thuthuataccess.com/forum từ ngày 22-08 -11.
ღღღღღTài sản của ledangvan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#4
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 IntegerPrintCount As Integer)
 
   Dim ctl As ControlstrText As VariantstrName 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 
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
#5
(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 IntegerPrintCount As Integer)
Dim ctl As ControlstrText As VariantstrName 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 ' 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
Chữ ký của ledangvan Xin chào, mình là ledangvan, Tham gia http://thuthuataccess.com/forum từ ngày 22-08 -11.
ღღღღღTài sản của ledangvan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#6
Bác Copy lại đoạn code ở trên nhé. Chắc lúc paste có lỗi cú pháp gì đó.
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 ledangvan
#7
(05-10-15, 01:04 PM)ongke0711 Đã viết: Bác Copy lại đoạn code ở trên nhé. Chắc lúc paste có lỗi cú pháp gì đó.

Chạy vẫn bị báo lỗi dòng này :

           Do Until TextWidth(strText) < ctl.Width - (ctl.Width * 0.26)

Giá trị strText = Null

ongke0711 xem giúp với 021
Chữ ký của ledangvan Xin chào, mình là ledangvan, Tham gia http://thuthuataccess.com/forum từ ngày 22-08 -11.
ღღღღღTài sản của ledangvan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#8
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..." .
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
#9
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.
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn ledangvan
#10
thank you
Chữ ký của tanbacmy tanbacmy,gia nhập Thủ Thuật Access từ 04-10 -15.
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
  [Help] Xin Giúp đỡ Dàn Report theo hàng ngang toi511 2 136 03-11-16, 01:10 PM
Bài mới nhất: toi511
  Hướng Dẫn Cú pháp mở Report có nhiều điều kiện GaDauBac 7 246 22-10-16, 01:08 AM
Bài mới nhất: maidinhdan
  Hướng Dẫn Tạo Report theo Combobox trong Form thangbomdethuong2000 7 283 20-10-16, 08:41 PM
Bài mới nhất: thangbomdethuong2000
  Giúp muốn thêm dòng vào report trungminh 3 109 18-10-16, 12:15 AM
Bài mới nhất: ongke0711
  Hướng Dẫn Không làm được hàm Dsum trong Report toi511 5 184 15-10-16, 08:20 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ơ