Mình nhờ các cao thủ giúp vấn đề sau: Mình có t_ChamCong dùng để chấm công. Sau đó dùng q_TinhCong để tổng hợp công. Mình muốn gán kết quả từ query vào t_MonthlyPayment (hoặc append) thỏa điều kiện NVID=NVID & tên field của query (10,20,40,110...) = giá trị của YTLNo. Mình chỉ là 1 amateur, các bạn hướng dẫn cho mình chi tiết nhe. Đa tạ.
Mình có vấn đề này nhờ các bạn giúp nhé :
Mình muốn thiết kế một Forms "Tên gì cũng được" mà khi Reports được mở lên thì Forms được hiện lên. Trên forms này gồm có các thông tin sau :
- 1 Text box ghi nhận có tổng số trang.
- 1 nút bấm : Về trang đầu
- 1 nút bấm : Về trang cuối
- 1 nút bấm : Trang trước
- 1 nút bấm : Trang sau
- 1 nút bấm : Xuất Excel
- 1 nút bấm : In (Máy in)
- 1 nút bấm : Kết thúc
...
Nhờ các bạn hướng dẫn, cám ơn nhiều
Hỏi: tbl (ID(auto), code(text), numChar(int))
1. Giờ muốn update dữ liệu vào field [numChar] từ 1->hết bảng ghi
2. Insert thêm một field [numGroup]
3. Update dữ liệu vào field [numGroup] với điều kiện sau
3.1 Lấy dữ liệu field [numChar] làm gốc cứ cách 10 số thì nhóm thành 1 Group, như thế số thứ tự từ 1-10 [numChar]-> [numGroup] (1)
3.2 Nếu (max[numChar]/10) có số dư từ 0->5 thì đánh số những ID này theo Group cuối cùng , nghĩa là nếu có [numChar] 1->25 thì 10 thuộc Group 1, 15 thuộc Group2
3.3 Nếu số dư trên từ 6-10 thì lấy (số dư +10)/2 . Sau đó đánh số bình thường (lúc này 2 Group cuối không phải là 10) với điều kiện group n có số ID < group n-1 . Nghĩa rằng nhóm cuối cùng bảo giờ cũng có số ID nhỏ nhất"
----------
Mình ngồi nghĩ hoài mà không biết viết thế nào với yêu cầu này
VBA nhé
Thông thường khi sử dụng chức năng Mail Merge (Trộn thư) trong MS Word để tạo ra các thư mời hay phiếu báo điểm... mặc định của chương trình là ứng với mỗi một Record dữ liệu nhất định sẽ tạo ra một trang tập tin Main chính trên một trang giấy (A4) tương ứng.
Bước 1: Tạo tập tin Main chính trong WORD.
Bước 2: Tạo tập tin nguồn dữ liệu trên Excel với các cột có tên tương ứng (chú ý là tên cột không nên viết dấu tiếng việt, và phải bắt đầu dữ liệu ngay tại Cell A1).
* Chú ý: tập tin dữ liệu này bạn có thể tạo bằng WORD, tuy nhiên nếu thể hiện trong Excel bạn sẽ có lợi hơn nếu bảng dữ liệu đó có hổ trợ nhiều phép tính và hàm phức tạp.
Bước 3: Trên tập tin Main chính (Word) bạn phủ khối Copy toàn bộ nội dung tập tin Main chính rồi vào menu Tools > Mail Merge.
1. Ở mục 1 Main Document nhấp nút Create > chọn Mailing Labels...
2. Trong hộp thoại kế tiếp nhấp nút Active Windows.
3. Ở mục 2 Data Source nhấp nút Get Data > Open Data Source...> chỉ đường dẫn tới tập tin nguồn cơ sở dữ liệu Excel đã tạo.
Chọn nguồn dữ liệu để trộn thư.
4. Nhấp Ok trong hộp thoại Mirosoft Excel Entire Spreadsheet hiện ra.
Chọn toàn nội dung bảng tinh: Entire Spreadsheet.
5. Nhấp nút Set Up Main Document trong hộp thoại kế.
6. Trong hộp thoại Label Options bạn nhấp nút New Label để tạo một nhãn mới.
Chọn New-Label để tạo nhãn mới.
- Đặt tên cho nhãn mới vào dòng Label Name.
- Chọn khổ giấy thể hiện ở dòng Page Size (ví dụ A4 khổ đứng 21 x 29.7 cm).
- Tiến hành thiết lập tuỳ biến các thông số kích thước thể hiện: Number across (số cột của trang, ví dụ 1), Number Down (số bản ghi thể hiện trên một trang, ví dụ 3).... ở các thông số khác khi vừa thiết lập bạn vừa xem sự thể hiện của khổ giấy ở khung Preview phía trên đến khi cảm thấy ưng ý nhất (các thông số tôi thiết lập trong ví dụ này là do tuỳ biến cá nhân chỉ có mức độ gợi ý tham khảo).
Thiết lập xong nhấp OK 2 lần để thoát khỏi hộp thoại Label Options.
7. Trong hộp thoại Create Label kế tiếp bạn dán nội dung của tập tin Main chính đã Copy ở đầu bước 3 vào khung Sample label, rồi nhấp nút Insert Merge Field phía trên để lần lượt chèn vào các trường dữ liệu tương ứng từ tập tin database vào tập tin Main chính.
Thao tác tương tự như chèn các trường Field bình thường lúc trộn thư, nếu tập tin Main chính dùng Font Vni thì lúc này sẽ không hiển thị tốt Font tiếng Việt.
8. Sau khi chèn xong các trường Filed tương ứng bạn nhấp OK, lúc này trong bảng cảnh báo lỗi của WORD bạn tiếp tục nhấp OK
9. Trở về hộp thoại chính của chức năng Mail Merge bạn nhấp nút Close.
Bước 4: Lúc này trên giao diện tập tin Main chính nội dung sẽ được trình bày thành 3 bản ghi như đã thiết lập ở bước 3 cùng với các trường Field đã được chèn tương ứng. Tuy nhiên lúc này sự trình bày của văn bản sẽ chưa được tốt và bạn phải tiến hành định dạng thủ công lại từng bản ghi một.zensoft website
Chú ý phải định dạng sao cho nội dung 3 bản ghi là như nhau (mổi bản ghi sẽ ứng với 1 Record dữ liệu trong tập tin Database), bạn không được sao chép nguyên si nội dung giữa các bản ghi vì làm như thế sau khi trộn WORD sẽ hiểu là 3 bản ghi trên một trang A4 là của cùng một mẩu tin Record.
Bước 5: Sau khi định dạng xong bạn nhấp nút Merge để bắt đầu trộn thư. Kết quả thể hiện sẽ hết sức ưng ý (xem hình 9).
Sau cùng bạn hãy in ra máy in và dùng mắt cắt hay rọc ra thành từng bản ghi riêng biệt rồi đưa vào sử dụng. Chúc thành công!
Tips này hướng dẫn chúng ta cập nhật lại link cho table khi chuyển file data có password sang một vị trí khác, hoặc chúng ta có nhiều file data giống nhau password và cấu trúc, chỉ khác nhau nội dung.
Chúng ta không cần phải khai báo lại password mà chỉ nhập password ở lần link lần đầu tiên (khi thiết kế) (relink table from Database Access with password)
Writen by: Noname
Writen Site: http://thuthuataccess.com/forum
Please do not removed my info if using or share this code
Đoạn code này cho phép ta gọi hàm getfile để tìm tới file data
Mã:
Function getFile(Tit As String, formatName As String, formatType As String)
Dim dlgOpen As FileDialog
Set dlgOpen = Application.FileDialog(msoFileDialogOpen)
With dlgOpen
.Title = Tit
.Filters.Clear
.Filters.Add formatName, formatType
.AllowMultiSelect = False
result = .Show
If (result <> 0) Then
getFile = Trim(dlgOpen.SelectedItems.Item(1))
End If
End With
End Function
Đoạn code này lấy về password lưu trong hệ thống:
Mã:
' lâìy vêÌ password cuÒa lâÌn connect trýõìc
Function getconnect(T As String) As String
Dim con As String
con = DLookup("[Connect]", "MSysObjects", "[name]='" & T & "'")
getconnect = con
End Function
'Liên kêìt table
Sub LinkTable(T As String, path As String, connectString As String)
Dim tblLink As TableDef
Dim DBlink As Database
Set DBlink = OpenDatabase(path, False, False, connectString)
On Error GoTo Err
DoCmd.DeleteObject acTable, T
Err:
DoCmd.TransferDatabase acLink, "Microsoft Access", path, acTable, T, T
'DBlink.Close
Set DBlink = Nothing
End Sub
Đoạn code này kiểm tra các table nào là liên kết, nếu nó là liên kết thì sẽ tiến hành liên kết theo đường dẫn mới
Mã:
Sub refreshLinkTable(path As String)
'Writen by:Noname
'Writen site: http://thuthuataccess.com/
'Please do not remove my info if using or share this modules
Dim r As Recordset
Dim s As String
s = "SELECT ForeignName FROM MSysObjects WHERE ForeignName Is Not Null"
Set r = CurrentDb().OpenRecordset(s)
If r.RecordCount > 0 Then
r.MoveLast
For i = 0 To r.RecordCount - 1
LinkTable r(0), path, getconnect(r(0))
r.MovePrevious
Next i
End If
r.Close
Set r = Nothing
End Sub
Giờ trong hành động nhấn chuột của nút Open, ta nhập code sau vào:
Mã:
Private Sub cmdOpen_Click()
txtPath.Value = getFile("Select Data File", "data file", "*.mdb")
End Sub
Hành động nút refresh link ta nhập code sau vào:
Mã:
Private Sub cmdreLink_Click()
refreshLinkTable Me.txtPath
MsgBox "link table thanh cong"
End Sub