Foros del Web » Programación para mayores de 30 ;) » .NET »

Método Update de DataAdapter, problema MUY complicado

Estas en el tema de Método Update de DataAdapter, problema MUY complicado en el foro de .NET en Foros del Web. Hola a todos! trabajo con tecnología .NET en C# y he hecho una aplicación para insertar datos de un txt a un access. Para ello ...
  #1 (permalink)  
Antiguo 18/01/2007, 10:22
 
Fecha de Ingreso: agosto-2004
Mensajes: 7
Antigüedad: 19 años, 8 meses
Puntos: 0
Método Update de DataAdapter, problema MUY complicado

Hola a todos! trabajo con tecnología .NET en C# y he hecho una aplicación para insertar datos de un txt a un access. Para ello utilizo un dataset para ir creando filas nuevas.
Cada fila la voy parseando para agregar cada registro en su posición correspondienet en un datarow.
A la hora de actualizar utilizo el metodo Update de un dataAdapter previamente asociado a ese dataset..

Por otra parte cada plantilla access puede tener restricciones sobre cada una de sus columnas. En este caso una de sus columnas tiene una restricción que consiste en que un valor no puede se mayor de 5 caracteres.
En el txt hay una fila donde el valor correspondiente a dicha columna sobrepasa los 5 caracteres.

Pues bien, voy añadiendo los datos en el datarow, a la hora de añadir ese campo el datarow no muestra un aviso de que la longitud de la cadena recibida sobrepasa lo permitido. A la hora de hacer update con el dataAdapter tenemos pués un campo que en realidad tiene un valor no permitido por sobrepasar la longitud máxima de cadena permitida para ese campo.
El dataAdapter, como era de esperar, produce una excepción. AHORA BIEN, solamente nos informa de que la cadena sobrepasa la longitud máxima permitida. El mensaje concretamente es:
"El campo es demasiado pequeño para aceptar la cantidad de datos que intenta agregar. Intente insertar o pegar menos datos."

Pues bien, lo que yo pretendo es que no solo me informe del error sino que, como debería ser, informe también de la columna donde se produjo el error. Es una carácterística de la que se debería informar al usuario y sin embargo una tecnología tan importante la obvia totalmente. Nadie ha podido resolverme este problema por el momento. Tampoco he encontrado ningun tipo de propiedad ni método, ni librería que sea capaz de mostrar tal información. He probado en construir cada insert a mano y ejecutarla en lugar de hacerlo con un dataAdapter, pero tampoco informa de la columna.

¿Alguien se ha planteado la misma cuestion? ¿Existe alguna solución posible? He pensado que quizá redefiniendo alguna función de la libreria se pueda hacer algo..

¡un saludo y gracias!
  #2 (permalink)  
Antiguo 18/01/2007, 15:58
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco
Mensajes: 47
Antigüedad: 20 años
Puntos: 0
Re: Método Update de DataAdapter, problema MUY complicado

Hola,

El problema no está en ADO.Net, ya que los errores son producidos por el motor de la base de datos (en este caso Access) y luego ADO.Net simplemente los pasa a tu aplicación.

Algunos motores de base de datos mas robustas (como sql server) puede proporcionarte información más especifica, pero de cualquier forma podría ser en un formato no muy adecuado para el usuario.
__________________
Si puedes pensarlo, puedes hacerlo.
  #3 (permalink)  
Antiguo 19/01/2007, 02:11
 
Fecha de Ingreso: agosto-2004
Mensajes: 7
Antigüedad: 19 años, 8 meses
Puntos: 0
Re: Método Update de DataAdapter, problema MUY complicado

La cuestion es que en la versión anterior del programa que estoy haciendo se usaba un objeto de CADORecordset para actualizar columna por columna.

Entonces al llamar a la función SetFieldValue se le pasaba el campo y el texto y ahi si que te avisaba de los errores de ese campo. La cuestión es que en C# no, puedes ir asignandole valores a cada campo del datarow y no te avisa mas que de errores entre los tipos de datos (por ejemplo si el campo es entero y le pasas un double..).

Parece que al asociarle la plantilla access al dataset este no se queda con las reestrincciones de cada columna, simplemente con el tipo y poco más.

Con el depurador he ido mirando las propiedades de la tabla dentro del dataset y navegando entre las propiedades, muy internamente hay una llamada maxLength pero esta vale -1.Decir también que esta propiedad no es accesible desde código para ser leida o modificada.
  #4 (permalink)  
Antiguo 20/01/2007, 10:37
 
Fecha de Ingreso: agosto-2004
Mensajes: 7
Antigüedad: 19 años, 8 meses
Puntos: 0
Re: Método Update de DataAdapter, problema MUY complicado

Lo que yo ando buscando es de alguna manera asociar las propiedades de cada campo de la tabla access al dataset, para que así cuando inserte datos en cada campo me avise de errores de este tipo... eso se debe poder hacer pero no he encontrado el modo.

saludos!
  #5 (permalink)  
Antiguo 01/02/2007, 04:02
 
Fecha de Ingreso: agosto-2004
Mensajes: 7
Antigüedad: 19 años, 8 meses
Puntos: 0
De acuerdo Re: Método Update de DataAdapter, problema MUY complicado

Demonios! al final habia que usar el método FillSchema en lugar del típico Fill...
como me iba a imaginar yo? je...je...je...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:40.