Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Phân Biệt Code Viết Trong VBA Excel Và Access
#1
Xin Chào Các Thành Viên Thủ Thuật Access

Mình là thành viên mới tham gia hôm nay mình chưa được hoc về code viết trên Access và Access một ngày nào cả ...nhưng mình thấy code nó gần giống với code VBA mình hay viết trên Excel về cú pháp và ngữ pháp....

Vì vậy các Bạn cho mình hỏi 

1/ Mình có thể tập viết được code trên Access hay không....
2/ Các điều kiên cần thiết để có thể viết được trên Access ..
3/ Tài liệu cho người mới làm quen với Access nếu có cho mình xin link...
4/ Phân biệt sự giống nhau và khác nhau giữa code viết trên Access Và trên Excel...

Xin cảm ơn

PS: Nếu bài viết của mình chưa đúng mục nhờ Mod chuyển dùm tới mục phù hợp ....Tại mới nên chưa quen ..Xin cảm ơn
Chữ ký của kieu manh kieu manh,gia nhập Thủ Thuật Access từ 21-06 -15.
Reply
Những người đã cảm ơn
#2
Code VBA trong Access và Excel. ... nói chung là bộ Office là giống nhau, chỉ khác nhau về một số đối tượng của từng ứng dụng thôi bạn ạ
Bạn viết được trong excel thì bạn hoàn toàn có thể làm trên access.
Khi bạn chuyển sang Access bạn sẽ thấy sức mạnh của nó trong xử lý số liệu!
Thân
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn kieu manh , Xuân Thanh , Che_Guevara
#3
VBA của access và excell là như nhau. Nhưng VBA là một ngôn ngữ thủ tục (procedural language) để bạn có thể sử dụng để tự động hóa các đối tượng. Vì vậy, trong Access bạn sử dụng VBA để thao tác Access Objects như các Button, Textbox, Form, Report (tham chiếu qua dữ liệu của các table, query)… Trong Excel bạn sử dụng VBA thao tác các Form hoặc các Excel Objects được thiết kế trực tiếp trên Sheet các để tự động hóa các đối tượng Excel như các ô (cells)và các dòng (ranges).
Tài liệu access cơ bản tiếng việt cũng nhiều trên mạng. Cách viết code cũng gần giống nhau (có thể nói là “y chang”).
Nói chung bạn đã có cảm nhận VBA của excel nên đến với VBA của access cũng dễ dàng. 
Cái khác giữa access và excel không phải là vấn đề VBA, mà là bạn sẽ gặp các đối tượng chứa dữ liệu kiểu mới: Table thay thế Sheet, Field thay thế Column, Record thay thế Range. Bạn sẽ làm quen với các mối liên kết giữa các table…
Và phần khó khăn hơn là học cách sử dụng các công cụ mới mà bạn có thể sử dụng VBA để tự động hóa.
Trước mắt bạn có thể tải bất kỳ một tài liệu access cơ bản tiếng việt nào đó để nghiên cứu. Khi cần bạn có thể đến với Thủ Thuật Access. Anh chị em trong forum sẵn sàng hỗ trợ bạn.
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Noname , kieu manh , Xuân Thanh , Che_Guevara
#4
Mình viết 2 code mẫu trên Excel. Nếu Bạn nào rãnh hổ trợ mình Viết lại 2 code sau trên Access

1/ Lọc duy nhất cột A Sang cột [L2] Sử dụng dictionary
2/ Lọc copy theo điều kiên Cột C nếu trống thì bỏ Paste Qua [G1] sử dụng Array

Nhờ Trợ giúp:
Viết lại 2 yêu cầu trên ... Thực hiện trên Access để mình có thể so sánh cách viết và từng bước hoc tập và chinh phục Access
PS: Mình Tìm cách úp File lên trực tiếp lên mà không được .. Bạn nào biết xin chỉ dùm
Xin cảm ơn các Bạn
Code Lọc Duy Nhất
Mã:
Code Lọc Duy Nhất
Public Sub LocDuyNhat()
Dim Nguon(), i As Long
Nguon = Range([A2], [A65536].End(3)).Value
With CreateObject("scripting.dictionary")
    For i = 1 To UBound(Nguon)
        .Item(Nguon(i, 1)) = .Item(Nguon(i, 1))
    Next
    Range("L2").Resize(.Count) = Application.Transpose(.keys)
End With
End Sub
Code Lọc Theo điều kiện
[code]
Public Sub CopyNguon(ByVal Nguon As Range, Dich As Range)
Dim Arr(), Kq(), i&, j&, k&
With Excel.ActiveSheet
    Arr = Nguon.Value
    ReDim Kq(1 To UBound(Arr, 1), 1 To UBound(Arr, 2))
    For i = 1 To UBound(Arr, 1)
        If Arr(i, 3) <> "" Then
            k = k + 1
            For j = 1 To UBound(Arr, 2)
                Kq(k, j) = Arr(i, j)
            Next
        End If
    Next
    Dich.Resize(UBound(Arr, 1), UBound(Arr, 2)) = Kq
End With
End Sub
''Chạy Sub này
Public Sub MainNguon()
    CopyNguon Range([A2], [A65536].End(3).Resize(, 4)), [G2]
End Sub

Link File Test
http://www.mediafire.com/download/0tkl42..._Excel.rar

[/code]
Chữ ký của kieu manh kieu manh,gia nhập Thủ Thuật Access từ 21-06 -15.
Reply
Những người đã cảm ơn
#5
Trích dẫn:Kieumanh
Mình viết 2 code mẫu trên Excel. Nếu Bạn nào rãnh hổ trợ mình Viết lại 2 code sau trên Access

1/ Lọc duy nhất cột A Sang cột [L2] Sử dụng dictionary
2/ Lọc copy theo điều kiên Cột C nếu trống thì bỏ Paste Qua [G1] sử dụng Array
3/ Mình Tìm cách úp File lên trực tiếp lên mà không được .. Bạn nào biết xin chỉ dùm
Trả lời:

+ Câu 1 + 2: Trên Access không cần viết code như trên Access đâu bạn ạ, chỉ cần tạo Query và chọn Group by là nó ra rồi. Đó là điểm khác biệt giữa Excel và Access ( khuyến khích sử dụng Access 2003 vì hầu hết đề sử dụng Ac2003)

+ Câu 3: Do dung lượng diễn đàn không lớn nên chỉ có ban quản trị diễn đàn mới được phép gửi file đính kèm lên nhưng dung lượng file gửi lên cũng rất hạn chế. Riêng mình chỉ được cấp sử dụng có 19Mb lên diễn đàn nên mỗi lần Post file mình cũng hạn chế tối đa các file có dụng lượng trên 100Kb post lên diễn đàn.

* Cuối cùng, để làm cụ thể cho bạn về Query thì bạn hạy tạo Database sẳn trên Access rồi Post file lên nhé.

Thân ái chào bạn.
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn kieu manh
#6
To Bạn [b]maidinhdan[/b]
Access Mình Mù tịt nếu được Bạn làm dùm mình File luôn để mình nghiên cứu được không ....Cảm ơn Bạn
Chữ ký của kieu manh kieu manh,gia nhập Thủ Thuật Access từ 21-06 -15.
Reply
Những người đã cảm ơn
#7
(22-06-15, 10:08 AM)kieu manh Đã viết: To Bạn [b]maidinhdan[/b]
Access Mình Mù tịt nếu được Bạn làm dùm mình File luôn để mình nghiên cứu được không ....Cảm ơn Bạn

Bài của bạn đây, lần sau không có chuyện là hộ nửa nhé...có gì thì tìm giáo trình Access trên diễn đàn rất nhiều
[Hình: locds.png]

file đính kèm phía dưới


File đính kèm
.zip   ExKieumanh.zip (Kích cỡ: 12.11 KB / Tải về: 15)
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Che_Guevara
#8
(22-06-15, 10:01 AM)maidinhdan Đã viết:
Trích dẫn:Kieumanh
Mình viết 2 code mẫu trên Excel. Nếu Bạn nào rãnh hổ trợ mình Viết lại 2 code sau trên Access

1/ Lọc duy nhất cột A Sang cột [L2] Sử dụng dictionary
2/ Lọc copy theo điều kiên Cột C nếu trống thì bỏ Paste Qua [G1] sử dụng Array
3/ Mình Tìm cách úp File lên trực tiếp lên mà không được .. Bạn nào biết xin chỉ dùm
Trả lời:

+ Câu 1 + 2: Trên Access không cần viết code như trên Access đâu bạn ạ, chỉ cần tạo Query và chọn Group by là nó ra rồi. Đó là điểm khác biệt giữa Excel và Access ( khuyến khích sử dụng Access 2003 vì hầu hết đề sử dụng Ac2003)

+ Câu 3: Do dung lượng diễn đàn không lớn nên chỉ có ban quản trị diễn đàn mới được phép gửi file đính kèm lên nhưng dung lượng file gửi lên cũng rất hạn chế. Riêng mình chỉ được cấp sử dụng có 19Mb lên diễn đàn nên mỗi lần Post file mình cũng hạn chế tối đa các file có dụng lượng trên 100Kb post lên diễn đàn.

* Cuối cùng, để làm cụ thể cho bạn về Query thì bạn hạy tạo Database sẳn trên Access rồi Post file lên nhé.

Thân ái chào bạn.

(22-06-15, 10:19 AM)maidinhdan Đã viết:
(22-06-15, 10:08 AM)kieu manh Đã viết: To Bạn [b]maidinhdan[/b]
Access Mình Mù tịt nếu được Bạn làm dùm mình File luôn để mình nghiên cứu được không ....Cảm ơn Bạn

Bài của bạn đây, lần sau không có chuyện là hộ nửa nhé...có gì thì tìm giáo trình Access trên diễn đàn rất nhiều
[Hình: locds.png]

file đính kèm phía dưới
Mình coi code trong đó thấy khác hẳn so với code viết trên Excel....Quả thực Access lọc dữ liệu hay thiệt ... Cảm ơn Bạn Từ từ mình nghiên cứu nếu khó khăn úp bài Nhờ các Bạn xử lý 
Một lần nữa xin cảm ơn các Bạn tham gia chỉ giúp
Chữ ký của kieu manh kieu manh,gia nhập Thủ Thuật Access từ 21-06 -15.
Reply
Những người đã cảm ơn tranthanhan1962
#9
(22-06-15, 10:35 AM)Do Access mạnh về xử lý số liệu nên để sử dụng tốt nó, một trong những công cụ mới mà bạn cần làm quen đó là SQL (Câu lệnh truy vấn có cấu trúc). Đã viết: Với bài toán lọc duy nhất như bạn trong Excel cậu chuyện trở nên đơn giản hơn rất nhiều nhờ SQL.
Tôi lấy một ví dụ:
Để lấy một danh sách các bản ghi không trùng nhau trong một bảng theo cột tên chẳng hạn, với Access, đơn giản là:
Select distinct Hovaten from tblNguoi dung;
Trong khi với Excel bạn phải dùng vài cột phụ và hệ thống các hàm match, index, countif.
Đến excel 2007 việc này đã được cải thiện nhờ đưa khái niệm bảng vào bảng tính nhưng vẫn không thể so với Acess được.

Quay vào bài toán của bạn, đóng góp thêm cho Mai Đình Đàn.
:::Truy vấn Group by được sử dụng trong tính toán, gộp
Tham chiếu <<http://www.w3schools.com/sql/sql_groupby.asp>>

Để lọc danh sách duy nhất, ta chỉ cần dung truy vấn Select với từ khóa Distinct (khác nhau)
Ví dụ truy vấn duy nhất sẽ trở thành
SQL của Đàn

Mã:
SELECT tbEx.A
FROM tbEx
GROUP BY tbEx.A;


SQL lọc duy nhất

Mã:
SELECT DISTINCT tbEx.A from tbEx;


Tại sao chỉ cần như vậy, nếu dùng Groupby sẽ làm tốn tài nguyên vì bản chất nó là dùng để tính toán.

Nếu bạn dùng được tiếng Anh thì nguồn sau đây có thể là nơi tham khảo tốt về Query
http://www.w3schools.com/sql/sql_groupby.asp

Tiện thể, tôi có trang web http://www.sfdp.net do Google host, nếu mọi người muốn tải file lên mình có thể tạo ra một khu vực ví dụ
http://www.sfdp.net/thuthuataccess/thuthuataccess
Các bạn có tài khoản gmail có thể sử dụng để đăng tải file và tạo liên kết.
(hiện bạn Đinh Trọng Hòa cũng đã tải vài lần.
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn Noname , Xuân Thanh , kieu manh , Che_Guevara
#10
  Bạn maidinhdan đã xử lý công việc viết code Excel của bạn bằng Access. Qua đây bạn cũng thấy vài sự khác biệt giữa Excel và Access.
  1/ Trong Excel đơn vị cơ bản chứa dữ liệu là Worksheet. Một Worksheet có số lượng cột (column) / dòng (row - range) cố định, khi mở một Worksheet sẽ có sẵn số lượng cột, dòng tối đa. Excel 2003: 256 / 63.536. Excel 2013: 396 / 1.048.576.
Trong Access đơn vị cơ bản chứa dữ liệu là Table. Một Table có số lượng cột (field) / dòng (record) không có sẳn (Nếu bạn thiết kế với lệnh Create table by entering data thì Access cũng cho bạn một table trắng 10 cột và 21 dòng). Thực ra cũng chả có ai thèm lệnh này. Nếu bạn tự thiết kế thì số field sẽ là số field do bạn thiết kế còn với bảng table mới nó chỉ cho bạn 1 record để bạn nhập dữ liệu và số record chỉ tăng mỗi lần 1 dòng cho bạn nhập dữ liệu mới, Số lượng cột (field) tốt đa của table là 255. Số lượng dòng không giới hạn miễn là không vượt 2G cho một tập tin mdb. Ước tính nếu tập tin mdb chỉ chứa một table với đầy đủ 255 field thi số lượng dòng có thể trên 6.000.000.
  2/Dữ liệu nguồn (bảng cơ sở) của excel bạn đặt bất kỳ vị trí nào trên bất kỳ worksheet nào cũng được, một worksheet có thể chứa nhiều bảng khác nhau, mối quan hệ của các bảng thông qua các hàm rất lỏng lẻo. Các định dạng dữ liệu trên các ô tùy ý. Bạn có thể viết các hàm ở bất kỳ ô nào. Các report cũng là những vùng nằm trên worksheet. Nói chung worksheet là một nồi lẩu chứa đủ thứ. Bạn muốn ăn miếng nào thì lại chỗ đó gắp ăn.
Trong Access, dữ liệu nguồn được đặt trong các table riêng lẻ với các định dạng, quy chuẩn rõ ràng. Mối quan hệ giữ các bảng (table) chặt chẻ thông qua các khóa chính (primary key) và các khóa ngoại (foreign key). Định dạng các field là duy nhất. Trong table chỉ chứa các dữ liệu của bạn đưa trực tiếp vào. Muốn viết hàm bạn phải xử lý thông qua các query. Bạn cũng có thể nhập dữ liệu thẳng vào table nhưng nếu xử lý công việc này bằng form thì thật tuyệt vời (đã hơn mấy cái form trong excel gấp trăm lần). Để xử lý in ấn báo cáo thì report cho phép bạn tạo tổng, gom nhóm, dàn trang, cắt trang … với nhiều tùy biến tuyệt vời chứ không phải cù cưa với Group and Outline của Excel
  3/Xử lý code trong excel cũng như access nhìn chung không khác nhau. Cũng đưa các bẫy code xử lý sự cố vào các event, cũng form open, button click…cũng i chang các cấu trúc if – then, do – loop, for – next... Điều khác hơn là quét virus thoải mái mà không hề sợ mất, sợ lỗi.
  Nói tóm lại. Nếu bạn đang làm công việc xử lý kế hoạch cho đơn vị với nhiều bảng biểu đơn giản nhưng liên tục bị thay đổi phương án do các quyết định bất thường của ban giám đốc. Bạn không cần vội đến với Access vì có khi trong việc này Access là một công cụ tệ hại so với Excel. Nhưng nếu bạn đang cần một cơ sở dữ liệu qui chuẩn có bài bản, số lượng row trong từng bảng lớn. Những công thức lồng hàm dài dằng dặt nhưng không thay đổi (như các ứng dụng quản lý kế toán, quản lý nhân sự…) Acess sẽ thể hiện một sự vượt trội mà Excel so với nó giống như một chú lùn đứng ngang đầu gối của nàng Bạch Tuyết.
Chúc bạn thành công.
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Noname , Xuân Thanh , paulsteigel , kieu manh , Che_Guevara


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Cần giúp đỡ về hàm if trong macro hvhvpdk 2 79 28-11-16, 01:04 PM
Bài mới nhất: hvhvpdk
  Hướng dẫn tạo Menu cho file Access bằng Macro Noname 44 31,805 10-11-16, 04:48 PM
Bài mới nhất: ongke0711
  hàm đổi số thành chữ trong access trico9.0 8 4,594 30-09-16, 03:09 PM
Bài mới nhất: ongke0711
  Hỏi đáp về Access cơ bản của thành viên mới... paulsteigel 8 286 11-07-16, 03:07 PM
Bài mới nhất: cpucloi
  Macro update du lieu tu dong tu excel vao table duynghiep89 1 297 04-01-16, 03:21 PM
Bài mới nhất: ongke0711

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ơ