Tìm thủ thuật nhanh hơn với chức năng tìm trong Blog

Hiển thị các bài đăng có nhãn Access. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Access. Hiển thị tất cả bài đăng

30/8/19

Giới thiệu Microsoft Access

Có thể nhiều bạn đã nghe đến Microsoft Access, nhưng thực sự Microsoft Access là gì và có thể giúp chúng ta làm cái gì thì nhiều bạn sẽ chưa rõ, vậy nên trong bài viết này, Thủ thuật Access sẽ chia sẻ với các bạn về chủ đề này.

24/2/11

Làm Việc với folder (TT)

Tác giả: Haquocquan
Vui lòng giữ nguyên tên tác giả và site khi bạn sử dụng hoặc dùng lại thủ thuật này
--------------------------------------------------------------------------------------------
Tiếp: Liệt kê các subfolders trong một folder:
Đoạn code dưới đây sẽ liệt kế các subfolders trong folder E:\XUAT\ vào table LuuSub

10/1/11

Mã hóa và giải mã- tgiả vba

Tác giả: VBA
site: Diễn đàn Thủ Thuật Access
ứng dụng 2 hàm này các bác có thể sử dụng trong việc quản lý mã hoá mật khẩu trong table User của các bác là hay nhất

6/12/10

Hàm chuyển giá trị trong cột thành chuỗi cách nhau dấu phẩy

bài viết của Noname
Site: http://thuthuataccess.com
vui lòng giữ tên tác giả và site nếu dùng lại bài viết này làm tư liệu cho mình và chia sẻ. Cám ơn

-------------------------------------------------------------------
Ứng dụng của hàm này vào việc liệt kê danh sách khách hàng, số hóa đơn mất - xóa bỏ, liệt kê các giá trị thỏa điều kiện nào đó trong 1 câu query thành 1 chuỗi.Dùng chuỗi này vào các báo cáo...

21/11/10

Set Security Low cho Access

' site: http://thuthuataccess.com
' Write by Noname
' Vui lòng giữ thong tin site và tác giả nếu bạn dùng hoặc share lại code này

---------------------------------------------------------------------------------------
Như các bạn dùng Access đã biết. Mặc định khi cài thì chế độ sercurity của Access được set ở chế độ medium, nên khi mở Access, nó hiện bảng Security Warning rồi mới cho mở file. thủ thuật này cho phép bạn tạo 1 nút nhấn, cho phép người dùng tự Set chế độ sercurity thành low để lần sau không hỏi nữa!
Nguyên lý:
Mặc định, giá trị trong registry ở khóa HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Access\Security\ "Level" =2 vì vậy, ta phải set nó thành 1 thì lần sau nó không hỏi nữa.

19/11/10

Làm Việc với Folder

Tác giả: Haquocquan
Vui lòng giữ nguyên tên tác giả và site khi bạn sử dụng hoặc dùng lại thủ thuật này
-------------------------------------------
1. Kiểm tra xem folder có tồn tại hay không.

30/10/10

Thủ Thuật Lưu Vết Truy Cập Chương trình (Audit Trail)

'Writer By: Noname
'Site: http://thuthuataccess.com - Vui long giu nguyen site va tac gia neu ban dung hoac share module nay

------------------------------------------------------------------
Đầu tiên, Bạn thiết kế một table tblAuditTrail(Times,UserID,UserName,ComputerName,module,Action)
Tạo một đoạn chương trình con như sau trong một module mới

16/10/10

Tạo số chứng từ tăng dần và reset lại theo yêu cầu người dùng

Writer: Noname
site: http://thuthuataccess.com
Vui lòng giữ nguyên thông tin tác giả và site nếu bạn dùng hoặc chia sẻ thủ thuật này

-------------------------------------
Trong thực tế, một số chứng từ yêu cầu có số tăng dần và reset lại, cụ thể là các sổ thu , chi. Các quyển hóa đơn bán lẻ...
thủ thuật này cho phép chúng ta tạo ra các số chứng từ tăng dần và reset lại 1 khi nhấn vào nút reset.

Tạo số chứng từ tự tăng dần và reset lại mỗi khi người dung yêu cầu

Chúng ta có 1 table lưu các số chứng từ như sau:
Tblhoadon(STT,soHD,ngay, donvi,…)

14/10/10

In chứng từ nhiều hơn 10 record thì chuyển sang bảng kê

Tác giả: Noname
Site: http://thuthuataccess.com
-----------------------------------------------------
Vui lòng giữ nguyên tên và site nếu bạn dùng nội dung trong bài viết này
Giả sử bạn có table ( hoặc query) tên là table1.
Giờ bạn muốn in 1 chứng từ với điều kiện sau:
- Ít hơn 10 dòng, in bình thường
- Nhiều hơn 10 dòng, in chứng từ với dòng chữ: Chi tiết trong bảng kê . Đồng thời cho in luôn bảng kê!

Như vậy ta cần có 3 report sau:
- Chứng từ
- Chứng từ với dòng chữ : Chi tiết bảng
- bảng

Ở đây mình chỉ đề cập thủ thuật liên quan việc xử lý nút in. Còn nội dung mình không xem xét!
Trong nút nhấn In của form in, ta xử lý như sau:

Code:
Private Sub Command0_Click()
Dim rs As Recordset
Dim n As Integer
Set rs = CurrentDb().OpenRecordset("Table1", dbOpenDynaset)
rs.MoveLast
n = rs.RecordCount
MsgBox n

If n <= 9 Then
DoCmd.OpenReport "hoadon", acViewPreview
Else
DoCmd.OpenReport "hoadon1", acViewPreview
DoCmd.OpenReport "bangke", acViewPreview
End If

End Sub

Với hoadon là chứng từ không bảng
hoadon1: chứng từ có kèm bảng
table1 là table/ query chứa dữ liệu cần in


Để thảo luận thêm và download demo, vui lòng vào:
http://thuthuataccess.com/forum/thread-301.html

8/10/10

Hướng dẫn tạo form chỉ cho phép mở một số lần cố định

hướng dẫn này cho phép chúng ta tạo 1 form chỉ cho phép người dùng mở 5 lần.
Có thể dùng ràng buộc người dùng phải đăng ký để dùng tiếp.

----------------------------------------------------------
Tác giả và demo: Cafe Via He
Site: http://thuthuataccess.co.cc/forum
Vui lòng giữ tên tác giả và site nếu bạn dùng hoặc chia sẻ code này.
------------------------------------------------
Tạo 1 table tên là FormInfo(FormName,times)
Formname: Text
Times: number

1 Form tên là demo
Trong đó, vẽ 1 textbox tên là txtT để thể hiện số lần mở form. Các yếu tố màu mè khác. Form sẽ có dung nhan như sau
[Image: solanmoform.png]
Trong sự kiện Openform, bạn dùng code sau:
Code:
Private Sub Form_Open(Cancel As Integer)
DoCmd.SetWarnings False
Dim frm As String
Dim t As Integer

    frm = DCount("formname", "Forminfo", "formname='" & Me.Name & "'")
    t = Nz(DLookup("times", "Forminfo", "formname='" & Me.Name & "'"), 0)
  
If frm = 0 Then 'Neu form chua mo lan nao
    t = t + 1
    DoCmd.RunSQL "Insert into Forminfo(formname,times) values('" & Me.Name & "'," & t & ")"
    txtT = t  
ElseIf frm > 0 And t < 5 Then 'Cong don so lan mo form
    t = t + 1
    DoCmd.RunSQL "Update FormInfo set Times =" & t
    txtT = t
ElseIf frm > 0 And t = 5 Then ' Neu da mo form duoc 5lan
    MsgBox "This form was opened 5 times" & vbCrLf & vbCrLf & "Expired!!!"
    Cancel = True
End If

End Sub

Và nếu form này mở quá 5 lần thì chương trình sẽ không cho mở form nữa!
[Image: exspire5lan.png]


Demo Download

Nếu bạn muốn mở form quá 5 lần thì chương trình tự thoát ra, bạn thay dòng
Cancel=true
Bằng dòng
Docmd.quit
Chúc thành công!

DownLoad Demo
Để thảo luận thêm về chủ đề này, mời vào topic:
http://thuthuataccess.co.cc/forum/thread-273.html

7/10/10

Tạo Report Chỉ cho in 1 lần duy nhất- Xem thoải mái

Hỏi : Mình đang thiết kế 1 report đặc biệt chỉ cho phép người sử dụng in ra máy in 1 lần duy nhất còn Preview thì thoải mái.
(dongnamnb- Danketoan)

Đáp:
Ý tưởng: Phatnq2002 - DKT
Coding & Demo: Noname: thuthuataccess

Dựa theo Ý tưởng thứ 2 của anh Phatnq2002, Tức là khi xem nó sẽ hiện 1 label cho biết đó không phải là bản chính thức. Còn khi in chính thứ thì ẩn đi, và chỉ cho in chính thức 1 lần rồi khóa lại luôn.

6/10/10

Ràng buộc số record được nhập vào 1 Form nhập chứng từ

Share by: Noname
Site: http://thuthuataccess.com
----------------------------------------
Như các bạn đã biết, có vài loại chứng từ, nhất là các chứng từ in sẵn khống chế số lượng record được viết ra. ( Vì dụ Hóa đơn đỏ)

Vì vậy, thủ thuật này cho phép ta khống chế số lượng record được nhập trong 1 form.
Để xử lý, chúng ta dùng event before_BeforeInsert Của form như sau:


22/9/10

Tạo Label nhấp nháy

Share by : hungtano - KHPT
Hỏi:
Tôi có 1 form. Tôi muốn khi người dùng mở form này thì thanh tiêu đề của form (form caption) nhấp nháy dòng chữ : dữ liệu đã bị khóa ! Tôi phải làm sao ?

Đáp:
Bạn dùng 2 sự kiện của form: Open và Timer

17/9/10

Tùy biến report: Thêm/bớt cột trong report Access

Hỏi: Làm sao để ẩn các cột số liệu bằng 0, và chỉ hiện các cột có phát sinh số liệu
Đáp:
Mỗi đối tượng có thuộc tính left, visible.
Đầu tiên bạn tạo tất cả. Và đặt left của các text, label của các cột cần ẩn/ hiện là 0, visible là false.
Tạo thêm 1 biến là vitri.

vitri = [cột đang hiện].left + [cột đang hiện].width
Bạn Kiểm tra sum của cột kế tiếp, nếu <>0 thì
left = vitri
vitri =[cột kế].left +[cột kế].Width
[cột kế].Visible=true
end if

Thảo luận thêm tại:http://thuthuataccess.com/forum/index.php

Gọi Form Chờ khi thực hiện tập lệnh !

Hỏi:Em đặt một nút command button, trong đó chạy một số câu lệnh và phải mất khoảng 5 phút.
Trong quá trình thực hiện lệnh, em muốn hiện lên màn hình dòng chữ:
" Đang thực hiện công việc, xin vui lòng chờ trong giây lát"

14/9/10

Tùy biến Hàm làm tròn-round thành roundup,rounddown. Các hàm Int, Fix

Tùy biến Hàm làm tròn-round thành roundup-rounddown. Các hàm Int, Fix
Như các bạn biết, Ms Access chỉ cung cấp mỗi hàm làm tròn là hàm Round. Điều này gây 1 số bất tiện khi ta có nhu cầu Round-up, round-down.
Nhân đây, No xin giới thiệu luôn 2 hàm liên quan là hàm Int và hàm Fix:


1/ hàm Round(Số, phần làm lẻ) (Click to Hide)
Ý nghĩa, trả về 1 số làm tròn với quy định chữ số thập phân "phần làm lẻ"
Ví dụ:
Round(11.55 , 0) =>1
Round(11.55,1 ) =>11,6

hàm round không chấp nhận phần làm lẻ là số âm. Vì vậy bạn không thể làm tròn tới hàng chục. Để làm được việc này, bạn cần tham khảo phần sau.
2/ hàm Fix và hàm Int: (Click to Hide)
Cả hai hàm đều trả về phần nguyên của một số. Tuy nhiên khác nhau là nếu phần số xem xét là số âm, thì int sẽ trả về số nguyên âm kế sau số đó. Phần fix trả về số nguyên âm số trước số đó.
Ví dụ:
Int(11,55) =>11
Fix(11,55)=>11
Int(-11,55)=>-11
Fix(-11,55)=> -12
3/ Làm thế nào gọi hàm Roundup, rounddown và làm tròn hàng chục hàng trăm trong Access. (Click to Hide)

3.1 Làm tròn lên và làm tròn xuống. (rounddown và roundup)

Ta phát biểu như sau:
RoundDown
Round(số -0.x5 , n)

Roundup
Round(số +0.x5 , n)
Trong đó x5 là các số 0 có số lượng là n
n là dãy số cần lấy sau dấu thập phân
Round(11.55,1) => 11.6 'round
Round((11.55 -0,05) ,1) =>11.5 'rounddown
Round(11.44 ,1) =>11.4 'round
Round(11.44 + 0.05 ,1) =>11.5 'roundup

3.2 Làm tròn đến số hàng chục, hàng trăm
hàm round không chấp nhận đối số là số âm, nên Để làm tròn đến số hàng chục, ta làm như sau:
Round(số/10 , 0)*10

Tương tự làm tròn tới hàng trăm:
Round(số /100 ,0)*100

Ví dụ:
Round(155 / 10, 0) * 10 =>160
Round(155 / 100, 0) * 100 =>200

Tương tự cho hàng ngàn, hàng chục ngàn! big hug
Chúc may mắn
__________________________________________________
Thảo luận thêm tại:http://thuthuataccess.com/forum/thread-214-post-384.html

11/9/10

Tùy chọn liên kết lại các table từ file data có password

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


Để sử dụng được code này, bạn vui lòng khai báo thư viện Office.

- Đầu tiên, bạn tạo 1 form mới, trên form,
+vẽ 1 textbox đặt tên là txtPath. dùng để nhập đường dẫn file data.
+ vẽ 1 nút nhấn, với caption là ... dùng để chọn file data, và ghi kết quả.
Vẽ 1 nút nhấn với caption là refresh link để thực thi hành động cập nhật lại đường dẫn table
[Image: chonfiledata.png]

Trong ví dụ đính kèm dưới đây, bạn có 2 file đính kèm là data3 và data4 với password đều là 123456.
Đầu tiên, bạn link table theo cách link thông thường, nó sẽ hỏi password của bạn, bạn nhập password bình thường, chọn các table để liên kết. Và kể từ đây bạn không cần phải nhập password thêm lần nào nữa.

Bạn tạo 1 module mới và copy các đoạn code sau vào:

Đoạn code này cho phép ta gọi hàm getfile để tìm tới file data

Code:
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:
Code:
' Lấy về password củ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
Đoạn code này link table với đường dẫn và password có sẵn
Code:
'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
Code:
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:
Code:
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:

Code:
Private Sub cmdreLink_Click()
refreshLinkTable Me.txtPath
MsgBox "link table thanh cong"
End Sub

Xong rồi đấy!
Chúc thành công.
Demo
Để thảo luận thủ thuật này, vui lòng ghé vào diễn đàn:
http://thuthuataccess.com/forum/thread-199.html

6/9/10

Tham chiếu các đối tượng trên form con

Hỏi:
Mình có 3 form: form ong noi, form cha, form cháu
form cha là subform của form ong noi, form cháu là subform của form cha
Một query mà có điều kiện là từ 1 textbox thuộc form cháu thì diều kiện đó cú pháp ghi như thế nào? Đại ý là:
vi dụ:
Nếu textbox1 thuộc From ông nội cú pháp: forms!ongnoi.textbox1
Nếu textbox2 thuộc form Cha cú pháp: forms!ongnoi!Cha.form.textbox2
Nếu textbox3 thuộc from cháu thì cú pháp như thế nào?
Xin cảm ơn các bài trả lời của các bạn

29/8/10

Tùy chọn file Data để liên kết đến

Hỏi: Hiện tại mình đã viết xong một chương trình kế toán phục vụ cho công việc của mình. Có một điều mình muốn áp dụng cho nhiều doanh nghiệp, mỗi doanh nghiệp một file .mdb thấy không hay lắm. Bây giờ mình muốn : trong thư mục D:\KeToan có file ChuongTrinh.mdb (Là chương trình chính), mỗi một doanh nghiệp dữ liệu chứa riêng một file mdb khác ví dụ như Data01, Data02, Data03... (Chỉ có Table thôi). Mình muốn các bạn giúp mình thiết kế một form (trước khi giao diện của chương trình hiện lên) form này hiện lên danh sách các Data có trong thư mục cùng với ChuongTrinh.mdb để cho mình chọn Data… khi đó chương trình sẽ tự liên kết đến Data mà mình đã chọn.
Đáp:
Để làm được như bạn, đầu tiên bạn phải làm được những việc sau:
1/ Liệt kê tên những table nào cần liên kết.
2/Lấy về đường dẫn file Data cũa bạn
3/ Gọi 1 đoạn code cho phép bạn xóa table đang link, và link lại tới file mới!

Bước 1: bạn tự viết ra giấy nhé
Bước 2:
Để chọn được file, bạn phải khai báo bộ thư viện của Office bằng cách vào cửa sổ VBA, Menu Tool--> references, chọn Microsoft Office 11.0 library. (chọn 10.0 với AccessXP).
[Image: OfficeLib.JPG]

Tạo tạo 1 module và copy 2 đoạn code sau vào:

Code 1 dùng gọi hộp chọn file:
Function getFile(Tit As StringformatName As StringformatType As String)Dim dlgOpen As FileDialog
Set dlgOpen 
Application.FileDialog(msoFileDialogOpen)With dlgOpen
    
.Title Tit
    
.Filters.Clear
    
.Filters.Add formatNameformatType
    
.AllowMultiSelect False
    result 
= .Show
    
If (result <> 0Then
getFile 
Trim(dlgOpen.SelectedItems.Item(1))End IfEnd With

End 
Function 

Code 2: Dùng Relink table lại

Sub LinkTable(As Stringpath As String)' kiêÒm tra table, nêìu coì rôÌi thiÌ xoìa ði
On Error GoTo Err

DoCmd.DeleteObject acTable, T
Err:
'
link lai tablelink moi
DoCmd
.TransferDatabase acLink"Microsoft Access"pathacTableTT
End Sub 

Xong phần chuẩn bị code, giờ bạn tạo 1 Form, trên form vẽ 1 textbox tên là txtPath, 1 nút nhấn tên là cmdOpen, 1 nút nhấn tên là cmdreLink

Sự kiệnc click của cmdOpen nhập như sau:

Private Sub cmdOpen_Click()txtPath.Value getFile("Select Data File""data file""*.mdb")End Sub 

Sự kiện click của cmdOpen, nhập vào như sau:

Private Sub cmdreLink_Click()LinkTable "tblKhachhang"txtPath
LinkTable 
"tblTiendien"txtPath
LinkTable 
"tblTienNuoc"txtPath
  'Sửa tên các table tương ứng thành của bạn
msgbox 
" Đã nhập thành công dữ liệu  file " txtpath
End Sub 
[Image: chonfiledata.png]

Demo Download:

Để thảo luận thêm về chủ đề này, mời bạn vào : http://thuthuataccess.com/forum/thread-154-post-222.html

19/8/10

[Thông báo] Thử nghiệm diễn đàn Thủ Thuật Access

Noname chào các anh chị!
Cảm ơn các anh chị thời gian qua đã theo dõi và chia sẻ kinh nghiệm cùng Blog Thủ Thuật Access.
http://thuthuataccess.blogspot.com

Tuy nhiên, có nhiều thắc mắc mà trong phạm vi một blog không cho phép chúng ta chia sẻ kinh nghiệm, học hỏi và phát triển các vấn đề liên quan đến MS Access. Vì vậy, hôm nay Noname xin lập thêm 1 diễn đàn để hỗ trợ, chia sẻ cho các anh chị tốt hơn.
Diễn đàn hiện tại chỉ là thử nghiệm, nên tên miền và host free. Đợi sau này nếu hoạt động tốt, tạo được sân chơi cho các Accessor chúng ta, đồng thời có kinh phí thì No sẽ nghĩ đến chuyện mua tên miền chính thức và Host chính thức!
Tên miền hiện tại của diễn đàn:
http://www.thuthuataccess.co.cc

Tên miền phụ:
http://thuthuataccess.tk

Lưu ý:
- Vì là tên miền và host miễn phí, nên khả năng mất bài viết của quý vị là rất cao. Vì vậy, nếu bài nào thật sự thấy giá trị và tâm huyết, các anh chị nên lưu lại trên máy nhằm giảm rủi ro.
- Một lưu ý nữa là vì host miễn phí nên dung lương có giới hạn, các anh chị nên post file đính kèm lên:
http://www.mediafire.com/ hoặc 1 host miễn phí khác rồi chia sẻ link
Hình ảnh nên post trên http://photobucket.com hoặc 1 trang share hình nào đó rồi chèn vào forum!

Vì đây chỉ là forum thử nghiệm, đang trong quá trình xây dựng nên các anh chị thẳng thắng đóng góp ý kiến vào : http://www.thuthuataccess.co.cc/forum/forum-3.html để diễn đàn hoạt động tốt hơn!

Thân mến!
Noname