FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Grabar datos a tablas access
Ante todo una saludo a tod@s,
Mi duda es la siguiente: He comenzado a trabajar con tablas access y todo sin problemas (las conexiones a la b.d., rutas, insert, update, etc...) el problema lo tengo a la hora de asignar tedit vacio a un campo de una tabla. Me explico, si el TEdit tiene algo escrito inserta/actualiza sin problemas, pero si lo dejo vacío, me da un error: Valor de precisión no válido. Investigando un poco he conseguido saber que este tipo de incidencias se llaman (cadenas de longitud cero) y en access se indica como "" (dobles comillas sin espacios entre ellas), pero como hago esto mediante código, ya que no se traga los valores null. Esperando una pronta respuesta por vuestra reciban MUCHAS FELICIDADES PARA ESTE NUEVO AÑO QUE ESTA A PUNTO DE ENTRAR. Suerte para todos. |
#2
|
||||
|
||||
¿Qué tipo de Acceso estás utilizando? ¿ADO?
Cita:
¿Cómo estás haciendo la insertción?
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
|||
|
|||
Utilizo ADO.
Tanto en la inserción como en las actualizaciones utilizo parámetros en tiempo de ejecución. en el string para el query indico lo siguiente (una vez escrito insert/update, según interese más la lista de columnas y parámetros. qrempresas.parameters.parambyname('1').value := edit1.text; este parámetro cuando el edit1 contiene datos no da problemas, ahora cuando el edit1 no contiene datos da problemas. además compruebo si el edit1 contiene información e indico nulo y me sigue dando el error (igual asigno malamente el valor Null). if trim(edit1.text) = '' then qrempresas.parameters.parambyname('1').value := ''; (esto falla) if trim(edit1.text) = '' then qrempresas.parameters.parambyname('1').value := Null; (esto falla) como sería la solución al problema, ya que cuando el dbedit no contenga datos la aplicación debe detectarlo y colocar el valor oportuno (nulo). Esperando una pronta respuesta, reciban un cordial saludo... |
#4
|
||||
|
||||
En algun caso recuerdo haber usado:
Otra opción es utilizar el método Clear;
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#5
|
|||
|
|||
He probado lo indicado por Neftali pero todo sigue igual, además para colocar lo que comenta neftali, debo de comprobar primero si hay algo en el TEdit oportuno y después en función de que si hay algo o no colocar el Null ó el valor correcto.
Lo que yo pretendo hacer es que con una simple asignación funcione, haya datos en el TEdit o no: adoquery1.Parameters.ParamByName('1').Value := edit1.text; (Si coloco esto y no hay datos en el edti1, da error.) La solución que he encontrado es comprobar si el edti1.text está vacío, si está vacío asigno este valor al parámetro = ' ', no me parece lógico tener que meter un espacio para que ADO guarde algo en ese campo. ¿Motivo? Última edición por Aprendiendo fecha: 22-01-2007 a las 15:20:13. |
#6
|
||||
|
||||
Hola
Bueno yo haria: 1- Primero hay que definir que tipo de dato va a contener el edit, si es string o numerico, puesto que dependera de esto la insersion correcta en la tabla. 2- Asignaria o bien un numero o una letra por defould al edit en su campo text. 3- Colocaria el nombre del form, ya que aveces se necesita identificar asi: La sentencia correcta es esta: Hay que tener en cuenta la posicion del campo que se requiere empezando por: Campo 1= 0 Campo 2= 1 etc, etc. Por comprobacion de vacio: No me parece muy logico o necesario, pero?. Saludos |
#7
|
|||
|
|||
Caral, muchas gracias por tu rápida respuesta, voy a probar a colocar delante del edit1.text el nombre del form, ya te comentaré.
Un saludo... |
#8
|
||||
|
||||
Aprendiendo,
comprueba en las propiedades de la tabla si el campo que te casca tiene la propiedad "Permitir Longitud Cero = Si". Está debajo de la longitud del campo, junto a otras propiedades. Por defecto cuando creas los datos está a NO, por lo que obliga a introducir datos. Puede que se este tu problema. Un saludo y suerte
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#9
|
|||
|
|||
fjcg02, gracias por tu respuesta
Esta propiedad creo la tengo cambiada a que permita longitud cero, de todos modos voy a corroborar de que se permita la longitud cero. Ya comentaré como me ha ido. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Grabar datos definodos por el usuario en B.D | frankmch | Conexión con bases de datos | 8 | 05-12-2007 18:46:58 |
No se actualizan los datos al grabar | marcial | Conexión con bases de datos | 4 | 25-05-2006 11:04:29 |
Rave Report usando datos de 2 tablas(Access) | AdemirRM | Impresión | 1 | 05-05-2005 18:15:02 |
grabar datos de un memo | @-Soft | Conexión con bases de datos | 8 | 16-08-2003 10:01:49 |
grabar datos en visual dbase | botones67 | Varios | 1 | 19-07-2003 08:40:42 |
|