Bạn sử dụng truy vấn cập nhật trong cơ sở dữ liệu Access để thêm, thay đổi hoặc xóa thông tin trong bản ghi hiện có. Bạn có thể xem truy vấn cập nhật dưới dạng một biểu mẫu hiệu quả của hộp thoại Tìm kiếm và Thay thế. Bạn không thể sử dụng truy vấn cập nhật để thêm bản ghi mới vào cơ sở dữ liệu hay xóa bản ghi khỏi cơ sở dữ liệu. Show
Để thêm các bản ghi mới vào một cơ sở dữ liệu mà bạn dùng truy vấn chắp thêm và xóa toàn bộ các bản ghi khỏi cơ sở dữ liệu mà bạn dùng truy vấn xóa. Trong bài viết nàyTổng quanSau đây là những điểm tương tự và khác biệt giữa Tìm kiếm và thay thế và truy vấn cập nhật: Giống như hộp thoại Tìm kiếm và thay thế, truy vấn cập nhật sẽ cho phép bạn xác định giá trị nào đang thay thế và giá trị mới là gì. Không giống như hộp thoại Tìm kiếm và thay thế, truy vấn cập nhật cho phép bạn:
Giới hạn đối với các trường có thể được cập nhậtKhông thể sử dụng truy vấn cập nhật để cập nhật dữ liệu trong các kiểu trường sau:
Dùng truy vấn cập nhậtTheo kinh nghiệm tốt nhất khi tạo một truy vấn cập nhật, đầu tiên hãy tạo một truy vấn chọn dùng để xác định các bản ghi mà bạn muốn cập nhật, sau đó chuyển truy vấn đó sang một truy vấn cập nhật mà bạn có thể chạy để cập nhật các bản ghi. Bằng cách chọn dữ liệu trước tiên, bạn có thể kiểm tra và đảm bảo rằng bạn đang cập nhật các bản ghi mà bạn muốn trước khi thay đổi bất kỳ dữ liệu thực tế nào. Mẹo: Sao lưu cơ sở dữ liệu trước khi bạn chạy truy vấn cập nhật. Bạn không thể hoàn tác kết quả của truy vấn cập nhật và sao lưu sẽ giúp đảm bảo rằng bạn có thể đảo ngược những thay đổi của mình nếu bạn đổi ý. Cách sao lưu cơ sở dữ liệu
Trong phần nàyBước 1: Tạo một truy vấn chọn để xác định các bản ghi định cập nhật
2/2/2020Tìm tất cả các bản ghi cho 2 tháng 2, 2020. Nếu cơ sở dữ liệu của bạn sử dụng tập ký tự đại diện ANSI-92, hãy bao quanh ngày bằng dấu nháy đơn (') thay vì dấu hiệu pound (#); Ví dụ: (' 2/2/2020 '). < Date() - 30 Dùng hàm Date để trả về tất cả các ngày tháng nhiều hơn 30 ngày về trước. Date() Dùng hàm Date để trả về tất cả các bản ghi chứa ngày hôm nay. Between Date() And DateAdd("M", 3, Date()) Dùng hàm Date và hàm DateAdd để trả về tất cả các bản ghi giữa ngày hôm nay và ba tháng kể từ ngày hôm nay. Is Null Trả về tất cả các bản ghi có chứa một giá trị null (trống hoặc chưa được xác định). Is Not Null Trả về tất cả bản ghi chứa giá trị. "" Trả về tất cả các bản ghi có chứa chuỗi độ dài bằng 0. Bạn dùng chuỗi độ dài bằng 0 khi cần thêm một giá trị vào trường bắt buộc nhưng bạn không biết giá trị thực là gì. Ví dụ: Một trường có thể yêu cầu số fax nhưng một số khách hàng của bạn có thể không có máy fax. Trong trường hợp đó, bạn hãy nhập một cụm dấu ngoặc kép không kèm theo dấu cách giữa chúng ("") thay vì số.
Bước 2: Cập nhật bản ghi
8/10/20Trong trường ngày/giờ, thay đổi giá trị ngày thành 10/08/2017. Yes Trong trường Yes/No, đổi giá trị No thành Yes. "PN" & [PartNumber] Thêm "PN" vào đầu mỗi số bộ phận đã xác định. [UnitPrice] * [Quantity] Nhân giá trị trong các trường có tên là UnitPrice và Quantity. [Freight] * 1,5 Tăng các giá trị trong trường có tên Freight thêm 50 phần trăm. Hàm ("[số _ lượng] * [đơn _ giá]", "Chi tiết đơn hàng", "[ProductID] =" & [ProductID]) Nếu các giá trị của ProductID trong bảng hiện tại khớp với giá trị của ProductID trong bảng có tên là Order Details, biểu thức này cập nhật tổng doanh số bán hàng bằng cách nhân các giá trị trong trường có tên Quantity với giá trị trong trường UnitPrice. Biểu thức dùng hàm DSum vì nó có thể áp dụng cho nhiều bảng và nhiều trường bảng. Right([ShipPostalCode], 5) Rút ngắn (xóa) các ký tự ngoài cùng bên trái trong mỗi chuỗi văn bản hoặc số và để lại 5 ký tự ngoài cùng bên phải. IIf(([UnitPrice]), 0, [UnitPrice]) Đổi giá trị null (không rõ hoặc không xác định) thành giá trị không (0) trong trường có tên là UnitPrice.
Cập nhật dữ liệu từ bảng này sang bảng khácKhi bạn cần cập nhật dữ liệu từ bảng này sang bảng khác, hãy chú ý quy tắc sau: các kiểu dữ liệu trong các trường nguồn và đích phải trùng khớp hoặc tương thích với nhau. Hơn nữa, khi bạn cập nhật dữ liệu từ bảng này sang bảng khác và dùng các kiểu dữ liệu tương thích thay vì kiểu dữ liệu trùng khớp, Access sẽ chuyển đổi các kiểu dữ liệu của các trường đó trong bảng đích. Do vậy, một số dữ liệu trong các trường đích có thể bị cắt cụt (xóa). Phần sẽ liệt kê các cách mà bạn có thể và không thể chuyển đổi kiểu dữ liệu. Bảng trong phần này cũng giải thích khi nào chuyển đổi một kiểu dữ liệu có thể thay đổi hoặc loại bỏ một số hoặc tất cả các dữ liệu trong một trường và có thể loại bỏ dữ liệu nào. Quy trình cập nhật dữ liệu từ bảng này sang bảng khác sẽ bao gồm các bước chính sau:
Các bước trong phần này giả định dùng hai bảng tương tự. Trong ví dụ này, bảng Clients nằm trong cơ sở dữ liệu mà bạn được thừa hưởng và có chứa nhiều dữ liệu cập nhật hơn bảng Customers. Bạn có thể nhận thấy rằng một số tên và địa chỉ của người quản lý đã được thay đổi. Vì vậy, bạn quyết định cập nhật bảng Customers với dữ liệu từ bảng Clients. Bảng ClientsClient ID Tên Địa chỉ Thành phố Bang/Tỉnh Mã bưu điện Quốc gia/Khu vực Điện thoại Liên hệ 1 Bảo tàng Khoa học Baldwin 1 Main St. New York NY 12345 Hoa Kỳ (505) 555-2122 Josh Barnhill 2 Blue Yonder Airlines 52 1st St. Boston MA 23456 Hoa Kỳ (104) 555-2123 Waleed Heloo 3 Coho Winery 3122 75th Ave. S.W. Seattle WA 34567 Hoa Kỳ (206) 555-2124 Pica Guido 4 Contoso Pharmaceuticals 1 Contoso Blvd. London Bucks NS1 EW2 Anh (171) 555-2125 Zoltan Harmuth 5 Fourth Coffee Calle Smith 2 Thành phố Mê-xi-cô 56789 Mexico (7) 555-2126 Julian Price 6 Consolidated Messenger 3123 75th St. S. Seattle WA 34567 Hoa Kỳ (206) 555-2125 Miles Reid 7 Viện Thiết kế Đồ họa 1587 Office Pkwy Tampa FL 87654 Hoa Kỳ (916) 555-2128 Tzipi Butnaru 8 Litware, Inc. 3 Microsoft Way Portland HOẶC 31415 Hoa Kỳ (503) 555-2129 Brian Smith 9 Tailspin Toys 4 Microsoft Way Portland HOẶC 31415 Hoa Kỳ (503) 555-2233 Phil Gibbins Bảng CustomersCustomer ID Tên Địa chỉ Thành phố Bang/Tỉnh Mã bưu điện Quốc gia hoặc Khu vực Điện thoại Người quản lý 1 Bảo tàng Khoa học Baldwin 1 Main St. New York NY 12345 Hoa Kỳ (505) 555-2122 Steve Riley 2 Blue Yonder Airlines 52 1st St. Boston MA 23456 Hoa Kỳ (104) 555-2123 Waleed Heloo 3 Coho Winery 3122 75th Ave. S.W. Seattle WA 34567 Hoa Kỳ (206) 555-2124 Pica Guido 4 Contoso Pharmaceuticals 1 Contoso Blvd. London Bucks NS1 EW2 Anh (171) 555-2125 Zoltan Harmuth 5 Fourth Coffee Calle Huevos 134 Thành phố Mê-xi-cô 56789 Mexico (7) 555-2126 Julian Price 6 Consolidated Messenger 3123 75th St. S. Seattle WA 34567 Hoa Kỳ (206) 555-2125 Christine Hughes 7 Viện Thiết kế Đồ họa 67 Big St. Tampa FL 87654 Hoa Kỳ (916) 555-2128 Dana Birkby 8 Litware, Inc. 3 Microsoft Way Portland HOẶC 31415 Hoa Kỳ (503) 555-2129 Jesper Aaberg 9 Tailspin Toys 4 Microsoft Way Portland HOẶC 31415 Hoa Kỳ (503) 555-2233 Phil Gibbins Khi bạn tiếp tục, hãy nhớ rằng mặc dù các kiểu dữ liệu của mỗi trường bảng không cần phải trùng khớp nhưng chúng phải tương thích. Access phải có thể chuyển đổi dữ liệu trong bảng nguồn thành một kiểu dữ liệu mà bảng đích có thể dùng. Trong một vài trường hợp, quy trình chuyển đổi có thể xóa một số dữ liệu. Để biết thêm thông tin về những hạn chế khi chuyển đổi kiểu dữ liệu, hãy xem phần . Tạo và chạy truy vấn cập nhậtLưu ý: Các bước sau giả định dùng hai bảng mẫu trước đó. Bạn có thể điều chỉnh các bước cho phù hợp với dữ liệu của bạn.
Hạn chế khi chuyển đổi kiểu dữ liệuBảng sau liệt kê các kiểu dữ liệu mà Access cung cấp, giải thích bất kỳ giới hạn nào khi chuyển đổi kiểu dữ liệu và mô tả ngắn gọn bất kỳ tình trạng mất dữ liệu nào có thể xảy ra trong suốt quá trình chuyển đổi. Chuyển thành kiểu này Từ kiểu này Thay đổi hoặc hạn chế Văn bản Bản ghi nhớ Access xóa tất cả trừ 255 ký tự đầu tiên. Số Không có giới hạn. Ngày/Giờ Không có giới hạn. Tiền tệ Không có giới hạn. Số Tự động Không có giới hạn. Có/Không Giá trị 1 (Yes trong trường Yes/No) chuyển thành Yes. Giá trị 0 (No trong trường Yes/No) chuyển thành No. Siêu kết nối Access cắt cụt các nối kết dài hơn 255 ký tự. Bản ghi nhớ Văn bản Không có giới hạn. Số Không có giới hạn. Ngày/Giờ Không có giới hạn. Tiền tệ Không có giới hạn. Số Tự động Không có giới hạn. Có/Không Giá trị 1 (Yes trong trường Yes/No) chuyển thành Yes. Giá trị 0 (No trong trường Yes/No) chuyển thành No. Siêu kết nối Không có giới hạn. Số Văn bản Văn bản phải bao gồm chữ số, tiền tệ và dấu tách thập phân. Số lượng ký tự trong trường Văn bản phải nằm trong giới hạn kích cỡ dành cho trường Số. Bản ghi nhớ Trường Bản ghi nhớ chỉ được chứa văn bản và tiền tệ hợp lệ và dấu tách thập phân. Số lượng ký tự trong trường Bản ghi nhớ phải nằm trong giới hạn kích cỡ dành cho trường Number. Number nhưng với kích cỡ và độ chuẩn trường khác nhau Các giá trị không được lớn hơn hoặc nhỏ hơn giá trị mà trường mới có thể lưu trữ. Thay đổi độ chuẩn xác có thể khiến cho Access làm tròn một vài giá trị. Ngày/Giờ Các ngày mà bạn có thể chuyển đổi tùy thuộc vào kích cỡ của trường số. Hãy nhớ rằng Access lưu trữ tất cả các ngày tháng dưới dạng các ngày theo thứ tự và lưu trữ các giá trị ngày làm số nguyên động chính xác kép. Access sử dụng ngày 30 tháng 12 năm 1899 làm ngày số 0. Những ngày nằm ngoài phạm vi ngày 18 tháng 4 năm 1899 và ngày 11 tháng 9 năm 1900 sẽ vượt quá kích cỡ của trường Byte. Những ngày nằm ngoài phạm vi ngày 13 tháng 4 năm 1810 và ngày 16 tháng 9 năm 1989 sẽ vượt quá kích cỡ của trường Integer. Để cho phép tất cả các ngày có thể tạo, hãy đặt thuộc tính Kích cỡ Trường của trường Số thành Long Integer hoặc lớn hơn. Tiền tệ Các giá trị không được vượt quá (hoặc thấp dưới) giới hạn kích cỡ của trường. Ví dụ, bạn có thể chuyển một trường Tiền tệ thành một trường Integer chi khi những giá trị đó lớn hơn 255 và không vượt quá 32.767. Số Tự động Các giá trị phải nằm trong giới hạn kích cỡ của trường. Có/Không Giá trị "Yes" chuyển thành -1. Giá trị "No" chuyển thành 0. Ngày/Giờ Văn bản Văn bản gốc phải là ngày hoặc ngày/giờ có thể nhận diện được. Ví dụ: ngày 18 tháng 1-2020. Bản ghi nhớ Văn bản gốc phải là ngày hoặc ngày/giờ có thể nhận diện được. Ví dụ: ngày 18 tháng 1-2020. Số Giá trị phải nằm trong khoảng -657.434 và 2.958.465,99998843. Tiền tệ Giá trị phải nằm trong khoảng -$657.434 và $2.958.465,9999. Số Tự động Giá trị phải lớn hơn -657.434 và nhỏ hơn 2.958.466. Có/Không Giá trị -1 (Yes) chuyển thành ngày 29 tháng 12 năm 1899. Giá trị 0 (No) chuyển thành nửa đêm (0:00). Tiền tệ Văn bản Văn bản phải bao gồm chữ số và dấu tách hợp lệ. Bản ghi nhớ Văn bản phải bao gồm chữ số và dấu tách hợp lệ. Số Không có giới hạn. Ngày/Giờ Không có giới hạn nhưng Access không làm tròn giá trị Số Tự động Không có giới hạn. Có/Không Giá trị -1 (Yes) chuyển thành $1 và giá trị 0 (No) chuyển thành 0$. Số Tự động Văn bản Không được phép nếu trường Tự động Đánh số được dùng làm khóa chính. Bản ghi nhớ Không được phép nếu trường Tự động Đánh số được dùng làm khóa chính. Số Không được phép nếu trường Tự động Đánh số được dùng làm khóa chính. Ngày/Giờ Không được phép nếu trường Tự động Đánh số được dùng làm khóa chính. Tiền tệ Không được phép nếu trường Tự động Đánh số được dùng làm khóa chính. Có/Không Không được phép nếu trường Tự động Đánh số được dùng làm khóa chính. Có/Không Văn bản Văn bản gốc chỉ được bao gồm Yes, No, True, False, On hoặc Off. Bản ghi nhớ Văn bản gốc chỉ được bao gồm Yes, No, True, False, On hoặc Off. Số Số 0 hoặc Null chuyển thành No, tất cả các giá trị khác chuyển thành Yes. Ngày/Giờ Null hoặc 0:00:00 chuyển thành No, tất cả các giá trị khác chuyển thành Yes. Tiền tệ Không hoặc Null chuyển thành No, tất cả các giá trị khác chuyển thành Yes. Số Tự động Tất cả các giá trị chuyển thành Yes. Siêu kết nối Văn bản Nếu văn bản gốc chứa một địa chỉ Web hợp lệ, chẳng hạn như adatum.com, www.adatum.com hoặc http://www.adatum.com , Access sẽ chuyển văn bản thành siêu kết nối. Access cố gắng chuyển đổi các giá trị khác, nghĩa là bạn sẽ thấy văn bản được gạch dưới và con trỏ thay đổi khi bạn trỏ vào nối kết nhưng các nối kết đều không hoạt động. Văn bản có thể chứa bất kỳ giao thức Web hợp lệ nào, bao gồm http://, gopher://, telnet://, ftp://, and wais://. Bản ghi nhớ Xem mục nhập trước. Các giới hạn tương tự được áp dụng. Số Không được phép khi trường Number là một phần của mối quan hệ. Nếu giá trị gốc có dạng địa chỉ Giao thức Internet (IP) hợp lệ (bốn bộ ba số được phân tách bằng dấu chấm: nnn.nnn.nnn.nnn) và các số lại vô tình trùng với địa chỉ Web, việc chuyển đổi sẽ tạo ra một nối kết hợp lệ. Nếu không, Access sẽ nối http:// vào đầu mỗi giá trị và nối kết được tạo ra không hợp lệ. Ngày/Giờ Access nối http:// vào đầu mỗi địa chỉ nhưng các nối kết được tạo ra gần như không hoạt động được. Tiền tệ Access nối http:// vào đầu mỗi giá trị, nhưng giống như ngày, các nối kết được tạo ra gần như không hoạt động được. Số Tự động Không được phép khi trường Tự động Đánh số là một phần của mối quan hệ. Access nối http:// vào đầu mỗi giá trị nhưng các nối kết được tạo ra gần như không hoạt động được. Có/Không Access chuyển tất cả các giá trị Yes thành -1 và tất cả các giá trị No thành 0 và nối http:// vào đầu mỗi giá trị. Các nối kết được tạo ra không hoạt động được. Ngăn không cho Chế độ Tắt chặn truy vấnNếu bạn tìm cách chạy truy vấn hành động và dường như không có vấn đề gì xảy ra, hãy kiểm tra thanh trạng thái của Access để xem thông báo sau đây: Chế độ Tắt đã chặn hành động hoặc sự kiện này. Theo mặc định, Access tắt tất cả các truy vấn hành động (cập nhật, nối, xóa hoặc thực hiện các truy vấn bảng) trừ khi cơ sở dữ liệu của bạn nằm ở vị trí đáng tin cậy hoặc cơ sở dữ liệu được ký và đáng tin cậy. Nếu bạn không thực hiện bất kỳ hành động nào trong số những hành động này, bạn vẫn có thể bật truy vấn cho phiên cơ sở dữ liệu hiện tại bằng cách bấm Bật Nội dung trên Thanh Thông báo. Phiên bản SQL: câu lệnh UPDATENếu bạn có thể làm việc với SQL, bạn cũng có thể viết câu lệnh UPDATE bằng cách dùng dạng xem SQL. Để dùng dạng xem SQL, hãy tạo một truy vấn trống mới rồi sau đó chuyển dạng xem SQL. Phần này trình bày cú pháp và ví dụ về một câu lệnh UPDATE. Cú phápUPDATE bảng SET giá trị mới WHERE tiêu chí; Câu lệnh UPDATE có các phần sau: Phần Mô tả bảng Tên của bảng chứa dữ liệu mà bạn muốn sửa đổi. giá_trị_mới Một biểu thức xác định giá trị định chèn vào một trường cụ thể trong các bản ghi cập nhật. tiêu chí Một biểu thức xác định sẽ cập nhật bản ghi nào. Chỉ có các bản ghi thỏa mãn biểu thức mới được cập nhật. Chú thíchCâu lệnh UPDATE đặc biệt hữu ích khi bạn muốn thay đổi nhiều bản ghi hoặc khi các bản ghi mà bạn muốn thay đổi nằm trong nhiều bảng. Bạn có thể thay đổi một vài trường cùng lúc. Ví dụ sau tăng giá trị Order Amount 10 phần trăm và các giá trị Freight lên 3 phần trăm đối với người chuyển hàng ở United Kingdom: |