2008-09-18 25 views
6

Tenemos una aplicación de formularios Dot net Win que tiene pocas formas con más de 40 campos para llenar.¿Cómo diseñar para guardar datos incompletos ingresados ​​por el usuario?

Cuando el usuario rellena decir 25 campos y luego se da cuenta de que necesita obtener algunos datos más antes de que pueda guardar la información o acaso entrar todos los datos, pero su es un error de validación de negocios en los que necesita el contacto de otra persona antes de corregir.

En tales escenarios, le gustaría guardar los datos incompletos o incorrectos en algún almacenamiento temporal de datos y recuperarlos más tarde cuando tenga los datos para completar la operación de guardado.

Háganme saber cuál sería la mejor manera de implementar esto?

Él pocas opciones que hemos considerado:

1) crear binario XML y ahorrar en su máquina local (Pero, el usuario puede necesitar de alguna otra máquina)

2) Crear tablas duplicadas para almacenar inválida datos (Pero, creo que los datos no son válidos nunca deben ser parte de mi base de datos)

Respuesta

6

Puede conservar la forma parcial en XML y guardar el XML en una tabla de base de datos que también tenga el ID de usuario y el identificador de formulario. Cuando el usuario presente el formulario en la máquina original o en una máquina diferente, el sistema detectará los datos parciales y solicitará al usuario que los vuelva a cargar/ignorar/eliminar. Solo necesitaría una sola tabla para todos los usuarios de formularios &. Las tablas separadas para cada objeto de base de datos serían innecesarias.

+0

Tengo una aplicación que hace esto. Incluso podemos almacenar varios borradores (lo llamamos plantillas) e incluso puede admitir varios tipos de pantallas. – jop

1

Puede poner todos los datos no válidos como campo de texto sin formato/xml en una tabla de base de datos. Presumiblemente, nunca es necesario ordenar/buscar en los datos incompletos. Esto podría combinar los beneficios de ambas ideas.

1

¿Cómo se almacenan los datos cuando el usuario los devuelve para su validación? ¿Lo almacenas en la sesión? ¿Podrías guardar esa parte de la sesión en tu base de datos y restaurarla cuando él/ella quiera terminar la entrada?

Otra idea es dividir los formularios en secciones secundarias que se guardan antes de continuar. Un formulario de 40 campos parece excesivo y también puede llevar a una aplicación difícil de usar.

0

J D es un excelente punto. Esta interfaz de usuario suena como un trabajo para un asistente. De esta forma, tienen 3 páginas cuando se dan cuenta de que necesitan más datos, y usted sabe que los datos son válidos dado que ha estado validando página por página.

+0

Algunos problemas con esto también: ¿qué sucede si el usuario tiene datos no contiguos a la mano y quiere ingresarlos primero? ¿Qué pasa si los 40 elementos están estrechamente relacionados y no tiene sentido separarlos? ¿Cómo debe cambiarse el modelo de la base de datos para dar cabida a datos parcialmente válidos? – Swati

0

, diría que ir con la segunda opción, pero atar los datos incompletos a la sesión de esa manera a obtener 2 cosas:

1) los datos incompletos se extinguirá cuando caduque la sesión 2), habrá una clara conexión qué datos son propiedad de qué sesión (usuario)

No creo que haya nada de malo en almacenarlo en la base de datos siempre y cuando se asegure de que se limpia periódicamente (en este caso al vencimiento de la sesión). Buena suerte

Editar: Si desea que esté disponible en toda la sesión, vincule al usuario y expire cuando se haya completado.

0

1) los datos incompletos expirarán cuando caduque la sesión

usuario quiere estar disponible para su entrada a través de sesiones los datos incompleto.

+0

Probablemente debería probar el enfoque descrito por Mike Thompson en ese momento. – Swati

0

Creo que pertenece en una mesa separada. Desde el punto de vista comercial, es un widget incompleto. Cuando se guarda y se valida, se almacena en la tabla de widgets.

El mapeo puede parecer un poco molesto, pero creo que en esta situación tiene sentido.

0

Posiblemente controvertido, pero: almacene el objeto incompleto en la misma tabla de la base de datos donde almacenaría el objeto completado.

Los objetos incompletos y completos son exactamente de la misma clase de entidad y están simplemente en diferentes etapas de sus vidas. Puede usar un campo de estado para indicar si el objeto ha sido validado aún. Esto resuelve el problema sin introducir un mecanismo completamente nuevo para depurar y mantener.

Cuestiones relacionadas