2008-12-03 8 views
6

Wydaje się, że MS Access obsługuje null w kodzie, ale nie mogę na całe życie dowiedzieć się, jak wprowadzić wartość zerową bezpośrednio w tabeli. To jest denerwujące, ponieważ po wpisaniu w pole liczby, nie można jej nigdy usunąć/ustawić na wartość null. Normalnie zezwoliłoby to na ciągi o zerowej długości, ale program Access traktuje eksportowanie XML łańcucha znaków o wartości zerowej i zerowej w inny sposób. Wartość null eliminuje powiązany znacznik XML, a ciąg o zerowej długości wysyła pusty znacznik.W jaki sposób użytkownik wstawi pustą wartość w MS Access?

+0

W jaki sposób wprowadzasz dane do tabel? Uruchomiłem eksport XML z danymi, które wprowadziłem przy użyciu widoku tabeli, i pomyślnie dodałem i usunięto kolumnę zgodnie z sugestią. – LeppyR64

+0

Mówisz, że nie chcesz zezwalać na ciągi o zerowej długości? – LeppyR64

+0

Nie ma czegoś takiego jak "bezpośrednio w tabeli". Prawdopodobnie odnosisz się do formularza, który jest powiązany z zestawem rekordów, prawdopodobnie podanym w interfejsie użytkownika dowolnej wersji MS Access, z której korzystasz. Czy też "bezpośrednio" oznacza, że ​​używasz kodu SQL? – onedaywhen

Odpowiedz

0

OK, nie sądzę, że jest to problem łatwy do rozwiązania i moje pierwotne pytanie było trochę niecelne. Problem dotyczy nie tyle wartości null, ile ich dotyczy, podobnie jak sposobu, w jaki tabela została pierwotnie utworzona. Jeśli używasz pliku xsd do tworzenia tabel, które planujesz eksportować, coś dzieje się pod maską w programie Access, co powoduje, że te pola są traktowane trochę inaczej niż pola utworzone za pomocą edytorów.

Jedynym znalezionym rozwiązaniem było utworzenie nowego pola w tabeli, zmiana nazwy starego pola, skopiowanie danych ze starego pola do nowego pola i usunięcie starego pola.

Po wykonaniu tej czynności puste pola, które zawierały dane w jednym punkcie, nie są już uwzględniane w wynikach XML. Prawdopodobnie nie jest to najlepszy sposób na zrobienie tego i nadal nie wiem dokładnie, dlaczego tak się dzieje, ale przynajmniej uda mi się ominąć problem.

4

Czy mówisz o konieczności zrobienia tego w widoku arkusza danych? Jeśli potrzebne, aby to zrobić w kwerendzie aktualizacji, można to zrobić tak:

UPDATE test SET test.test = Null; 
+0

Tak, mówiłem o zrobieniu tego w widoku arkusza danych. – anopres

-2

Wystarczy usunąć wszystkie znaki w kolumnie i dostępu wstawi wartość null dla Ciebie, jeśli coumn na to pozwala.

+3

Nie, jeśli pole jest ustawione na zezwalanie na łańcuchy o zerowej długości. –

+0

@ David-W-Fenton dla mnie działa jak określono przez @ bang. Mam kolumnę 'NOT NULL varchar' w połączonej tabeli do SQL Server i' allow zero-length string = yes' w programie Access. Nadal, gdy usuwam tekst, nie wstawia on pustego łańcucha, zamiast tego podaje zerowy błąd wstawienia, że ​​kolumna nie jest wariantem typu. –

+0

Widzę, zachowanie jest inne dla tabel połączonych ODBC http://stackoverflow.com/a/22203637/2224701 –

0

Właściwie szukam sposobu, aby osoba prowadząca zajęcia zrobiła wpis bezpośrednio w tabeli. W MSSQL możesz po prostu nacisnąć ctrl-0 i wstawić wartość zerową. Usunięcie wszystkich znaków nie działa. Zamiast wartości pustej pozostaje pusty ciąg znaków. Nie są traktowane tak samo przez Access w celach eksportowych.

Myślę, że to, co zamierzam zakończyć, to utworzenie pliku xslt do użycia podczas eksportu, który eliminuje puste tagi. W ten sposób użytkownik nie może naprawdę odróżnić.

Na pewno dobrze byłoby móc wprowadzić wartość zerową.

+0

Jaką wersję programu Access używasz? Jak wspomniałem w moich komentarzach do pierwotnego postu, zaimplementowałem zachowanie, o które prosisz. – LeppyR64

+0

Używam programu Access 2007. – anopres

4

Czy ustawienie opcji "Zezwalaj na ciąg o zerowej długości" w pomocy definicji tabeli? Może wymusić, że pusty łańcuch będzie interpretowany jako NULL.

+2

Nie "może", ale WILL. Jeśli nie używasz ZLS jako znaczącej wartości, która różni się od Null, nie ma powodu, aby jakiekolwiek pole pozwalało na przechowywanie ZLS. Z pewnością użytkownik jest nieprzyjazny. –

1

naciśnij ctrl-0 i wstawiono zero.

+1

To nie działa z programem Access 2007. Jak to działa? – anopres

1

Usunięcie wszystkich znaków będzie działało, ale dostęp jest nieco zmienny. Naciśnięcie backspace lub delete nie zadziała, chyba że w polu znajdują się znaki. Uważam, że najlepiej jest wpisać kilka znaków, wybrać wszystko i nacisnąć przycisk "usuń", zmienić ostrość i zmienić rekord. Po tym wszystkim, jeśli uruchomisz zapytanie szukające "jest puste", to rekord zostanie znaleziony.

+0

Po sukcesie wprowadzono kilka znaków zgodnie z sugestią, a następnie za pomocą F2, aby wybrać, a następnie usunąć, ale to nie działa konsekwentnie –