2008-12-03 10 views
6

MS Access parece ser compatible con valores nulos en el código, pero no puedo imaginar cómo ingresar un nulo directamente en una tabla. Esto es enloquecedor porque una vez que un campo ha ingresado una cifra, nunca puede ser borrado/configurado como nulo. Normalmente, permitir cadenas de longitud cero se encargaría de esto, pero Access trata la exportación XML de una cadena nula y una cadena de longitud cero de manera diferente. Un nulo elimina la etiqueta XML asociada y una cadena de longitud cero envía una etiqueta vacía.¿Cómo inserta un usuario un nulo en MS Access?

+0

¿Cómo está ingresando los datos en las tablas? He ejecutado una exportación XML con datos que he ingresado usando una vista de tabla, y agrega y elimina la columna como usted sugirió. – LeppyR64

+0

¿Estás diciendo que no quieres permitir cadenas de longitud cero? – LeppyR64

+0

No existe tal cosa como "directamente en una mesa". Probablemente se esté refiriendo a un formulario que está vinculado a un conjunto de registros, probablemente el proporcionado en la interfaz de usuario de cualquier versión de MS Access que esté utilizando. ¿O significa "directamente" que está utilizando código SQL? – onedaywhen

Respuesta

0

Ok, no creo que este sea un problema fácil de resolver y mi pregunta original estaba un poco fuera de foco. El problema no es tanto con nulos, aunque están involucrados, como con la manera en que se creó originalmente la tabla. Si usa un archivo xsd para crear las tablas que planea exportar, sucede algo bajo el capó en Access que hace que esos campos sean tratados de forma un poco diferente que los campos creados con los editores.

La única solución que encontré fue crear un nuevo campo en la tabla, cambiar el nombre del campo anterior, copiar los datos del campo anterior al nuevo campo y eliminar el campo anterior.

Después de hacer eso, los campos en blanco que tenían datos en ellos en un punto ya no están incluidos en la salida XML. Probablemente no sea la mejor manera de hacerlo, y todavía no sé exactamente por qué está sucediendo, pero al menos puedo superar el problema.

4

¿Estás hablando de tener que hacerlo en la vista Hoja de datos? Si usted necesita para hacerlo en una consulta de actualización, puede hacerlo de esta manera:

UPDATE test SET test.test = Null; 
+0

Sí, estaba hablando de hacerlo en la vista de la hoja de datos. – anopres

-2

acaba de eliminar todos los caracteres de la columna y el acceso será insertar un valor nulo para usted si el coumn lo permite.

+3

No si el campo está configurado para permitir cadenas de longitud cero. –

+0

@ David-W-Fenton para mí funciona como lo especifica @bang. Tengo la columna 'NOT NULL varchar' en una tabla vinculada a SQL Server &' allow zero-length strings = yes' en Access. Sin embargo, cuando elimino el texto, no inserta la cadena vacía, en cambio da error de inserción nulo de que la columna no es de tipo variante. –

+0

Veo, el comportamiento es diferente para las tablas vinculadas de ODBC http://stackoverflow.com/a/22203637/2224701 –

0

Estoy buscando una manera para que un lego haga la entrada directamente en una tabla. En MSSQL puede simplemente presionar ctrl-0 y se inserta un nulo. Eliminar todos los caracteres no parece funcionar. En lugar de un nulo, te queda una cadena vacía. A Access no se les trata de la misma manera con fines de exportación.

Creo que lo que voy a terminar haciendo es crear un archivo xslt para usar durante la exportación que elimina las etiquetas vacías. De esa forma, el usuario no puede notar la diferencia.

Sin embargo, sería bueno poder ingresar un nulo.

+0

¿Qué versión de Access está usando? Como mencioné en mis comentarios en su publicación original, he implementado el comportamiento que está solicitando. – LeppyR64

+0

Estoy ejecutando Access 2007. – anopres

4

¿Ayuda la configuración de la opción "Permitir cadena de longitud cero" en la definición de tabla? Puede forzar que una cadena vacía se interprete como NULL.

+2

No "puede", pero lo hará. A menos que esté usando ZLS como un valor significativo que es distinto de nulo, no hay razón para que ningún campo permita el almacenamiento de ZLS. Ciertamente es poco amigable para el usuario. –

1

pulse ctrl-0 y se inserta un nulo.

+1

Esto no funciona con Access 2007. ¿Cómo hiciste que esto funcionara? – anopres

1

Eliminar todos los caracteres funcionará, pero el acceso es un poco voluble. Pulsar retroceso o eliminar no funcionará a menos que haya caracteres en el campo. Encuentro que es mejor ingresar algunos caracteres, seleccionar todo y presionar eliminar, cambiar el enfoque y cambiar el registro. Después de todo lo anterior, si ejecuta una consulta que busca "es nulo", se encontrará el registro.

+0

Tuve cierto éxito al ingresar algunos caracteres como se sugirió luego usar F2 para seleccionar seguido de eliminar, pero no funciona consistentemente –