Chào mừng, Khách
Bạn cần phải đăng ký trước khi bạn có thể đăng trên trang web của chúng tôi.

Tên người dùng
  

Mật khẩu
  





Diễn đàn Tìm kiếm

(Tìm kiếm nâng cao)

Diễn đàn Thống kê
» Thành viên: 264
» Thành viên mới nhất: thuytiencp
» Các chủ đề diễn đàn: 216
» Các bài viết diễn: 1,648

Thống kê đầy đủ

Thành viên online
Hiện đang có 26 người dùng trực tuyến.
» 0 Thành viên | 26 Khách

Chủ đề Mới nhất
[Góc thơ] THAO THỨC
Chuyên mục: Góc Thơ
Đăng bởi lần cuối: Nguyễn Thành Sáng
6 Giờ trước
» Bài trả lời: 556
» Lượt xem: 25,408
Thiết lập công thức tính ...
Chuyên mục: Vấn đề chung
Đăng bởi lần cuối: ChiMai
6 Giờ trước
» Bài trả lời: 0
» Lượt xem: 10
Tìm kiếm theo nhiều tiêu ...
Chuyên mục: Forms
Đăng bởi lần cuối: duynamvnn1208
7 Giờ trước
» Bài trả lời: 7
» Lượt xem: 157
Database tổng hợp một số ...
Chuyên mục: Thư Viện Ứng Dụng
Đăng bởi lần cuối: mrtoanbin
7 Giờ trước
» Bài trả lời: 2
» Lượt xem: 1,562
Thiết lập code in nhãn th...
Chuyên mục: Vấn đề chung
Đăng bởi lần cuối: tranthanhan1962
Hôm qua, 12:28 AM
» Bài trả lời: 7
» Lượt xem: 195
Cập nhật theo điều kiện
Chuyên mục: Vấn đề chung
Đăng bởi lần cuối: feeling
22-01-18, 10:32 PM
» Bài trả lời: 0
» Lượt xem: 27
Nhờ anh chị hỗ trợ
Chuyên mục: Query
Đăng bởi lần cuối: ongke0711
22-01-18, 10:49 AM
» Bài trả lời: 3
» Lượt xem: 97
Sự ổn định của UNION QUER...
Chuyên mục: Query
Đăng bởi lần cuối: duynamvnn1208
21-01-18, 09:52 PM
» Bài trả lời: 1
» Lượt xem: 59
Chương trình quản lý bán ...
Chuyên mục: Thư Viện Ứng Dụng
Đăng bởi lần cuối: mrsiro
21-01-18, 09:26 PM
» Bài trả lời: 41
» Lượt xem: 2,199
[S.O.S] Điều khiển hiển t...
Chuyên mục: Forms
Đăng bởi lần cuối: tranthanhan1962
21-01-18, 05:31 PM
» Bài trả lời: 16
» Lượt xem: 578

 
  Gọi 1 đoạn code từ menu tự tạo
Viết bởi: Noname - 27-08-10, 10:12 AM - Chuyên mục: Thư viện thủ thuật - Không có hồi đáp

Hỏi: Tôi có 1 đoạn code trước đây tôi gọi từ form. Nhưng giờ chuyển sang menu thì làm sao gọi được.
Đáp: Để gọi 1 đoạn code từ menu, yêu cầu đoạn code của bạn phải là 1 function.
Ví dụ:

Mã:
Function QuanlyUser()
    If GetUserLevel > 1 Then
    DoCmd.Close
    DoCmd.OpenForm "frmQuanlyUser", , , "[UserLevel] <" & GetUserLevel
    Else
    msgBoxOK DLookup("[NDUNG1]", "tblTHONGBAO", "[SOTB] = 9") & vbCrLf & DLookup("[NDUNG2]", "tblTHONGBAO", "[SOTB] = 9"), vbCritical, DLookup("[TIEUDE]", "tblTHONGBAO", "[SOTB] = 9")
    End If

    End Function

Sau đó, tạo 1 macro và gọi function này bằng hàm runcode . Rồi lưu lại đầy đủ trường name, action...
(trong ví dụ mình lưu Macro tên Dulieuhethong)



Giờ bạn có thể tạo 1 memu gọi macro này bằng cách click chuột phải lên thanh menu, chọn custonmise, Sau đó chọn như hình, lôi Item muốn run lên vị trí tùy ý trên thanh bar tự tạo.


Chương trình demo xin phép modifield lại của bạn HaQuocQuan. :
ID: Admin
Pass: Admin
Pass enable/disable phím shift và VBA : ladieskiller
Demo

Các bạn có thể tham khảo thêm bài:
Thiết kế chương trình phân quyền để biết thêm về cơ chế phân quyền trong demo này.
Cũng tham khảo thêm bài: Hướng dẫn tạo menu để biết cách tự tạo 1 menu

In mục này

  Cách lấy (copy)database tại một máy trên mạng Lan
Viết bởi: Noname - 27-08-10, 10:11 AM - Chuyên mục: Tương tác Chương trình ngoài - Bài trả lời (12)

Hỏi:
Mong được sự giúp đỡ của các cao thủ lập trình Access :
_ Đến 1 ngày nhất định trong tháng phải copy database Access từ một máy tính trên mạng Lan; tên máy tính là computerA và địa chỉ IP tĩnh 192.168.1.30, máy tính A share thư mục với tên "Baocao" và tên file cần lấy là "Nhaplieu.mdb".
( tức là \\computerA\Baocao\nhaplieu.mdb hoặc \\192.168.1.30\Baocao\nhaplieu.mdb )
+ Mình muốn tạo một button khi click vào sẽ tự động lấy file ấy về và để tại máy tính mình tại thư mục gốc ổ D.

Đáp:

Trong sự kiện Click, bạn cho dòng lệnh sau vào

Mã:
Dim RCopy as String
    Rcopy= "Copy \\computerA\Baocao\nhaplieu.mdb D:\nhaplieu.mdb"

    Shell RCopy,vbHide

Hoặc:

Mã:
Call FileCopy("\\computerA\Baocao\nhaplieu.mdb", "D:\nhaplieu.mdb")

Nếu vẫn không được thì dùng cách sau
b1. Tạo 1 file nội dung là
Mã:
Copy D:\CSDL\DATA.mdb D:\CSDLLUU\DATA.mdb
lưu thành file d:\csdl\copy.bat
b2. gọi hàm
Mã:
Shell "d:\csdl\copy.bat", vbHide

Trong trường hợp máy copy yêu cầu nhập userName/ pass để được vào copy thì bạn dùng cách Map 1 ổ đĩa mạng, rồi copy từ đó về máy.
Xem thêm cách map ổ đĩa mạng với UserName/ Pass

In mục này

  Map Network Drive bằng VBA
Viết bởi: Noname - 27-08-10, 10:09 AM - Chuyên mục: Tương tác Chương trình ngoài - Không có hồi đáp

Hỏi: Mình có làm 1 chương trình file Data để trên mạng LAN, do đó nếu người dùng không map ổ mạng thì sẽ không thể chạy chương trình được. Các bác cho em hỏi có đoạn code nào gọi cửa sổ Map network Drive lên được không?
Đáp:
Điều kiện là thư mục của bạn phải được share trước.

Mã:
Sub MapNetwork(D As String, s As String, UserName As String, Password As String)
    'd : diver
    's: Map Address
    Dim p As String
    p = "net use " & D & ": \\" & s
    Shell p, vbHide
    MsgBox "Map " & D & " successful"
    End Sub


Bây giờ, giả sử dữ liệu mình nằm trên server trong thư mục DuLieu. UserName Mình là Noname. Pass Của mình là TTAC. Mình muốn gán ổ đĩa G làm ổ mạng. mình sẽ gọi Thủ tục map network Drive như sau:

Mã:
MapNetwork "G", "server\dulieu", "Noname", "TTAC"

In mục này

  Chặn ghi trùng dữ liệu với Validaction
Viết bởi: Noname - 27-08-10, 10:07 AM - Chuyên mục: Forms - Bài trả lời (13)

Hỏi:
Trong Validation Ruler của Table hoặc Form có cách nào để chặn không cho ghi dữ liệu trùng không các bạn.
Vì mình có 1 Form nhập thông tin khách hàng,mình không muốn số Mobile trùng nhau ,nên mình muốn đặt Validation Ruler không cho nhập trùng có được không,để nếu mình gõ sai nó báo luôn.Các bạn đừng bảo mình thiết lập khóa chính hay Index (No duplicates) nhé ,vì như thế phải nhập hết thông tin của 1 bản ghi thì nó mới báo trùng,như thế mất công lắm.
Đáp:
Giả sử bạn có 1 table là Customers(maKH,phone,...), 1 form tên là Customers
Trong form nhập thông tin khách hàng, textbox phone Bạn đặt các thuộc tính như sau:
ValidationRule property:

Mã:
DLookUp("[Phone]","Customer","[Phone] = '" & [Forms]![Customer]![Phone] & "' and [CusID] <>'" & [Forms]![Customer]![CusID] & "'") Is Null

Mã:
ValidationText property : "Số phone này đã được nhập , vui lòng xem lại"

Demo

In mục này

  Tùy Biến Các Cột thay đổi trong Report
Viết bởi: Noname - 27-08-10, 10:04 AM - Chuyên mục: Report - Bài trả lời (3)

Bài này được Copy của tác giả paulsteigel bên Giải Pháp Excel. Thấy hay nên Copy về đây cho mọi người tham khảo.
Đó là 1 report có format tương đối giống nhau, nhưng có các cột thay đổi tùy ý. Xin copy lại nguyên gốc tác giả. Và thắc mắc có thể vào link gốc để hỏi trực tiếp tác giả!
link gốc

Trích dẫn:Lâu lắm rồi không làm việc với Access, hôm nay có việc phải quay lại làm mấy việc với công cụ báo cáo Report của Access, tiện thể tôi xin chia sẻ một kỹ năng nho nhỏ với các bạn đã và đang, có thể sẽ sử dụng nhiều Access trong công việc.
Đã bao giờ các bạn nghĩ đến việc sử dụng một báo cáo cho nhiều mục đích, hiển thị nhiều báo cáo có bố cục tương đối giống nhau không?
Nếu bạn phải trình bày bảng dữ liệu có quá nhiều cột, bạn muốn báo cáo tự động chia số cột cho đều theo khổ giấy A4, phần còn thừa sẽ chuyển sang báo cáo mới và căn chỉnh độ rộng cột cho phù hợp?
...vv
Thường thì mọi người sẽ xác định giải pháp là: thôi thì tạo ra hàng loạt mẫu báo cáo để có thể dự phòng được trường hợp số cột là nhiều nhất, các báo cáo này giống nhau căn bản và chỉ khác nhau mỗi cái tên.
Với yêu cầu này, tôi xin giới thiệu một cách sử dụng tính năng thừa kế lớp của đối tượng Report (chắc các cao thủ thì đều đã làm rồi, mạo muội xin giới thiệu lại và hy vọng sẽ giúp ích được các bạn).
Đầu bài là:
Tôi có bảng danh sách có 15 cột dữ liệu và cần in ra trên 2 hoặc nhiều hơn báo cáo trên khổ A4 trong đó 4 cột đầu thì giữ nguyên trong khi các cột khác thay đổi và tự điều chỉnh kích thước để phù hợp với khổ giấy. (Chẳng hạn mỗi báo cáo sẽ hiển thị 6 cột thì sẽ có 2 báo cáo là đủ 6 cột còn báo cáo thứ 3 chỉ có 3 cột. Vì thế với báo cáo thứ 3, ta sẽ cần hiệu chỉnh kích thước cột để tràn ra toàn khổ giấy).
Vậy tôi cần làm gì?
1.Thiết kế mẫu báo cáo có số cột lớn nhất có thể thể hiện trên khổ giấy A4 (đảm bảo kích thước vừa đẹp).
2.Viết Code để sử dụng tính năng thừa kế lớp của các đối tượng báo cáo.
3.Viết code để gọi và hiển thị báo cáo.
Với mẫu báo cáo, chúng ta cần có các thủ tục giúp vẽ đường lưới ngang dọc, ở đây tôi dùng lệnh draw trong Access và các bạn có thể quan sát cách gọi thủ tục DrawGrid tại phần format section của báo cáo.
If PrintCount = 1 Then DrawGrid Me, RptCol + 4
Sử dụng biến PrintCount để bỏ qua việc vẽ lại, tham số RptCol + 4 thể hiện yêu cầu sẽ chỉ bắt đầu vẽ kể từ cột thứ tư.
Các bạn cần chú ý cách đặt tên các textbox và label để tiện tham chiếu ("txt" & i và "lbl" & i) trong đó txt và lbl là tiền tố đầu của textbox và nhãn.
Tiếp theo tôi xử lý phần điều chỉnh độ rộng cột bằng cách tính toán số cột tối đa và tính ra độ rộng phù hợp của báo cáo trong sự kiện Report_open.
Có khá nhiều code nhưng nói chung phần này giúp giải quyết việc xác định kích thước các cột và đặt tên nhãn cũng như xử lý về chuỗi cung cấp dữ liệu cho báo cáo.
Các bạn có thể xem qua ví dụ tôi gửi kèm để tiện tham khảo.
Nếu có điều kiện tôi sẽ viết dài dòng hơn để mọi người đều có thể chia sẻ.
Các bạn mở frmReport và nhấn nút, chúng ta sẽ thấy kết quả là có 3 báo cáo được mở cùng lúc trong khi tôi chỉ sử dụng 1 báo cáo mẫu duy nhất.
Thành thật xin lỗi các bạn về việc hơi ẩu khi lạm dụng comment bằng tiếng Anh. - Nếu có điều kiện tôi sẽ viết lại bằng tiếng Việt
Chúc các bạn một buổi tối vui vẻ!
Demo

In mục này

Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ