Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-05-2007
gaps2k gaps2k is offline
Miembro
 
Registrado: may 2006
Posts: 27
Poder: 0
gaps2k Va por buen camino
SQL utilizando parametros

Que tal colegas!!

Tengo un problema al querer utilizar sql con Parametros, pero cuando se ejecuta la consulta me aparece el mensaje de error:
'Los datos de cadena o binarios se truncarìan', alguien me puede decir a que se debe este mensaje y como puedo hacer para evitarlo.

De antemano muchas gracias por su tiempo.

PD: TRabajo con Delphi 7 y SQL 2000

Código Delphi [-]
     query := (' UPDATE MAESTRO_CLIENTES SET '+
      ' CEDULA = :CEDULA, NOMBRE = :NOMBRE, DIRECCION1 = IRECCION1,DIRECCION2 = IRECCION2, TELEFONOP = :TELEFONOP,'+
      ' FAX = :FAX, APARTADO = :APARTADO, EMAIL = :EMAIL, LIMITE_CREDITO = :LIMITE_CREDITO,'+
      ' APLICA_LIMITE= :APLICA_LIMITE, SALDO_CUENTA = :SALDO_CUENTA, DIAS_CREDITO = IAS_CREDITO, DESCUENTO = ESCUENTO, FECHA_ULTIMA_COMPRA = :FECHA_ULTIMA_COMPRA,'+
      ' NUMERO_ULTIMA_COMPRA = :NUMERO_ULITMA_COMPRA, MONTO_ULTIMA_COMPRA = :MONTO_ULTIMA_COMPRA, FECHA_INGRESO = :FECHA_INGRESO, ESTADO = :ESTADO, EXENTO = :EXENTO,'+
      ' RESENA_EXENTO = :RESENA_EXENTO, TIPO_CLIENTE = :TIPO_CLIENTE, DOLAR = OLAR');

  
 sql.SQL.Add(query);
  sql.Prepare;
  sql.ParamByName('cedula').Text := cliente.getCedula;
  sql.ParamByName('NOMBRE').AsString   := cliente.getNombre;
  sql.ParamByName('DIRECCION1').AsString    := cliente.getDireccion1;
  sql.ParamByName('DIRECCION2').AsString    := cliente.getDireccion2;
  sql.ParamByName('TELEFONOP').AsString   := cliente.getTelefonop;
  sql.ParamByName('FAX').AsString    := cliente.getFax;
  sql.ParamByName('APARTADO').AsString := cliente.getApartado ;
  sql.ParamByName('EMAIL').AsString   := cliente.getEmail;
  sql.ParamByName('LIMITE_CREDITO').AsFloat   := cliente.getLimite_Credito;
  sql.ParamByName('APLICA_LIMITE').AsBoolean   := cliente.getAplica_Limite;
  sql.ParamByName('SALDO_CUENTA').Asfloat   := cliente.getSaldo_Cuenta;
  sql.ParamByName('DIAS_CREDITO').AsInteger   := cliente.getDias_Credito;
  sql.ParamByName('DESCUENTO').AsFloat   := cliente.getDescuento;
  sql.ParamByName('FECHA_ULTIMA_COMPRA').AsDateTime   := cliente.getFecha_Ultima_Compra;
  sql.ParamByName('NUMERO_ULITMA_COMPRA').AsString   := cliente.getNumero_Ultima_Compra;
  sql.ParamByName('MONTO_ULTIMA_COMPRA').AsFloat   := cliente.getMonto_Ultima_Compra;
  sql.ParamByName('FECHA_INGRESO').AsDateTime   := cliente.getFecha_Ingreso;
  sql.ParamByName('ESTADO').AsBoolean   := cliente.getEstado;
  sql.ParamByName('EXENTO').AsBoolean   := cliente.getExento;
  sql.ParamByName('RESENA_EXENTO').AsString   := cliente.getResena_Exento;
  sql.ParamByName('TIPO_CLIENTE').AsInteger   := cliente.getTipo_Cliente;
  sql.ParamByName('DOLAR').AsBoolean   := cliente.getDolar;
  ejecutar_sin_active(sql);

Última edición por jhonny fecha: 28-05-2007 a las 19:09:53.
Responder Con Cita
  #2  
Antiguo 28-05-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Puede ser que quizá estas tratando de insertar un valor cuyo tamaño en caracteres es mayor al que soporta el campo en la tabla física...

Nota := Edite tu mensaje para colocar Etiquetas DELPHI. No se porque se me acaba de borrar de la mente el "Como usar el no parser" para que no muestre las caritas.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 28-05-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Ese error significa que estas pasando valores mayores a los definidos en tu base de datos, es decir, que estas pasando una cadena de tamaño 15, pero en tu base de datos esta definido el campo con capacidad 10; por lo tanto, la cadena de 15 caracteres, se truncará (cortará, reducirá) a 10 caracteres.

Revisa los datos que estas enviando y como esta definido el campo en tu base de datos.

Lo más recomendable es que utilices la propiedad MaxLength de tus controles, definiéndole el mismo valor que tienen en tu base de datos. Es decir, si tu campo esta definido como char(10), lo mejor es que el control relacionado a este campo, tenga su propiedad MaxLenght definida en 10.

----edito
Jhonny: para el que no ponga las caritas creo que es con [NOPARSER] [/NOPARSER]
__________________

Responder Con Cita
  #4  
Antiguo 28-05-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por ContraVeneno
----edito
Jhonny: para el que no ponga las caritas creo que es con
Así fue como lo coloque entre las lineas:
Código Delphi [-]
query := (' UPDATE MAESTRO_CLIENTES SET '+
      ' CEDULA = :CEDULA, NOMBRE = :NOMBRE, DIRECCION1 = IRECCION1,DIRECCION2 = IRECCION2, TELEFONOP = :TELEFONOP,'+
      ' FAX = :FAX, APARTADO = :APARTADO, EMAIL = :EMAIL, LIMITE_CREDITO = :LIMITE_CREDITO,'+
      ' APLICA_LIMITE= :APLICA_LIMITE, SALDO_CUENTA = :SALDO_CUENTA, DIAS_CREDITO = IAS_CREDITO, DESCUENTO = ESCUENTO, FECHA_ULTIMA_COMPRA = :FECHA_ULTIMA_COMPRA,'+
      ' NUMERO_ULTIMA_COMPRA = :NUMERO_ULITMA_COMPRA, MONTO_ULTIMA_COMPRA = :MONTO_ULTIMA_COMPRA, FECHA_INGRESO = :FECHA_INGRESO, ESTADO = :ESTADO, EXENTO = :EXENTO,'+
      ' RESENA_EXENTO = :RESENA_EXENTO, TIPO_CLIENTE = :TIPO_CLIENTE, DOLAR = OLAR');
Pero me lo muestra asi:

Código Delphi [-]
query := (' UPDATE MAESTRO_CLIENTES SET '+
      ' CEDULA = :CEDULA, NOMBRE = :NOMBRE, DIRECCION1 = :DIRECCION1,DIRECCION2 = :DIRECCION2, TELEFONOP = :TELEFONOP,'+
      ' FAX = :FAX, APARTADO = :APARTADO, EMAIL = :EMAIL, LIMITE_CREDITO = :LIMITE_CREDITO,'+
      ' APLICA_LIMITE= :APLICA_LIMITE, SALDO_CUENTA = :SALDO_CUENTA, DIAS_CREDITO = :DIAS_CREDITO, DESCUENTO = :DESCUENTO, FECHA_ULTIMA_COMPRA = :FECHA_ULTIMA_COMPRA,'+
      ' NUMERO_ULTIMA_COMPRA = :NUMERO_ULITMA_COMPRA, MONTO_ULTIMA_COMPRA = :MONTO_ULTIMA_COMPRA, FECHA_INGRESO = :FECHA_INGRESO, ESTADO = :ESTADO, EXENTO = :EXENTO,'+
      ' RESENA_EXENTO = :RESENA_EXENTO, TIPO_CLIENTE = :TIPO_CLIENTE, DOLAR = :DOLAR');
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 28-05-2007 a las 20:30:53.
Responder Con Cita
  #5  
Antiguo 28-05-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
despues de [ delphi ] va el [ noparse] sin la R del final... es solo "noparse"

---edito--- si funciona... primero el tag de delphi y luego el tag "noparse"

Código Delphi [-]
  
  SQL.Add('Direccion = :Direccion');


o más sencillo... cambia :D por una :d
__________________


Última edición por ContraVeneno fecha: 28-05-2007 a las 20:24:20.
Responder Con Cita
  #6  
Antiguo 28-05-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Bueno, muchas gracias por tu aclaración ContraVeneno, no entiendo como se me pudo olvidar tal cosa.

Ya lo corregi y se ve perfecto.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
Respuesta



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
Utilizando el locate alcides Varios 2 06-09-2006 23:41:22
Parametros Opcionales no Parametros por defecto Velia Varios 7 19-08-2006 15:18:42
Excel con delphi 5 utilizando Bde zugazua2001 API de Windows 0 30-05-2005 16:18:49
Utilizando un Actionlist Carlos Arevalo OOP 5 13-09-2003 22:14:56
Utilizando InstallShield... apunto Conexión con bases de datos 1 29-05-2003 22:46:33


La franja horaria es GMT +2. Ahora son las 23:11:57.


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