Bài viết mở đầu cho mục Access và VBA

phatnq2002

Tích cực giảm cân...
Hội viên mới
Chào các bạn,

Dù tài nghệ chưa là đinh gì cả, nhưng tôi rất sẵn lòng cùng các bạn trao đổi những kinh nghiệm về việc lập trình VBA trên Acces.

Chia sẻ kiến thức là làm giàu thêm cho nhau kiến thức.

Mong được trao đổi sớm với các bạn.
:)
 
Chào bạn Phatnq2002,

Hoan nghênh bạn tham gia diễn đàn dân kế toán, mình tin rằng với khả năng của bạn dân kế tóan sẽ có thêm nhiều bài viết thật hay.

Phatnq2002 ơi, bạn có thể viết một bài hướng dẫn cách viết một đoạn code đơn giản trong access không?

Mình cũng có một thắc mắc nữa là sự khác biệt của "seek" và "findfirst/Findnext" . Bạn giúp mình về cách sử dụng nghe!

Thanks trước nhé
 
Thể theo lời của bạn Simon, tôi sẽ mở đầu bằng một bài về việc viết code trong Access, trước tiên là khái niệm.

Access ngoài chức năng là quản trị CSDL, nó còn có thể cho phép người dùng xây dựng một ứng dụng. Đde63 xây dựng một ứng dụng, điều nhất thiết là phải lập trình (coding).

Access sử dụng ngôn ngữ Visual Basic được Microsoft support cho các phần mềm trong Microcost Office: Word, Excel, Access, PowerPoint, ... và được gọi là VBA - Visual Basic for Applications.

Nếu bạn nào đã biết ngôn ngữ VB thì VBA không là gì cả. Tuy nhiên nó có một số khác biệt nho nhỏ do đã được hỗ trợ thêm một số thư viện thích hợp.

Lập trình trong Access còn được gọi là lập trình điều khiển sự kiện (event-driven programming). Về hình thức nó tương tự như lập trình hướng đối tượng nhưng đơn giản hơn nhiều.

Lập trình điều khiển sự kiện là việc lập trình sao cho khi có một sự kiện, một hành vi tác động lên một đối tượng thì sẽ thực thi một hay nhiều tác vụ nào đó tương ứng.

Chúng ta có thể lập trình sự kiện trên các Form, Report và những đối tượng trong chúng.

Tuy nhiên muốn lập trình sự kiện một cách "pro", chúng ta phải nắm vững ý nghĩa của các sự kiện và diễn biến của sự kiện.

Ví dụ: Một người muốn kiểm tra dữ liệu nhập vào textbox số lượng (soluong), số lượng nhập vào không được phép để trống và phải dương.
Ở đây người dùng sẽ yêu cầu một trong hai tình huống:
- Hoặc là kiểm tra khi dấu chèn (insertion I-beam) rời khỏi textbox soluong.
- Hoặc là kiểm tra khi chuẩn bị chuyển sang một record khác.

Khi dấu chèn rời khỏi textbox soluong, hàng loại các sự kiện sau sẽ xảy ra (có giản lược, chỉ giữ các sự kiện chính): BeforeUpdate, AfterUpdate, Exit, LostFocus.

- BeforeUpdate là sự kiện xảy ra trước khi dữ liệu trong textbox soluong được lưu lại trong recordset (nhưng chưa lưu vào table). Sự kiện này chỉ xảy ra khi người sử dụng có gõ (entry) bất cứ gì vào textbox kể cả xóa trắng nội dung.
- AfterUpdate là sự kiện xảy ra sau khi dữ liệu trong textbox soluong được lưu lại trong recordset (nhưng chưa lưu vào table).
- Exit: sự kiện xảy ra trước khi dấu chèn rời khỏi textbox.
- LostFocus: sự kiện xảy ra khi dấu chèn thực sự ra khỏi textbox.

Trong các thủ tục sự kiện tương ứng BeforeUpdate và Exit của textbox soluong, chúng ta đều có thể kiểm tra được dữ liệu nhập vào của người dùng, nhưng có hơi khác một tý về cách hành xử.

Private Sub soluong_BeforeUpdate (Cancel As Integer)
If IsNull(soluong) Or soluong <= 0 Then
MsgBox "So luong khong hop le."
Cancel = True
End If
End Sub

Private Sub soluong_Exit (Cancel As Integer)
If IsNull(soluong) Or soluong <= 0 Then
MsgBox "So luong khong hop le."
Cancel = True
End If
End Sub


Thoạt nhìn, cả hai hầu như không có gì khác nhau, nhưng nó sẽ có một số điểm khác biệt:
Nếu ở textbox soluong, người sử dụng không nhập gì (trước đó soluong đang để trống) thì khi người sử dụng ENTER để đi qua, thủ tục BeforeUpdate không thi hành mà thủ tục Exit thi hành. Khi thi hành, chúng hiện thông báo, sau đó giữ dấu chèn ở lại trong textbox soluong. Nếu sử dụng thủ tục beforeUpdate, để rời khỏi soluong, người sử dụng có thể nhấn phím ESC để lấy lại giá trị cũ của soluong, và từ đó có thể rời khỏi nó. Trong khi đó, nếu sử dụng thủ tục Exit thì sẽ gần như là bị loop, không ra được textbox soluong.

Thường thì biện pháp tốt nhất là kiểm tra trước khi record lưu vào table. Trong trường hợp này sẽ sử dụng thủ tục sự kiện BeforeUpdate của Form.

Private Sub Form_BeforeUpdate (Cancel As Integer)
If IsNull(soluong) Or soluong <= 0 Then
MsgBox "So luong khong hop le."
Cancel = True
End If
End Sub


Trong thủ tục này của form, chúng ta có thể kiểm tra toàn bộ những ràng buộc mà chúng ta cần.

Trên là một số khái niệm ban đầu, trong thời gian tới, tôi sẽ sắp xếp thời gian post một số kinh nghiệm về lập trình trong Access để các bạn tham khảo.

:)
 
vui long giup do

mình tạo 1 bảng với 20 mẫu tin trong bảng này có cột STT=autonumber và khi tạo query cho table này với "group by " không có cột STT thì gồm 5 mẫu tin
1.) làm cách nào tạo số đánh thứ tự trong query

rất mong các bạn chỉ dẫn, cảm ơn!
 
Ðề: Bài viết mở đầu cho mục Access và VBA

SEEK tìm trên trường đã được SORT nên nhanh hơn. Ví dụ trong table "Nhanvien" có trường "Hoten". Nếu SEEK "Lê" mà khi PRG tìm tới vần "M" không thấy nó sẽ dừng ngay và thông báo không thấy. Còn với Findfirst thì nó cứ ngớ ngẩn tìm tận đến cuối cùng nếu nó không gặp được thứ nó cần tìm.
 
Ðề: Bài viết mở đầu cho mục Access và VBA

Chào các bạn,

Dù tài nghệ chưa là đinh gì cả, nhưng tôi rất sẵn lòng cùng các bạn trao đổi những kinh nghiệm về việc lập trình VBA trên Acces.

Chia sẻ kiến thức là làm giàu thêm cho nhau kiến thức.

Mong được trao đổi sớm với các bạn.
:)

Chao ban!
Minh rat thich cach lam phan mem bang Access 2000. Ban co chuong trinh nao hay chi dum minh voi
:smash:
:cheers2:
 
Ðề: Bài viết mở đầu cho mục Access và VBA

Chào diễn đàn và tất cả các bạn thành viên.
Tôi vưà đăng kỹ tham gia diễn đàn cùng các bạn, mong các bác có nhều kinh nghiệm đi tr][cs chỉ bảo.
Tôi cần kiến th]cs ngôn ng]x lâph trình Access tôi thích tò mò về ngôn ng] lập trìng VB trong Access nh]ng chưa biết j? các bác co tai liẹu gì cho tôi v[í Thankyou.
 
Ðề: Bài viết mở đầu cho mục Access và VBA

Chào diễn đàn và tất cả các bạn thành viên.
Tôi vưà đăng kỹ tham gia diễn đàn cùng các bạn, mong các bác có nhều kinh nghiệm đi tr][cs chỉ bảo.
Tôi cần kiến th]cs ngôn ng]x lâph trình Access tôi thích tò mò về ngôn ng] lập trìng VB trong Access nh]ng chưa biết j? các bác co tai liẹu gì cho tôi v[í Thankyou.

Trong box "Access Tổng Hợp" ở ngay trên phần đầu của box đó có tài liệu tiếng Việt Access 2000.
Click vào đây:
http://danketoan.com/forum/showthread.php?t=861
 
Ðề: Bài viết mở đầu cho mục Access và VBA

Tiếp tục đi anh Phatnq2002 ơi. Bài đầu của anh rất phù hợp với dân đang mày mò từ đầu anh ạ.
Anh bắt đầu từ những điều cơ bản nhất nhá.
 

CẨM NANG KẾ TOÁN TRƯỞNG


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Cách làm file Excel quản lý lãi vay

Đăng ký kênh nhé cả nhà

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top