-
Đếm và liệt kê lần lượt từng dòng dữ liệu từ access vào word
vuthaiha90 > 06-01-20, 02:08 AM
Em chào các bác ạ, em có 1 chương trình làm hồ sơ như thế này. Hiện tại em đang dùng FormField ở Word để điền thông tin nhập từ access, vào vị trí mình muốn ở word. Nhưng đến đoạn này hơi bí: Trong hồ sơ, phần trên là thông tin khách hàng và khoản vay thì em add vào được rồi, nó có mỗi 1 dòng dữ liệu trong table rồi, dùng Dlookup là ok, nhưng đến phần kê khai tài sản thế chấp: 1 khách hàng dùng 2 hoặc nhiều hơn tài sản để thế chấp mới đủ cho khoản vay (mỗi 1 tài sản tương ứng với 1 dòng dữ liệu trong "T_QSDD-TSGLTD"), thì nếu dùng Dlookup ra mỗi dòng đầu tiên, mà trong hồ sơ thì phải liệt kê lần lượt từng tài sản ra, tương ứng liệt kê từng dòng dữ liệu ra. Em chưa biết Count kiểu gì và insert dữ liệu ra thế nào. Nếu em lại dùng FormField 2 cho cục tài sản 2, 3 cho 3, 4 cho 4.... thì cũng củ chuối, đâu biết trước khách hàng vác bao cái tài sản mà add trước kiểu vậy. Mong các bác có hướng nào giải quyết vấn đề này không ạ, em cảm ơn các bác trước ạ -
RE: Đếm và liệt kê lần lượt từng dòng dữ liệu từ access vào word
ongke0711 > 06-01-20, 07:52 AM
Dữ liệu nhiều dạng bảng thì bạn dùng Table trong file Word luôn.
Khai báo đối tượng Table trong Word và dùng các thuộc tính giống Excel để điền dữ liệu từ table Access vào Table Word.
Vd: đây là code tôi xuất 1 Table quá trình hoạt động sang Word.
Trong Word, cứ chèn cái Table nào đầu tiên thì sẽ có index =1 và no cứ gán số kế tiếp cho các bảng sau.
Bạn tham khảo các làm.
Mã PHP:'-----------------------------------------------------------------------------------
'XUAT BANG QUÁ TRÌNH HOAT DONG & CU NGU
'Mo table can export qua file Doc'
strSQL = "SELECT tblQuaTrinhHD.MSN, tblQuaTrinhHD.HDTuThang_Nam, tblQuaTrinhHD.HDDenThang_Nam, tblQuaTrinhHD.QuaTrinhHD, tblQuaTrinhHD.CNTuThang_Nam, tblQuaTrinhHD.CNDenThang_Nam, tblQuaTrinhHD.QuaTrinhCuNgu " & _
"FROM tblQuaTrinhHD WHERE tblQuaTrinhHD.MSN=" & sMSN
Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)
With rs
If .RecordCount <> 0 Then
.MoveLast 'De lay chính xác sô dòng
iRecCount = .RecordCount 'Sô dòng
.MoveFirst
iFldCount = .Fields.Count - 1 'So Field trong table cân xuat
tblNoInDoc = 1 'So thu tu cua table trong file Doc'
Set oWordTbl = Doc.Tables(tblNoInDoc)
'Them cot'
With Doc.Tables(tblNoInDoc)
.Select
Do Until .Columns.Count = iFldCount
.Columns.Add
.Columns.AutoFit
Loop
End With
'Dat ten cho dòng tiêu dê
oWordTbl.Cell(1, 1) = "T" & ChrW(7915)
oWordTbl.Cell(1, 2) = ChrW(272) & ChrW(7871) & "n"
oWordTbl.Cell(1, 3) = "Quá trình ho" & ChrW(7841) & "t " & ChrW(273) & ChrW(7897) & "ng"
oWordTbl.Cell(1, 4) = "T" & ChrW(7915)
oWordTbl.Cell(1, 5) = ChrW(272) & ChrW(7871) & "n"
oWordTbl.Cell(1, 6) = "Quá trình c" & ChrW(432) & " ng" & ChrW(7909)
'Build our data rows'
For i = 1 To iRecCount
Doc.Tables(tblNoInDoc).Rows.SetLeftIndent LeftIndent:=10, RulerStyle:=2
Doc.Tables(tblNoInDoc).Rows.Add
oWordTbl.Cell(i + 1, 1) = Nz(rs.Fields(1).Value, "")
oWordTbl.Cell(i + 1, 1).Range.ParagraphFormat.Alignment = 1 '0 la can trai
oWordTbl.Cell(i + 1, 1).Range.Cells.VerticalAlignment = 1
oWordTbl.Cell(i + 1, 2) = Nz(rs.Fields(2).Value, "")
oWordTbl.Cell(i + 1, 2).Range.ParagraphFormat.Alignment = 1
oWordTbl.Cell(i + 1, 2).Range.Cells.VerticalAlignment = 1
oWordTbl.Cell(i + 1, 3) = Nz(rs.Fields(3).Value, "")
oWordTbl.Cell(i + 1, 3).Range.ParagraphFormat.Alignment = 0
oWordTbl.Cell(i + 1, 3).Range.Cells.VerticalAlignment = 1
oWordTbl.Cell(i + 1, 4) = Nz(rs.Fields(4).Value, "")
oWordTbl.Cell(i + 1, 4).Range.ParagraphFormat.Alignment = 1
oWordTbl.Cell(i + 1, 4).Range.Cells.VerticalAlignment = 1
oWordTbl.Cell(i + 1, 5) = Nz(rs.Fields(5).Value, "")
oWordTbl.Cell(i + 1, 5).Range.ParagraphFormat.Alignment = 1
oWordTbl.Cell(i + 1, 5).Range.Cells.VerticalAlignment = 1
oWordTbl.Cell(i + 1, 6) = Nz(rs.Fields(6).Value, "")
oWordTbl.Cell(i + 1, 6).Range.ParagraphFormat.Alignment = 0
oWordTbl.Cell(i + 1, 6).Range.Cells.VerticalAlignment = 1
.MoveNext
Next i
'Format bold 1st row'
With Doc.Tables(tblNoInDoc).Rows(1).Range
.Font.Bold = True
.ParagraphFormat.Alignment = 1
.Cells.VerticalAlignment = 1
.Shading.BackgroundPatternColor = RGB(225, 225, 225) '16
End With
Doc.Tables(tblNoInDoc).Rows(1).Height = 22
'Doc.Tables(tblNoInDoc).Columns.AutoFit
Doc.Tables(tblNoInDoc).Columns(1).Width = 0.7 * 72
Doc.Tables(tblNoInDoc).Columns(2).Width = 0.7 * 72
Doc.Tables(tblNoInDoc).Columns(3).Width = 2 * 72
Doc.Tables(tblNoInDoc).Columns(4).Width = 0.7 * 72
Doc.Tables(tblNoInDoc).Columns(5).Width = 0.7 * 72
Doc.Tables(tblNoInDoc).Columns(6).Width = 2 * 72
End If
End With
rs.Close
Set rs = Nothing
Set oWordTbl = Nothing -
RE: Đếm và liệt kê lần lượt từng dòng dữ liệu từ access vào word
vuthaiha90 > 06-01-20, 09:29 AM
(06-01-20, 07:52 AM)ongke0711 Đã viết: Dữ liệu nhiều dạng bảng thì bạn dùng Table trong file Word luôn.
Vậy là phải kẻ bảng chìm ạ, kẻ xong cho border = none. Có cách nào khác kẻ bảng không ạ, em thử mà nếu dữ liệu ở trong bảng nào đấy nằm giữa trang 1 và trang 2 chả hạn, nó nhảy luôn xuống trang 2, không liền mạch
Khai báo đối tượng Table trong Word và dùng các thuộc tính giống Excel để điền dữ liệu từ table Access vào Table Word.
Vd: đây là code tôi xuất 1 Table quá trình hoạt động sang Word.
Trong Word, cứ chèn cái Table nào đầu tiên thì sẽ có index =1 và no cứ gán số kế tiếp cho các bảng sau.
Bạn tham khảo các làm.
Mã PHP:'-----------------------------------------------------------------------------------
'XUAT BANG QUÁ TRÌNH HOAT DONG & CU NGU
'Mo table can export qua file Doc'
strSQL = "SELECT tblQuaTrinhHD.MSN, tblQuaTrinhHD.HDTuThang_Nam, tblQuaTrinhHD.HDDenThang_Nam, tblQuaTrinhHD.QuaTrinhHD, tblQuaTrinhHD.CNTuThang_Nam, tblQuaTrinhHD.CNDenThang_Nam, tblQuaTrinhHD.QuaTrinhCuNgu " & _
"FROM tblQuaTrinhHD WHERE tblQuaTrinhHD.MSN=" & sMSN
Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)
With rs
If .RecordCount <> 0 Then
.MoveLast 'De lay chính xác sô dòng
iRecCount = .RecordCount 'Sô dòng
.MoveFirst
iFldCount = .Fields.Count - 1 'So Field trong table cân xuat
tblNoInDoc = 1 'So thu tu cua table trong file Doc'
Set oWordTbl = Doc.Tables(tblNoInDoc)
'Them cot'
With Doc.Tables(tblNoInDoc)
.Select
Do Until .Columns.Count = iFldCount
.Columns.Add
.Columns.AutoFit
Loop
End With
'Dat ten cho dòng tiêu dê
oWordTbl.Cell(1, 1) = "T" & ChrW(7915)
oWordTbl.Cell(1, 2) = ChrW(272) & ChrW(7871) & "n"
oWordTbl.Cell(1, 3) = "Quá trình ho" & ChrW(7841) & "t " & ChrW(273) & ChrW(7897) & "ng"
oWordTbl.Cell(1, 4) = "T" & ChrW(7915)
oWordTbl.Cell(1, 5) = ChrW(272) & ChrW(7871) & "n"
oWordTbl.Cell(1, 6) = "Quá trình c" & ChrW(432) & " ng" & ChrW(7909)
'Build our data rows'
For i = 1 To iRecCount
Doc.Tables(tblNoInDoc).Rows.SetLeftIndent LeftIndent:=10, RulerStyle:=2
Doc.Tables(tblNoInDoc).Rows.Add
oWordTbl.Cell(i + 1, 1) = Nz(rs.Fields(1).Value, "")
oWordTbl.Cell(i + 1, 1).Range.ParagraphFormat.Alignment = 1 '0 la can trai
oWordTbl.Cell(i + 1, 1).Range.Cells.VerticalAlignment = 1
oWordTbl.Cell(i + 1, 2) = Nz(rs.Fields(2).Value, "")
oWordTbl.Cell(i + 1, 2).Range.ParagraphFormat.Alignment = 1
oWordTbl.Cell(i + 1, 2).Range.Cells.VerticalAlignment = 1
oWordTbl.Cell(i + 1, 3) = Nz(rs.Fields(3).Value, "")
oWordTbl.Cell(i + 1, 3).Range.ParagraphFormat.Alignment = 0
oWordTbl.Cell(i + 1, 3).Range.Cells.VerticalAlignment = 1
oWordTbl.Cell(i + 1, 4) = Nz(rs.Fields(4).Value, "")
oWordTbl.Cell(i + 1, 4).Range.ParagraphFormat.Alignment = 1
oWordTbl.Cell(i + 1, 4).Range.Cells.VerticalAlignment = 1
oWordTbl.Cell(i + 1, 5) = Nz(rs.Fields(5).Value, "")
oWordTbl.Cell(i + 1, 5).Range.ParagraphFormat.Alignment = 1
oWordTbl.Cell(i + 1, 5).Range.Cells.VerticalAlignment = 1
oWordTbl.Cell(i + 1, 6) = Nz(rs.Fields(6).Value, "")
oWordTbl.Cell(i + 1, 6).Range.ParagraphFormat.Alignment = 0
oWordTbl.Cell(i + 1, 6).Range.Cells.VerticalAlignment = 1
.MoveNext
Next i
'Format bold 1st row'
With Doc.Tables(tblNoInDoc).Rows(1).Range
.Font.Bold = True
.ParagraphFormat.Alignment = 1
.Cells.VerticalAlignment = 1
.Shading.BackgroundPatternColor = RGB(225, 225, 225) '16
End With
Doc.Tables(tblNoInDoc).Rows(1).Height = 22
'Doc.Tables(tblNoInDoc).Columns.AutoFit
Doc.Tables(tblNoInDoc).Columns(1).Width = 0.7 * 72
Doc.Tables(tblNoInDoc).Columns(2).Width = 0.7 * 72
Doc.Tables(tblNoInDoc).Columns(3).Width = 2 * 72
Doc.Tables(tblNoInDoc).Columns(4).Width = 0.7 * 72
Doc.Tables(tblNoInDoc).Columns(5).Width = 0.7 * 72
Doc.Tables(tblNoInDoc).Columns(6).Width = 2 * 72
End If
End With
rs.Close
Set rs = Nothing
Set oWordTbl = Nothing
+Với lại em chỉ cần thêm thông tin vào những chỗ hiện tại đang bôi đen, lấy dữ liệu từ table access vào, chứ còn những chữ cố định như:"Tài sản đảm bảo tiền vay gồm", "Giá trị QSDĐ","DT".... thì nếu khi nào có thêm tài sản mới hiện ra thì làm kiểu gì ạ -
RE: Đếm và liệt kê lần lượt từng dòng dữ liệu từ access vào word
Minh Tiên > 06-01-20, 11:08 AM
Chào vuthaiha90 !
Mình thấy đề bài của bạn đã có trên Diễn đàn rồi đó ! Vụ này mình cũng vận dụng để xuất cái Báo cáo tài chính ra mẫu Word có sẳn (Chỉ điền một số thông tin theo vị trí "làm dấu sẳn".
Bạn tìm thử nhé !
Nếu ko có liên hệ mình qua tmtien.gli@gmail.com !
Thân./. -
RE: Đếm và liệt kê lần lượt từng dòng dữ liệu từ access vào word
tranthanhan1962 > 06-01-20, 06:45 PM
bạn tạo một report có đầy đủ phần có sẳn làm nền (đây là phần cứng designe trên report - Dùng label để xử lý), phần tham số là các field dùng textbox đưa giá trị các field làm controlsource. bạn có thể dùng sub table và subreport xử lý phần kê khai tài sản thiết đặt subreport can grow và can shrink = yes. subreport sẽ tự động co dãn theo nội dung, dù xuống hàng hay qua trang cũng không ảnh hưỡng gì! -
RE: Đếm và liệt kê lần lượt từng dòng dữ liệu từ access vào word
vuthaiha90 > 06-01-20, 06:49 PM
(06-01-20, 06:45 PM)tranthanhan1962 Đã viết: bạn tạo một report có đầy đủ phần có sẳn làm nền (đây là phần cứng designe trên report - Dùng label để xử lý), phần tham số là các field dùng textbox đưa giá trị các field làm controlsource. bạn có thể dùng sub table và subreport xử lý phần kê khai tài sản thiết đặt subreport can grow và can shrink = yes. subreport sẽ tự động co dãn theo nội dung, dù xuống hàng hay qua trang cũng không ảnh hưỡng gì!
Em xin hỏi bác là có tận dụng lại file word có sẵn không ạ, hay lại thiết kế lại report mới có thể làm đúng ý ạ -
RE: Đếm và liệt kê lần lượt từng dòng dữ liệu từ access vào word
tranthanhan1962 > 06-01-20, 11:02 PM
(06-01-20, 06:49 PM)vuthaiha90 Đã viết: Em xin hỏi bác là có tận dụng lại file word có sẵn không ạ, hay lại thiết kế lại report mới có thể làm đúng ý ạ
bạn có thể thiết kế từ a-z trên report hay ctrt + a bản word rồi copy và dán thẳng vào report cũng được, nó sẽ tạo một label nằm trên report và có thể chỉnh sửa thoải máy nếu dữ liệu đơn giản
Thực ra, có thể sử dụng Mail merge để làm nền cho dữ liệu lấy từ excel hay data của access. Nhưng nếu nguồn phức tạp thì rất khó và gần như bất khả thi. Ví dụ dữ liệu của một người có 2 vợ và 5 con (1 bà 2 con và 1 bà 3 con)[tôi nói đây là ly hôn rồi mới có bà khác nha chứ một lượt 2 bà là vi phạm luật hôn nhân gia đình), trong khi dữ liệu của người khác thì chỉ có 1 bà với số con của bà đó, thì xử lý bằng word như thế nào? Như ví dụ trên gặp trường hợp thế chấp bằng nhiều giấy sử dụng đất (chứ không phải chỉ 1) hoặc đất, xe cộ, tài sản khác thì như thế nào nếu sử lý bằng word + access, nếu thiết kế report ngay trong access thì xử lý rất dễ dàng. Cái nào có thì bung ra cái nào không có thì thu lại - cực kỳ đơn giản. Có nhiều người nói làm bằng report access thì không thể gửi qua mail được - sai lầm, đúng là nếu chuyển từ report access sang excel để gửi mail rất cực khổ, nhưng chỉ cần in pdf (sử dụng công cụ mặc định printer pdf trong windows là xong). Từ pdf chúng ta có thể gửi mail hoặc nếu chuyển từ pdf sang excel, word cũng rất dễ dàng chỉ cần cài phần mềm vài cú nhấp chuột là xong, nếu lười thì sử dụng công cụ chuyển đổi trên mạng cũng rất nhiều mà không cần cài đặt
-
RE: Đếm và liệt kê lần lượt từng dòng dữ liệu từ access vào word
xtangttqt > 24-03-20, 04:56 PM
Dữ liệu xuất từ Access ra mẫu Wor d theo fo rm sẵn thậhtthttp://p://t khó. Nếu sử dụng table Word theo lô hàng hoá thì dễ. Nhưng dữ liệu nhiều tài sản trên hợp đồng thế chấp theo từng mục theo quy định của Ngân hàng và cơ quan đăng ký thế chấp khó thực hiện.
Ví dụ: nếu dữ liệu mô tả xuất ra word như thế này thì OK