2008-12-03 25 views
6

MS Access xuất hiện để hỗ trợ null trong mã, nhưng tôi không thể cho cuộc sống của tôi tìm ra cách để nhập một null trực tiếp trong một bảng. Điều này là buồn bởi vì một khi một lĩnh vực đã có một con số được nhập vào nó, nó không bao giờ có thể bị xóa/thiết lập để null. Thông thường, cho phép các chuỗi có độ dài bằng không sẽ quan tâm đến điều này, nhưng Access xử lý việc xuất XML của chuỗi rỗng và độ dài bằng không khác nhau. Một null loại bỏ thẻ XML được liên kết và một chuỗi có độ dài bằng không sẽ gửi một thẻ rỗng.Làm thế nào để người dùng chèn một null vào MS Access?

+0

Bạn nhập dữ liệu vào bảng như thế nào? Tôi đã chạy một XML xuất khẩu với dữ liệu mà tôi đã nhập bằng cách sử dụng một bảng xem, và nó thành công thêm và loại bỏ cột như bạn đề nghị. – LeppyR64

+0

Bạn có nói rằng bạn không muốn cho phép các chuỗi có độ dài bằng không? – LeppyR64

+0

Không có điều gì như "trực tiếp trong một bảng". Có lẽ bạn đang đề cập đến một biểu mẫu được ràng buộc với một bản ghi, có lẽ là một trong những cung cấp Trong giao diện người dùng của bất kỳ phiên bản của MS Access bạn đang sử dụng. Hay 'trực tiếp' có nghĩa là bạn đang sử dụng mã SQL? – onedaywhen

Trả lời

0

Ok, tôi không nghĩ đây là một vấn đề có thể giải quyết dễ dàng và câu hỏi ban đầu của tôi là một mục tiêu nhỏ. Vấn đề không phải là quá nhiều với null, mặc dù chúng có liên quan, giống như cách mà bảng được tạo ra ban đầu. Nếu bạn sử dụng tệp xsd để tạo bảng mà bạn định xuất, có điều gì đó xảy ra dưới mui xe trong Access khiến cho các trường đó được xử lý khác một chút so với trường được tạo với trình chỉnh sửa.

Giải pháp duy nhất tôi tìm thấy là tạo trường mới trong bảng, đổi tên trường cũ, sao chép dữ liệu từ trường cũ sang trường mới và xóa trường cũ.

Sau khi thực hiện điều đó, khi đó các trường trống có dữ liệu trong chúng tại một thời điểm sẽ không còn được bao gồm trong đầu ra XML. Nó có lẽ không phải là cách tốt nhất để làm điều này, và tôi vẫn không biết chính xác lý do tại sao nó xảy ra, nhưng ít nhất tôi có thể vượt qua vấn đề.

4

Bạn đang nói về việc cần làm điều đó trong dạng xem biểu dữ liệu? Nếu bạn cần phải làm điều đó trong một truy vấn cập nhật, bạn có thể làm điều đó như thế này:

UPDATE test SET test.test = Null; 
+0

Có, tôi đã nói về việc thực hiện nó trong chế độ xem biểu dữ liệu. – anopres

-2

Chỉ cần xóa tất cả các ký tự trong cột và truy cập sẽ chèn một giá trị null cho bạn nếu coumn cho phép nó.

+3

Không nếu trường được đặt để cho phép các chuỗi có độ dài bằng không. –

+0

@ David-W-Fenton cho tôi nó hoạt động như được chỉ định bởi @bang. Tôi có cột 'NOT NULL varchar' trong bảng được nối kết đến SQL Server &' cho phép các chuỗi không có độ dài = yes' trong Access. Tuy nhiên khi tôi xóa các văn bản nó không chèn chuỗi rỗng, thay vào đó cung cấp cho null chèn lỗi rằng cột không phải là loại biến thể. –

+0

Tôi hiểu, hành vi khác với các bảng được liên kết ODBC http://stackoverflow.com/a/22203637/2224701 –

0

Tôi thực sự đang tìm cách để một người cư trú thực hiện mục nhập trực tiếp trong bảng. Trong MSSQL bạn có thể chỉ cần nhấn ctrl-0 và một null được chèn vào. Xóa tất cả các ký tự dường như không hoạt động. Thay vì một null, bạn được trái với một chuỗi rỗng. Chúng không được xử lý giống nhau bởi Access cho mục đích xuất khẩu.

Tôi nghĩ điều tôi sắp làm là tạo tệp xslt để sử dụng trong quá trình xuất giúp loại bỏ các thẻ trống. Bằng cách đó người dùng không thể thực sự biết sự khác biệt.

Nó chắc chắn sẽ là tốt đẹp, tuy nhiên, để có thể khóa trong một null.

+0

Bạn đang sử dụng phiên bản Access nào? Như tôi đã đề cập trong các nhận xét của tôi về bài đăng gốc của bạn, tôi đã triển khai hành vi bạn đang yêu cầu. – LeppyR64

+0

Tôi đang chạy Access 2007. – anopres

4

Cài đặt tùy chọn "Cho phép độ dài không chuỗi" trong trợ giúp định nghĩa bảng? Nó có thể buộc một chuỗi rỗng được hiểu là NULL.

+2

Không phải là "có thể", nhưng S W. Trừ khi bạn đang sử dụng ZLS làm giá trị có ý nghĩa khác với Null, không có lý do gì cho bất kỳ trường nào cho phép lưu trữ ZLS. Đó chắc chắn là người dùng không thân thiện. –

1

nhấn ctrl-0 và một giá trị rỗng được chèn vào.

+1

Điều này không hoạt động với Access 2007. Bạn đã làm việc này như thế nào? – anopres

1

Xóa tất cả các ký tự sẽ hoạt động, nhưng Access là một chút thay đổi. Việc đánh dấu phím xóa hoặc xóa sẽ không hoạt động trừ khi có các ký tự trong trường. Tôi tìm thấy nó là tốt nhất để nhập một vài ký tự, chọn tất cả, và nhấn xóa, thay đổi tập trung và thay đổi kỷ lục. Sau khi tất cả các bên trên, nếu bạn chạy một truy vấn tìm kiếm "là null", bản ghi sẽ được tìm thấy.

+0

Đã có một số thành công khi nhập một vài ký tự như được đề xuất rồi sử dụng F2 để chọn tiếp theo là xóa, nhưng nó không hoạt động nhất quán –

Các vấn đề liên quan