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 Table. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Table. Hiển thị tất cả bài đăng
15/7/12
24/4/11
Sử dụng trường Autonumber cho hiệu quả
Có rất nhiều bạn thắc mắc về autonumber, thắc mắc tại sao nó không tăng liên tục khi mình xóa 1-2 record...Sau đây xin giới thiệu 1 bài viết của nick huudung, trang fithou.net
AutoNumber, đây thực chất là 1 kiểu số có kích thước tương đương với Long Integer (hoặc Replication ID).
Autonumber khác với kiểu Number thông thường ở chỗ: giá trị của trường này được Access tự động sinh ra với mỗi bản ghi mới. cách thức sinh giá trị mới có thể là tăng dần (increment) hoặc ngẫu nhiên (random).
Mỗi khi ta sử dụng 1 giá trị của AutoNumber thì giá trị đó sẽ không bao giờ được sử dụng lại nữa. Điều này có lí do của nó: người ta thường dùng AutoNumber cho những trường khóa chính mà không cần quan tâm tới giá trị của nó, chỉ cần nó đảm bảo tính duy nhất --> muốn duy nhất thì những gì đã dùng sẽ không được dùng nữa.
AutoNumber, đây thực chất là 1 kiểu số có kích thước tương đương với Long Integer (hoặc Replication ID).
Autonumber khác với kiểu Number thông thường ở chỗ: giá trị của trường này được Access tự động sinh ra với mỗi bản ghi mới. cách thức sinh giá trị mới có thể là tăng dần (increment) hoặc ngẫu nhiên (random).
Mỗi khi ta sử dụng 1 giá trị của AutoNumber thì giá trị đó sẽ không bao giờ được sử dụng lại nữa. Điều này có lí do của nó: người ta thường dùng AutoNumber cho những trường khóa chính mà không cần quan tâm tới giá trị của nó, chỉ cần nó đảm bảo tính duy nhất --> muốn duy nhất thì những gì đã dùng sẽ không được dùng nữa.
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]](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiONOaZ-zjqipvpnZBv5ksq8UN1upbLgopMkkPhCGzkAiiMeXrlTDYI6qtjyWhNxmojwOBAOh6Zj5F6rItpJgvIKmb9j1mDCxINZmNCobvAO8mIWkTWBWt0XryTdpg0ofqbT0F_vx4j0S0/s320/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:
Code 2: Dùng Relink table lại
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:
Sự kiện click của cmdOpen, nhập vào như sau:
![[Image: chonfiledata.png]](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_u5Mjeu5AZYRiSL_240vgFAA1BAcrDaZQyB-Om1jX8UV3IuBHl7tCksplNgC1wa7TCkomRRC4aYEBynLwD7VhzuYtbiloEf_RfY79FurHwz4CQJd3HA2fKKCM8Y9Setj4FHoQj-5YwpXT2eQmpo=s0-d)
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
Đá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).
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 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 IfEnd With
End Function
Code 2: Dùng Relink table lại
Sub LinkTable(T As String, path 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", path, acTable, T, T
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
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
15/12/09
Kiểm tra sự tồn tại của Fields trong table
Hỏi : tôi có 1 table là: tblHOSO; tôi muốn dùng code để kiểm tra xem trong tblHOSO có field KIEMTRA không?
11/12/09
Xóa Đối tượng Access từ 1 File Access Khác
Hỏi: Làm thế nào để xóa các Object (table, query, form, report) của DBLUU từ một nút lệnh trên form của DBSYS.
Thêm Field vào 1 table trong file Access khác
Hỏi: Tôi có 2 file DB, một file lưu dữ liệu DBLUU.mdb, một file chương trình DBSYS.mdb. Trong file DBLUU.MDB có 1 tblLuu.
Làm Sao code từ một nút lệnh trên FORM tại DBSYS.mdb có thể thêm field vào tblLuu trong DBLUU.mdb
Làm Sao code từ một nút lệnh trên FORM tại DBSYS.mdb có thể thêm field vào tblLuu trong DBLUU.mdb
9/12/09
Xóa các bản ghi bị trùng trong bảng của bạn?
Trên thực tế Access không cho phép bạn xóa các bản ghi bị trùng, nhưng bạn có thể thực hiện được tác vụ trên bằng cách tạo một table mới từ table cũ với các bản ghi không bị trùng sau đó xóa table cũ và đổi tên table mới tạo thành table cũ.
Ẩn/ Hiện các đối tượng trong Access
Show / Hide Object ( tables, querys, forms, reports )
Question : Làm thế nào để có thể ẩn nhiều abngr cùng lúc.Hay là ta phải chọn từng bảng rôi ẩn.Vì trong CSDL có nhiều bảng mà ẩn từng cái bảng một thì rất là lâu.Tưng tụ với Form hay Report
Question : Làm thế nào để có thể ẩn nhiều abngr cùng lúc.Hay là ta phải chọn từng bảng rôi ẩn.Vì trong CSDL có nhiều bảng mà ẩn từng cái bảng một thì rất là lâu.Tưng tụ với Form hay Report
7/12/09
Import Dữ Liệu Từ Excel Vào Access
Để nhập mới nội dung một table (trong Access) từ một tập tin Excel, ta có thể dùng một trong những cách sau đây:
4/12/09
Link table từ MDB có password
TransferDatabase to open password protect database
Question : Tôi xây dựng chương trình có 2 file: 1 file để thực hiện các thao tác trên FORM và xử lý thông tin (DBSYS.mdb) và 1 file để lưu trữ dữ liệu(DBDATA.mdb)
- Để cho người khác không thể vào được các dữ liệu lưu trữ, tôi đặt pass vào file DBDATA.
- Tôi tạo biến về đường dẫn để có thể tùy ý người sử dụng thay đổi thư mục của chương trình. Khi thay đổi thư mục của chương trình, thì sẽ tự tạo lại các link đến các table trong DBDATA.
Vấn đề là: để thực hiện các lệnh link thì phải gõ pass. Nhưng mỗi một lệnh linktable, lại phải gõ pass một lần.
Các PRO xem có cách nào giúp tôi: đặt sẵn và dùng VBA tại file chính (DBSYS) có thể link table từ DBDATA mà không cần phải gõ pass không (chỉ có sử dụng lệnh trong DBSYS mới không yêu cầu pass, còn các hình thức khác đều yêu cầu pass)
Question : Tôi xây dựng chương trình có 2 file: 1 file để thực hiện các thao tác trên FORM và xử lý thông tin (DBSYS.mdb) và 1 file để lưu trữ dữ liệu(DBDATA.mdb)
- Để cho người khác không thể vào được các dữ liệu lưu trữ, tôi đặt pass vào file DBDATA.
- Tôi tạo biến về đường dẫn để có thể tùy ý người sử dụng thay đổi thư mục của chương trình. Khi thay đổi thư mục của chương trình, thì sẽ tự tạo lại các link đến các table trong DBDATA.
Vấn đề là: để thực hiện các lệnh link thì phải gõ pass. Nhưng mỗi một lệnh linktable, lại phải gõ pass một lần.
Các PRO xem có cách nào giúp tôi: đặt sẵn và dùng VBA tại file chính (DBSYS) có thể link table từ DBDATA mà không cần phải gõ pass không (chỉ có sử dụng lệnh trong DBSYS mới không yêu cầu pass, còn các hình thức khác đều yêu cầu pass)
30/11/09
Tự động tạo CSDL Access bằng VBA
Hôm trước tôi giới thiệu các bạn cách tạo 1 file MDB mớiđể xuất dữ liệu ra đó. Hôm nay xin giới thiệu các bạn cách tạo 1 file Access mới hoàn toàn, đồng thời thông qua VBA để tạo table cùng các field trực tiếp trên đó!
22/11/09
Tạo file Access mới và xuất dữ liệu ra đó
Đoạn code sau cho phép bạn tạo 1 file MDB mới trong cùng 1 thư mục với chương trình
14/11/09
Code kiểm tra sự tồn tại của table
Public Function KIEMTRA(TableName As String)As Boolean
' Khai báo biến cục bộ truy xuất đến Database Access
Dim DB As Database
' Biến N lưu trữ số Tables của Database (dùng Byte là đủ)
Dim N As Byte
' Biến i để duyệt qua từng Table
Dim i As Byte
' Khởi tạo biến DB
Set DB = DBEngine.Workspaces(0).Databases(0)
' Lấy số Tables có trong Database
n = DB.TableDefs.Count
' Duyệt tuần tự từng Table
For i = 0 To n - 1
' Nếu tên Table thứ i bằng với tên Table muốn tìm
If DB.TableDefs(i).Name = TableName Then
' Hàm trả về giá trị TRUE
KIEMTRA = True
' Thoát khỏi hàm
Exit Function
End If
' Chuyển qua Table kế
Next i
' Nếu ra khỏi vòng lặp mà vẫn chưa tìm thấy thì hàm trả về False
KIEMTRA = False
End Function____________________________________________________________________________________Thảo luận thêm tại: http://thuthuataccess.co.cc/forum
13/11/09
Xoá các table theo điều kiện trong Access
Hỏi: Tromg file MDB của em có nhiều table để lưu dữ liệu của các năm khác nhau. EM chỉ muốn lưu 3 năm gần nhất thôi. Ví dụ: năm nay là 2009, em chỉ cần lưu dữ liệu của 2007, 2008, 2009; năm tới 2010: chỉ lưu 2008, 2009, 2010.
Em muốn tự khi lưu dữ liệu ngày đầu tiên của năm mới, thì table từ 3 năm về trước sẽ tự động bị xoá đi. Cụ thể: ngày 01/01/2010, em lưu dữ liệu thì table lưu dữ liệu của 2007 bị xoá đi.
Đồng thời, em muốn xoá table với điều kiện nó tồn tại: Cụ thể: câu lệnh để thực hiện:
Nếu tableA có trong MDB thì xoá tableA
Các bác cho em xin đoạn code nhé
Em muốn tự khi lưu dữ liệu ngày đầu tiên của năm mới, thì table từ 3 năm về trước sẽ tự động bị xoá đi. Cụ thể: ngày 01/01/2010, em lưu dữ liệu thì table lưu dữ liệu của 2007 bị xoá đi.
Đồng thời, em muốn xoá table với điều kiện nó tồn tại: Cụ thể: câu lệnh để thực hiện:
Nếu tableA có trong MDB thì xoá tableA
Các bác cho em xin đoạn code nhé
10/11/09
Tự động liên kết các table
Tôi có một cơ sở dữ liệu Access và thực hiện split thành backend
File QLVB đặt trong thư mục Run (thư mục Run nằm trong thư mục QLVB) chứa form, repost, ...
File QLVB_en đặt trong thư mục Data (thư mục Data trong thư mục QLVB) chứa các table
Khi tôi di chuyển (hoặc đồng bộ) thư mục QLVB (từ USB vào máy và ngược lại) là các liên kết của các table không còn nữa.
Bạn nào rành về Access có thể viết đoạn mã giúp tôi tự động nối lại các liên kết đó không.
File QLVB đặt trong thư mục Run (thư mục Run nằm trong thư mục QLVB) chứa form, repost, ...
File QLVB_en đặt trong thư mục Data (thư mục Data trong thư mục QLVB) chứa các table
Khi tôi di chuyển (hoặc đồng bộ) thư mục QLVB (từ USB vào máy và ngược lại) là các liên kết của các table không còn nữa.
Bạn nào rành về Access có thể viết đoạn mã giúp tôi tự động nối lại các liên kết đó không.
Phục Hồi Table lỡ xóa
Trả lời: Ý tưởng đặt ra là ta sẽ tìm lại table bi xóa trong những file ~templete (được tạo ra khi access dang chạy). Bạn tạo một command button phuchoi gọi lệnh UndeleteTable () như sau nhé:
Private sub phuchoi_click ()
Call UnDeleteTable ()
End sub
Private sub phuchoi_click ()
Call UnDeleteTable ()
End sub
Đăng ký:
Bài đăng (Atom)