nhannt4 > 21-03-14, 04:13 PM
danhxetnghiem > 21-03-14, 04:23 PM
(20-03-14, 08:18 PM)nhannt4 Đã viết: Gợi ý:
- Thường thì bạn query để xuất ra Report đúng không? Thế thì bạn sử dụng câu lệnh trong VBA dạng "SELECT ... INTO <table> WHERE... ORDER BY..." để tạo ra một table từ dữ liệu của Query (tất nhiên là được sắp xếp giống hết Query.
- Dùng Code VBA để đọc từ dòng của table và xuất ra Word, xuất ra theo Field hoặc theo dòng của table đều được (tuy có chậm (vì tương tác với chương trình ngoài) nhưng rất đẹp (vì định dạng Word mà!)).
Đây là file Demo của mình.
P/S: Do mình sử dụng MS Word 2010 nên nếu bạn sử dụng MS Word 2003 xuất ra sẽ bị lỗi. Cách khắc phục là vào cửa sổ VBA -> chọn Tools -> References... -> Rồi đánh dấu vào Microsoft Word x (với x là phiên bản MS Word máy bạn đang sử dụng).
Chúc thành công.
nhannt4 > 21-03-14, 05:53 PM
hugox03 > 22-03-14, 12:28 AM
nhannt4 > 22-03-14, 08:17 AM
hugox03 > 24-03-14, 12:27 PM
nhannt4 > 24-03-14, 02:45 PM
(24-03-14, 12:27 PM)hugox03 Đã viết: nhannt4 cho mình hỏi table tblInhoadon này làm nhu thế nào vậy ?
stSQl = "SELECT tblXuatHang.TenKH, tblHangHoa.MaHH, tblHangHoa.TenHH, tblHangHoa.Maloaihang, tblXuatHangChiTiet.Soluong, tblXuatHangChiTiet.Donvi, tblXuatHangChiTiet.DonGia, [Soluong]*[Dongia] AS Thanhtien Into tblInhoadon " & _
"FROM tblXuatHang INNER JOIN (tblHangHoa INNER JOIN tblXuatHangChiTiet ON tblHangHoa.MaHH = tblXuatHangChiTiet.MaHH) ON tblXuatHang.SoHD = tblXuatHangChiTiet.SoHD WHERE tblXuatHang.SoHD = '" & SoHD.Value & "';"
DoCmd.SetWarnings False
DoCmd.RunSQL stSQl
DoCmd.SetWarnings True
hugox03 > 25-03-14, 12:34 AM
nhannt4 > 25-03-14, 09:09 AM
hugox03 > 26-03-14, 01:25 AM
i = 2
Tong = 0
Do While Not rst.EOF
doc.ActiveDocument.Tables(2).Cell(i, 1).Range.text = rst.Fields![MaHH].Value
doc.ActiveDocument.Tables(2).Cell(i, 2).Range.text = rst.Fields![TenHH].Value
doc.ActiveDocument.Tables(2).Cell(i, 3).Range.text = rst.Fields![Maloaihang].Value
doc.ActiveDocument.Tables(2).Cell(i, 4).Range.text = rst.Fields![SoLuong].Value
doc.ActiveDocument.Tables(2).Cell(i, 5).Range.text = rst.Fields![Donvi].Value
doc.ActiveDocument.Tables(2).Cell(i, 6).Range.text = Format(rst.Fields![DonGia].Value, "##,##0")
doc.ActiveDocument.Tables(2).Cell(i, 7).Range.text = Format(rst.Fields![ThanhTien].Value, "##,##0")
Tong = Tong + rst.Fields![ThanhTien].Value
i = i + 1
rst.MoveNext
If Not rst.EOF Then doc.ActiveDocument.Tables(2).Rows.Add
Loop
doc.ActiveDocument.Tables(2).Rows.Add
doc.ActiveDocument.Tables(2).Cell(Row:=i, Column:=1).Merge MergeTo:=doc.ActiveDocument.Tables(2).Cell(Row:=i, Column:=6)
doc.ActiveDocument.Tables(2).Cell(Row:=i, Column:=1).Range.Font.Size = 13
doc.ActiveDocument.Tables(2).Cell(Row:=i, Column:=1).Range.Font.Italic = False
doc.ActiveDocument.Tables(2).Cell(Row:=i, Column:=1).Range.Font.Bold = True
doc.ActiveDocument.Tables(2).Cell(Row:=i, Column:=1).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
doc.ActiveDocument.Tables(2).Cell(Row:=i, Column:=1).Range.text = Form_FormTam.lbTongcong.Caption
doc.ActiveDocument.Tables(2).Cell(Row:=i, Column:=2).Range.Font.Bold = True
doc.ActiveDocument.Tables(2).Cell(Row:=i, Column:=2).Range.text = Format(Tong, "##,##0")