Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Red face Error al guardar datos

Hola, quisiera saber si a alguien al igual que a mi le ha pasado que cuando queire guardar un dato en la bd le sale el siguiente error:
Código Delphi [-]
invalid variant type conversion

mi codigo es el siguiente:
Código Delphi [-]
procedure TForm11.btnAgregarClick(Sender: TObject);
var
i:string;
begin
if form11.table1.locate('preg_clave',edclave.text,[])then
             begin
              edclave.clear;
              showmessage('La clave ya existe')
             end
              else
                begin
                    i:=copy(cmbEvaluacion.text,0,pos('-',cmbEvaluacion.text)-1);
                    i:=copy(cmbSeccion.text,0,pos('-',cmbSeccion.text)-1);
                    form11.table1.insert;
                    form11.table1.fieldvalues['preg_evaluacion']:=i;
                    form11.table1.fieldvalues['preg_secc']:=i;
                    form11.table1.fieldvalues['preg_clave']:=EdClave.text;
                    form11.table1.fieldvalue['preg_descripcion']:=EdPregunta.text;
                    form11.table1.post;
                    cmbEvaluacion.clear;
                    cmbSeccion.clear;
                    edClave.clear;
                    edPregunta.clear;
                    showmessage('Los datos se guardaron con exito!');
                 end;
end;

lo que hago es guardar solamente la clave de una evaluacion, de una seccion y de una clave. Tengo 2 combobox, 2 edit y un boton. Utilizo un database,table y query. Gracias
Responder Con Cita
  #2  
Antiguo 07-10-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Cita:
Empezado por Elite237 Ver Mensaje
Hola, quisiera saber si a alguien al igual que a mi le ha pasado que cuando queire guardar un dato en la bd le sale el siguiente error:
Código Delphi [-]invalid variant type conversion


lo que hago es guardar solamente la clave de una evaluacion, de una seccion y de una clave. Tengo 2 combobox, 2 edit y un boton. Utilizo un database,table y query. Gracias
Como decia en el otro post, evita los fieldvalues usando AsInteger, asString o lo que sea, y te ahorraras muchos problemas.

Saludos
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #3  
Antiguo 07-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Te refieres a usarlo asi?:
Código Delphi [-]
cmbEvaluacion.text:=form12.table1.AsInteger['preg_evaluacion'];

o como no entiendo, de hecho no me da esa opcion despues del punto
Responder Con Cita
  #4  
Antiguo 07-10-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Cita:
Empezado por Elite237 Ver Mensaje
Te refieres a usarlo asi?:
No, asi

Código Delphi [-]
cmbEvaluacion.text:=form12.table1.FieldByName('preg_evaluacion').AsString;

Saludos
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #5  
Antiguo 07-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Lo hize como me dijiste pero me sigue saliendo el mismo error:
Código Delphi [-]
invalid variant type conversion

te muestro como lo deje:
Código Delphi [-]
procedure TForm11.btnAgregarClick(Sender: TObject);
var
i:string;
begin
if form11.table1.locate('preg_clave',edclave.text,[])then
             begin
              edclave.clear;
              showmessage('La clave ya existe')
             end
              else
                begin
                    i:=copy(cmbEvaluacion.text,0,pos('-',cmbEvaluacion.text)-1);
                    i:=copy(cmbSeccion.text,0,pos('-',cmbSeccion.text)-1);
                    table1.insert;
                    i:=form11.table1.FieldByName('preg_evaluacion').AsString;
                    i:=form11.Table1.fieldbyname('preg_secc').AsString;
                    EdClave.text:=form11.table1.fieldbyname('preg_clave').AsString;
                    EdPregunta.text:=form11.table1.fieldbynam('preg_descripcion').AsString;
                    form11.table1.post;
                    cmbEvaluacion.clear;
                    cmbSeccion.clear;
                    edClave.clear;
                    edPregunta.clear;
                    showmessage('Los datos se guardaron con exito!');
                 end;
end;
Responder Con Cita
  #6  
Antiguo 07-10-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Cita:
Empezado por Elite237 Ver Mensaje
Lo hize como me dijiste pero me sigue saliendo el mismo error:
Amigo es que debes colocar según el tipo de dato que sea,

que tipo de dato tiene los campos:

'preg_evaluacion', 'preg_secc',
'preg_clave',
'preg_descripcion'

debes hacer un paso a paso para ver en que linea da error la conversion.

Saludos.
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #7  
Antiguo 07-10-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

¿Por que le asignas el valor del campo a las variables y los edits y no al revés?

Otra cosa, ¿todos los campos son de tipo string?

Y ya para finalizar, ¿exactamente en que línea se produce el error?


Saludos...
Responder Con Cita
  #8  
Antiguo 07-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
el error me lo da en esta linea

Código Delphi [-]
if form11.table1.locate('preg_clave',edclave.text,[])then
Responder Con Cita
  #9  
Antiguo 07-10-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Cita:
Empezado por Elite237 Ver Mensaje
el error me lo da en esta linea

Debió ser:

Código Delphi [-]
if form11.table1.locate('preg_clave', VarArrayOf([edClave.text]),[]) then


usa el help amigo.

Saludos
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #10  
Antiguo 07-10-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por donald shimoda Ver Mensaje
Debió ser:

Código Delphi [-]
if form11.table1.locate('preg_clave', VarArrayOf([edClave.text]),[]) then
No necesariamente. Si sólo se busca por un campo, el valor a buscar puede darse con un variant sencillo.

// Saludos
Responder Con Cita
  #11  
Antiguo 07-10-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Cita:
Empezado por roman Ver Mensaje
No necesariamente. Si sólo se busca por un campo, el valor a buscar puede darse con un variant sencillo.

// Saludos
Amigo Román, no uso mucho locate la verdad, pero vos decís que colocando un string rula? si la memoria no me falla no rula y se trula.

Saludos
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #12  
Antiguo 07-10-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues te falla

Cita:
Empezado por ayuda de Delphi (TDataSet)
Descendant classes that are not unidirectional override this method so that it locates the record where the fields identified by the semicolon-separated list of fields in KeyFields have the values specified by the Variant or Variant array KeyValues
Cita:
Empezado por ayuda de Delphi (TBDEDataSet)
KeyValues is a variant array containing the values to match in the key fields. If KeyFields lists a single field, KeyValues specifies the value for that field on the desired record
Además lo acabo de probar

// Saludos
Responder Con Cita
  #13  
Antiguo 07-10-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Además lo acabo de probar

// Saludos
Es lo que me falto a mi, estoy a dos manos.

Pegale el código a este amigo entonces para ver donde esta mal lo que hizo, que el objetivo es ayudarlo a el.

Saludos
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #14  
Antiguo 07-10-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¡Ah! Pero yo no sé dónde está su error. Me parece extraño que sea en la línea que dice. Pero si es así, entonces puediera ser que preg_clave fuese un campo numérico y que edclave.text no contiene un número.

// Saludos
Responder Con Cita
  #15  
Antiguo 07-10-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Cita:
Empezado por roman Ver Mensaje
¡Ah! Pero yo no sé dónde está su error. Me parece extraño que sea en la línea que dice. Pero si es así, entonces puediera ser que preg_clave fuese un campo numérico y que edclave.text no contiene un número.

// Saludos
Por eso le pedi los tipos de los campos, aún sin suerte.
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
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
guardar datos en base de datos lis983 Varios 4 16-07-2008 07:47:49
error al guardar megaredoxk Varios 10 19-01-2008 00:53:28
Error al guardar datos Manuel Firebird e Interbase 1 05-09-2006 23:01:01
Guardar en 1 base de datos SQL, datos procedentes de 2 tablas distintas adaypr C++ Builder 1 05-09-2006 11:56:33
ERROR al guardar en base de datos emeceuy Conexión con bases de datos 1 23-06-2003 15:40:07


La franja horaria es GMT +2. Ahora son las 13:20:14.


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