Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-12-2006
Aprendiendo Aprendiendo is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 122
Poder: 21
Aprendiendo Va por buen camino
Question 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.
Responder Con Cita
  #2  
Antiguo 22-12-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Qué tipo de Acceso estás utilizando? ¿ADO?

Cita:
Empezado por Aprendiendo
..pero como hago esto mediante código, ya que no se traga los valores null.
¿Qué significa que no se traga los valores NULL? ¿Que no los admite el campo o que no sabes como asignarle el NULL?
¿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.
Responder Con Cita
  #3  
Antiguo 22-12-2006
Aprendiendo Aprendiendo is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 122
Poder: 21
Aprendiendo Va por buen camino
Question

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...

Responder Con Cita
  #4  
Antiguo 22-12-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
En algun caso recuerdo haber usado:

Código Delphi [-]
  // La unit Variants debe estar añadida
  ADOQuery1.Parameters[0].Value:=NULL;

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.
Responder Con Cita
  #5  
Antiguo 22-01-2007
Aprendiendo Aprendiendo is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 122
Poder: 21
Aprendiendo Va por buen camino
Question

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 16:20:13.
Responder Con Cita
  #6  
Antiguo 22-01-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
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:
Código Delphi [-]
ADOQuery1.Parameters[0].Value := Form1.Edit1.Text;
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?.
Código Delphi [-]
if edit1.text = ' ' then
ADOQuery1.Parameters[0].Value := Form1.Edit1.Text;
Saludos
Responder Con Cita
  #7  
Antiguo 23-01-2007
Aprendiendo Aprendiendo is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 122
Poder: 21
Aprendiendo Va por buen camino
Question

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...
Responder Con Cita
  #8  
Antiguo 24-01-2007
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.408
Poder: 22
fjcg02 Va camino a la fama
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 -
Responder Con Cita
  #9  
Antiguo 24-01-2007
Aprendiendo Aprendiendo is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 122
Poder: 21
Aprendiendo Va por buen camino
Question

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.

Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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 19:46:58
No se actualizan los datos al grabar marcial Conexión con bases de datos 4 25-05-2006 12:04:29
Rave Report usando datos de 2 tablas(Access) AdemirRM Impresión 1 05-05-2005 19:15:02
grabar datos de un memo @-Soft Conexión con bases de datos 8 16-08-2003 11:01:49
grabar datos en visual dbase botones67 Varios 1 19-07-2003 09:40:42


La franja horaria es GMT +2. Ahora son las 20:49:22.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi