thunga25 > 01-09-15, 02:29 PM
tranthanhan1962 > 01-09-15, 05:35 PM
(01-09-15, 02:29 PM)thunga25 Đã viết: Chào các bạn, mình đang muốn làm 1 report để so sánh báo giá giữa các nhà cung cấp theo từng mặt hàng, theo dạng crosstab.
Đây là dạng report mình muốn:
http://www.mediafire.com/view/xh241u0k7do7qyc/BC.jpg
Đây là CSDL:
http://www.mediafire.com/download/grdmtj...BAOCAO.mdb
Bạn nào biết thì chỉ mình với, vì mình đang cần gấp, nhưng tìm mãi vẫn chưa biết cách.
paulsteigel > 01-09-15, 05:44 PM
(01-09-15, 02:29 PM)thunga25 Đã viết: ....
Bạn nào biết thì chỉ mình với, vì mình đang cần gấp, nhưng tìm mãi vẫn chưa biết cách.
Private Sub Report_Open(Cancel As Integer)
' Thu tuc de dua so lieu vao bao cao va dieu chinh ten cot
Dim SqlStr As String
Dim rs As Recordset
Dim iCol As Long, i As Long
SqlStr = "Select * from " & Me.RecordSource & ";"
Set rs = CurrentDb.OpenRecordset(SqlStr)
' Cot 1 luon la ten hang, bat dau tu cot 2 se la ma nha cung cap
With Me
For i = 1 To rs.Fields.Count - 1
.Controls("lbl_cr_" & i).Visible = True
.Controls("lbl_cr_" & i).Caption = GetColumnName(Val(rs.Fields(i).Name))
' doi voi textbox thi dat ten vung so lieu luon
' vi ten textbox la so nen phai co them ham chuyen gia tri sang chu
.Controls(CStr(i)).Visible = True
.Controls(CStr(i)).ControlSource = rs.Fields(i).Name
' dinh dang so lieu
.Controls(CStr(i)).Format = "Standard"
.Controls(CStr(i)).DecimalPlaces = 0
Next
' Cac doi tuong khac thi giau di
While i <= 9
.Controls("lbl_cr_" & i).Visible = False
' doi voi textbox thi dat ten vung so lieu luon
.Controls(CStr(i)).Visible = False
i = i + 1
Wend
End With
rs.Close
DoCmd.Maximize
End Sub
ongke0711 > 01-09-15, 08:20 PM
paulsteigel > 01-09-15, 09:14 PM
(01-09-15, 08:20 PM)ongke0711 Đã viết: Bác paulsteigel cho hỏi: công cụ vẽ đường kẻ trong report của bác sẽ có lợi ích gì hơn so với vẽ tay bằng line vậy?Công cụ vẽ lưới nhìn chung là khá tiện lợi với mình vì phải dùng nhiều loại báo cáo phức tạp, nếu căn chỉnh bằng tay sẽ mất nhiều thời gian thay vào đó mình chỉ cần vẽ một vài nhãn, định kích thước ổn thế là nó vẽ ra cho mình theo yêu cầu. Kể cả trong trường hợp dòng co dãn. Cái này thì thích hợp với ai phải vẽ nhiều báo cáo, mình giới thiệu để xem ai có ứng dụng được không mà thôi.
thunga25 > 02-09-15, 02:18 PM
(01-09-15, 05:35 PM)tranthanhan1962 Đã viết:(01-09-15, 02:29 PM)thunga25 Đã viết: Chào các bạn, mình đang muốn làm 1 report để so sánh báo giá giữa các nhà cung cấp theo từng mặt hàng, theo dạng crosstab.
Đây là dạng report mình muốn:
http://www.mediafire.com/view/xh241u0k7do7qyc/BC.jpg
Đây là CSDL:
http://www.mediafire.com/download/grdmtj...BAOCAO.mdb
Bạn nào biết thì chỉ mình với, vì mình đang cần gấp, nhưng tìm mãi vẫn chưa biết cách.
Của bạn đây
thunga25 > 02-09-15, 02:20 PM
(01-09-15, 05:44 PM)paulsteigel Đã viết: Thế là cụ tranthanhnhan đã giả nhời rồi. em cắm cúi post mà không biết.
Thôi thì bổ sung với một bài nữa vậy ạ
...............
Đường link bài đây nhé
http://www.sfdp.net/thuthuataccess/minhh...BAOCAO.rar
tranthanhan1962 > 02-09-15, 11:36 PM
(02-09-15, 02:18 PM)thunga25 Đã viết: em đã xem bài của anh, nhưng hình như là nó không thay đổi khi nhà cc thay đổi thì phải, ví như có lúc có 1 nhà cung cấp, có khi có 2 hoặc 4 thì bài này không được phải không anh?
thunga25 > 05-09-15, 02:24 PM
(01-09-15, 05:44 PM)paulsteigel Đã viết: ...............
Đường link bài đây nhé
http://www.sfdp.net/thuthuataccess/minhh...BAOCAO.rar
paulsteigel > 05-09-15, 05:06 PM
Private Sub Report_Open(Cancel As Integer)
' Thu tuc de dua so lieu vao bao cao va dieu chinh ten cot
Dim SqlStr As String
Dim rs As Recordset
Dim iCol As Long, i As Long, j As Long
SqlStr = "Select * from " & Me.RecordSource & ";"
Set rs = CurrentDb.OpenRecordset(SqlStr)
' Cot 1 luon la ten hang, bat dau tu cot 2 se la ma nha cung cap
' bien xac dinh cot de bat dau gan gia tri
j = 1
With Me
For i = 0 To rs.Fields.Count - 1
If Val(rs.Fields(i).Name) > 0 Then
.Controls("lbl_cr_" & j).Visible = True
.Controls("lbl_cr_" & j).Caption = GetColumnName(Val(rs.Fields(i).Name))
' doi voi textbox thi dat ten vung so lieu luon
' vi ten textbox la so nen phai co them ham chuyen gia tri sang chu
.Controls(CStr(j)).Visible = True
.Controls(CStr(j)).ControlSource = rs.Fields(i).Name
' dinh dang so lieu
.Controls(CStr(j)).Format = "Standard"
.Controls(CStr(j)).DecimalPlaces = 0
j = j + 1
End If
Next
' Cac doi tuong khac thi giau di
While j <= 9
.Controls("lbl_cr_" & j).Visible = False
' doi voi textbox thi dat ten vung so lieu luon
.Controls(CStr(j)).Visible = False
j = j + 1
Wend
End With
rs.Close
DoCmd.Maximize
End Sub