Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hỏi] Trộn văn bản Word từ dữ liệu trong table Access
#1
Em chào các bác, em có vấn đề muốn hỏi như thế này: trong bản Word cần điền các thông tin như TenKH, DiaChi, NoiCongTac, SoTienVay, ThoiHanVay, TongThuNhap. Em cũng đã tạo Table bên access với các trường như vậy, giờ cho em hỏi là tương ứng với 1 dòng trong table sẽ ra 1 bản word có sẵn format chỉ điền thêm thông tin từ access vào thì làm cách nào ạ. File của em đây
Chữ ký của vuthaiha90 vuthaiha90,gia nhập Thủ Thuật Access từ 26-02 -16.
Reply
Những người đã cảm ơn
#2
Mở Word lên rồi vào MaiMerge mà làm
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#3
Em còn vài cái đang dùng trên chương trình này, nếu tiện làm được cùng luôn thì hay, chứ em biết mailmerge ạ
Chữ ký của vuthaiha90 vuthaiha90,gia nhập Thủ Thuật Access từ 26-02 -16.
Reply
Những người đã cảm ơn
#4
(12-04-19, 12:03 PM)vuthaiha90 Đã viết: Em chào các bác, em có vấn đề muốn hỏi như thế này: trong bản Word cần điền các thông tin như TenKH, DiaChi, NoiCongTac, SoTienVay, ThoiHanVay, TongThuNhap. Em cũng đã tạo Table bên access với các trường như vậy, giờ cho em hỏi là tương ứng với 1 dòng trong table sẽ ra 1 bản word có sẵn format chỉ điền thêm thông tin từ access vào thì làm cách nào ạ. File của em đây

Vụ này cũng đơn giản là dùng vòng lặp thôi bạn.
- Việc xuất ra Word thì tôi nghĩ bạn đã biết rồi, không bàn tới nữa.
- Đối với table danh sách khách hàng cần xuất, bạn thêm một trường dạng yes/no đặt tên [Print]. Đây là thủ thuật để bạn chọn khách hàng nào cần in hợp đồng (Word) thì tick chọn checkbox trên Form.
- Dùng vòng lặp duyệt qua bảng danh sách KH này và chỉ lấy maKH nào có chọn Print = True thôi.
- Xuất Word theo từng record duyệt qua ở trên và lưu với tên là mã khách hàng + ngày giờ để để phân biệt file word nào là của khách hàng nào.
- Về code: demo

Mã PHP:
Set rst db.OpenRecordset ("SELECT * FROM tblKhachHang WHERE [Print]=-1"dbOpenSnapShot)

If 
rst.BOF And Rst.EOF Then Exit Sub
   
   rst
.MoveFirst
   Do 
While Not rst.EOF
           Set doc 
appWord.Documents.Open(FilePath)
           With doc
               
.FormFields("fldHoTen").Result rst!HoTen
               
.FormFields("fldDiaChi").Result rst!DiaChi
               
...
                .SaveAs FileName:="KhachHang_" rst!MaKH "_" Format(Date"ddmmyyyy")
            End With
   rst
.MoveNext
   Loop 
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 vuthaiha90
#5
(12-04-19, 11:22 PM)ongke0711 Đã viết:
(12-04-19, 12:03 PM)vuthaiha90 Đã viết: Em chào các bác, em có vấn đề muốn hỏi như thế này: trong bản Word cần điền các thông tin như TenKH, DiaChi, NoiCongTac, SoTienVay, ThoiHanVay, TongThuNhap. Em cũng đã tạo Table bên access với các trường như vậy, giờ cho em hỏi là tương ứng với 1 dòng trong table sẽ ra 1 bản word có sẵn format chỉ điền thêm thông tin từ access vào thì làm cách nào ạ. File của em đây

Vụ này cũng đơn giản là dùng vòng lặp thôi bạn.
- Việc xuất ra Word thì tôi nghĩ bạn đã biết rồi, không bàn tới nữa.
- Đối với table danh sách khách hàng cần xuất, bạn thêm một trường dạng yes/no đặt tên [Print]. Đây là thủ thuật để bạn chọn khách hàng nào cần in hợp đồng (Word) thì tick chọn checkbox trên Form.
- Dùng vòng lặp duyệt qua bảng danh sách KH này và chỉ lấy maKH nào có chọn Print = True thôi.
- Xuất Word theo từng record duyệt qua ở trên và lưu với tên là mã khách hàng + ngày giờ để để phân biệt file word nào là của khách hàng nào.
- Về code: demo

Mã PHP:
Set rst db.OpenRecordset ("SELECT * FROM tblKhachHang WHERE [Print]=-1"dbOpenSnapShot)

If 
rst.BOF And Rst.EOF Then Exit Sub
   
   rst
.MoveFirst
   Do 
While Not rst.EOF
           Set doc 
appWord.Documents.Open(FilePath)
           With doc
               
.FormFields("fldHoTen").Result rst!HoTen
               
.FormFields("fldDiaChi").Result rst!DiaChi
               
...
                .SaveAs FileName:="KhachHang_" rst!MaKH "_" Format(Date"ddmmyyyy")
            End With
   rst
.MoveNext
   Loop 

Em làm theo và đã được ạ, em cảm ơn bác nhiều
Chữ ký của vuthaiha90 vuthaiha90,gia nhập Thủ Thuật Access từ 26-02 -16.
Reply
Những người đã cảm ơn
#6
Tham khảo thêm cái này để đỡ viết code ..dài. Nếu có vài chục trường chắc oải quá. Nên dùng Mail Merge sẽ nhẹ nhàng hơn. Chỉ cần một dòng lệnh là Ok
Mã PHP:
Sub MaiMer()
     ....
     oDoc.OpenDataSource Name:=DatabaseName_
           SQLStatement
:="SELECT * FROM [MyTable]"
     ....
End Sub 

Lưu ý cái DatabaneName phải là đường dẫn full
MyTable là tên table cần lấy dữ liệu
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn ongke0711 , vuthaiha90
#7
Đúng là dùng MailMerge của Word gọn gàng hơn nhiều. 
Nếu như thông tin trong file Word chi thuần tuý là các trường trong 1 table hoặc query thì dùng kiểu mailmerge này là hiệu quả nhất.
Nếu file Word cần có biểu diễn thông tin dạng table, lấy thông từ các subquery nữa thì phải dùng kiểu gán từng field và code để fill table trong word.
Vd: file hợp đồng nhân viên: bao gồm các thông tin chung và table liệt kê chi tiết các khoản phụ cấp/trợ cấp được hưởng.
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 Xuân Thanh , vuthaiha90
#8
(13-04-19, 10:29 AM)Xuân Thanh Đã viết:

(13-04-19, 01:28 PM)ongke0711 Đã viết:

Em cảm ơn 2 bác đã hướng dẫn em. Mà cho em hỏi thêm 1 điều nữa, hôm qua ít khách hàng thì mỗi ông 1 file word, hôm nay mấy chục khách hàng cần in Tờ trình, nó ra mấy chục file, thấy hơi bất tiện khi in, em giờ muốn đổi lại là mỗi ngày ra 1 file word thôi, trong đó mỗi trang là 1 ông khách (tương ứng là 1 dòng trong table access), vì mình điền thông tin chuẩn và add đúng thông tin vào đúng chỗ thông qua code rồi thì ra 1 file word chỉ việc bấm in là xong, thì cần sửa lại code trên thế nào ạ. Em xin cảm ơn các bác ạ
Chữ ký của vuthaiha90 vuthaiha90,gia nhập Thủ Thuật Access từ 26-02 -16.
Reply
Những người đã cảm ơn
#9
Vậy bạn dùng mail merge thì nó không chia thành từng file riêng lẻ.
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
#10
(13-04-19, 08:27 PM)ongke0711 Đã viết: Vậy bạn dùng mail merge thì nó không chia thành từng file riêng lẻ.

Có ạ, chỉ là em hỏi có thể làm được như kiểu vậy không ạ. Tiện khi in ấn, còn đúng là như xưa vẫn bật từng file và in
Chữ ký của vuthaiha90 vuthaiha90,gia nhập Thủ Thuật Access từ 26-02 -16.
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
  [Hỏi] Cách tăng tốc độ Copy Paste Excel sang Access vuthaiha90 3 86 3 Giờ trước
Bài mới nhất: duynamvnn1208
  Hướng Dẫn Demo tổng hợp xuất Table, Query sang Excel có điều kiện ở vị trí nào cũng được maidinhdan 20 8,212 15-04-19, 03:48 PM
Bài mới nhất: Xuân Thanh
  Kết nối Access với Database Oracle trong mạng LAN macd 3 182 12-04-19, 12:59 PM
Bài mới nhất: Xuân Thanh
  [Hỏi] Import nhiều file Excel vào Table Access vuthaiha90 33 4,360 16-01-19, 11:45 PM
Bài mới nhất: khuuquytrung
  Demo Import/Export Excel + Hàm Liệt tên ALL Access maidinhdan 96 18,440 22-12-18, 03:56 PM
Bài mới nhất: maidinhdan

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ơ| PMA Nha Trang| Gỗ Acrylic Không Đường Line| Phần mềm quản lý bán hàng, công nợ- tồn kho- nhà phân phối