Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-01-2018
mcsebas mcsebas is offline
Miembro
 
Registrado: feb 2008
Posts: 78
Poder: 17
mcsebas Va por buen camino
Problemas con Firebird y UPDATE

Hola amigos de Club Delphi ... tengo un problema y no se como resolverlo porque me tira este error y la verdad que es MUY MOLESTO.
Les explico

Estoy haciendo un proyecto en donde uso DBXPRESS con Firebird. La conexion y las inserciones todo bien funcionan a la maravilla pero cuando voy a querer modificar algun registro con la instruccion UPDATE me tirar este mensaje

Cita:
Conversion String Error "......"
Cuando utilizo la instruccion UPDATE lo hago con un comando parametrizado.

Ahi les va mi codigo el cual me funciona a la perfeccion con las inserciones.

Código Delphi [-]
  with Comando do
    begin
      Params.CreateParam(ftInteger,'p0',ptInput);
      Params.CreateParam(ftString,'p1',ptInput);
      Params.CreateParam(ftString,'p2',ptInput);
      Params.CreateParam(ftString,'p3',ptInput);
      Params.CreateParam(ftInteger,'p4',ptInput);
      Params.CreateParam(ftString,'p5',ptInput);

      ParamByName('p0').AsInteger:=Id;
      ParamByName('p1').AsString:=Nombre;
      ParamByName('p2').AsString:=Cuenta;
      ParamByName('p3').AsString:=Clave;
      ParamByName('p4').AsInteger:=Permisos;

      if string.IsNullOrWhiteSpace(Observaciones) = true then
        ParamByName('p5').Value:=Null
      else
        ParamByName('p5').AsString:=Observaciones;
    end;

  Comando.ExecSQL(False);

Muchas Gracias
Responder Con Cita
  #2  
Antiguo 27-01-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿En qué línea da el error? ¿con qué valores? ¿cuál es la sentencia de udpate? ...
Responder Con Cita
  #3  
Antiguo 27-01-2018
mcsebas mcsebas is offline
Miembro
 
Registrado: feb 2008
Posts: 78
Poder: 17
mcsebas Va por buen camino
La sentencia es la siguiente
Código SQL [-]
UPDATE USUARIOS SET NOMBRE=:p1, CUENTA=:p2, CLAVE=:p3, PERMISOS=:p4, OBSERVACIONES=:p5 WHERE ID=:p0
El problema me lo genera cuando quiero modificar campos que son VARCHAR o sea como dice el error TDBXError :Conversion error from string.

La situación se soluciona cuando concateno todos los campos pero no es la idea si utilizo parametros.

Gracias
Responder Con Cita
  #4  
Antiguo 27-01-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por mcsebas Ver Mensaje
El problema me lo genera cuando quiero modificar campos que son VARCHAR o sea como dice el error TDBXError :Conversion error from string.
Bien, pero qué campos, con qué valores, con qué codigo, en qué línea, pon un código que lo veamos... Es que no podemos adivinar.
Responder Con Cita
  #5  
Antiguo 30-01-2018
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Algun campo esta mal definido o una variable no tiene el tipo de dato correcto, me hace pensar que el error te lo manda porque estas intentado almacenar un dato de tipo string en un campo numérico o vicerversa....checa eso !. Puede ser que por ahi este la solución.

Por cierto...si necesitamos mas información, ejemplo:

LOS CAMPOS DE LA TABLA, DE QUE TIPO DE DATOS SON?

Y como dice Casimiro....mas información, asi solamente estaremos especulando por donde te da el error.

Observando tus datos:

Código Delphi [-]
          ParamByName('p2').AsString:=Cuenta;
         ParamByName('p3').AsString:=Clave;

"Cuenta" y "Clave", con numéricos? o son de tipo String?

Saludos.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #6  
Antiguo 31-01-2018
mcsebas mcsebas is offline
Miembro
 
Registrado: feb 2008
Posts: 78
Poder: 17
mcsebas Va por buen camino
Disculpen la tardanza en contestar. Les comento lo siguiente:

He creado una clase llamada usuario con las siguientes propiedades:
  • Id ---> Entero
  • Nombre ---> String
  • Cuenta ---> String
  • Clave ---> String
  • Permisos ---> Entero
  • Estado ---> Entero
  • Observaciones ---> String
En dicha clase utilizo una funcion interna (o sea esta en private) en donde parametrizo las sentencias de Insert y Update para no estar repitiendo todo.
Cabe aclarar que las inserciones no generan problema alguno.

El error se suscita cuando en una actualización trato de actualizar (valga la redundancia) los valores del tipo VARCHAR.

Por lo que segui investigando aparentemente es un error en el motor de base de datos que por cierto utilizo FIREBIRD 3 y para conectarme los componentes IBDAC.

La tabla tiene esta estructura:
Código SQL [-]1) ID int not null primary 2) NOMBRE varchar(45) not null 3) CUENTA varchar(15) not null 4) CLAVE varchar(15) not null 5) PERMISOS int not null 6) ESTADO int not null 7) OBS varchar(255)


Espero que puedan ayudarme amigos.
Muchas Gracias
Responder Con Cita
  #7  
Antiguo 31-01-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por mcsebas Ver Mensaje
Por lo que segui investigando aparentemente es un error en el motor de base de datos que por cierto utilizo FIREBIRD 3
Seguro que no.
Responder Con Cita
  #8  
Antiguo 31-01-2018
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Solo podré especular, mi experiencia no es mucha, ya nos orientara el moderador, pero esta parte del codigo es correcto?.

Código Delphi [-]
 if string.IsNullOrWhiteSpace(Observaciones) = true then
        ParamByName('p5').Value:=Null  // ESTA LINEA...es lo mismo que esto?:   ParamByName('p5').AsString:="";
      else
        ParamByName('p5').AsString:=Observaciones;
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
  #9  
Antiguo 31-01-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por mRoman Ver Mensaje
ParamByName('p5').Value:=Null // ESTA LINEA...es lo mismo que esto?: ParamByName('p5').AsString:="";
No es lo mismo, son muy diferentes
Responder Con Cita
  #10  
Antiguo 31-01-2018
mcsebas mcsebas is offline
Miembro
 
Registrado: feb 2008
Posts: 78
Poder: 17
mcsebas Va por buen camino
Es distinto que poner una cadena en vacio ...
Null lo utilizo para poner en el campo en vacio en la base de datos.
Responder Con Cita
  #11  
Antiguo 31-01-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Precisamente, no puedes convertir un null a string, usa la cadena vaci´a ''
Responder Con Cita
  #12  
Antiguo 01-02-2018
mcsebas mcsebas is offline
Miembro
 
Registrado: feb 2008
Posts: 78
Poder: 17
mcsebas Va por buen camino
Buenas amigos ... gracias por la ayuda.
Encontré la solución y era problema con las transacciones.

Suprimi un el StartTransaction y funciono.

Muchisimas gracias.
Responder Con Cita
  #13  
Antiguo 01-02-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Eso pasa por no poner el co´digo fuente, no podemos adivinar
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
Update Con Firebird Enrique Ccz Conexión con bases de datos 8 05-07-2017 14:56:59
Update De Una Vista Firebird KOVNEO Firebird e Interbase 3 15-03-2016 19:13:40
Firebird 2.5 Update Abel Garcia Firebird e Interbase 13 10-05-2011 13:05:06
problemas con Update. sargento elias Firebird e Interbase 14 12-06-2008 19:30:16
Problemas de con UPDATE jmlifi Varios 3 20-05-2005 22:59:42


La franja horaria es GMT +2. Ahora son las 17:57:03.


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