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 12-06-2003
Avatar de Lester
Lester Lester is offline
Miembro
 
Registrado: may 2003
Ubicación: Cienfuegos, Cuba.
Posts: 106
Poder: 21
Lester Va por buen camino
Question Error en conexión en tiempo de ejecución !!

Hola amigos...

Ahora se me presentó este extraño problemita...
En tiempo de ejecución dentro del Delphi cuando establezco la conexión con el componente ADO me sale este error:

Cita:
Project Name.exe raised exception class EVariantError with message 'Invalid variant type conversion'. Process stopped. Use Step or Run to continue.
Y sin embargo cuando ejecuto la aplicación fuera del Delphi no me da ningún error..., para que tengan un poco más de datos, realizo la entrada en un formulario, esa entrada la guardo en una variable de tipo RECORD que tengo declarada ya y luego lo que hago es lo siguiente...

Código:
ADOTable1.Active := True;
ADOTable1.Append;
ADOTable1.FieldByName('Nombre').AsString := Temp.Nombre;
ADOTable1.FieldByName('Fecha').AsString := Temp.Fecha;
ADOTable1.FieldByName('CodDeudor').AsString := Temp.CodDeudor;
ADOTable1.FieldByName('Deudor').AsString := Temp.Deudor;
ADOTable1.FieldByName('CodProd').AsString := Temp.CodProd;
ADOTable1.FieldByName('Descrip').AsString := Temp.Descrip;
ADOTable1.FieldByName('UM').AsString := Temp.UM;
ADOTable1.FieldByName('Cantidad').AsFloat := Temp.Cantidad;
ADOTable1.FieldByName('Importe').AsFloat := Temp.Importe;
ADOTable1.FieldByName('Confirm').AsString := Temp.Confirm;
ADOTable1.FieldByName('Comprado').AsString := Temp.Comprado;
ADOTable1.FieldByName('Ubicado').AsString := Temp.Ubicado;
ADOTable1.FieldByName('CodUbicado').AsString := Temp.CodUbicado;
ADOTable1.FieldByName('FechaModif').AsString := Temp.FechaModif;
ADOTable1.Post;
ADOTable1.Active := False;
Gracias por adelantado...
__________________
Lester Espinosa Martínez

[ Guía de estilo | La otra guía de estilo | Buscador | Trucos | My personal blog ]
Responder Con Cita
  #2  
Antiguo 12-06-2003
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Verifica que Temp.Cantidad, sea de tipo flotante,
pues generalmente la cantidad siempre es Entera y quedaria asi:

ADOTable1.FieldByName('Cantidad').AsInteger := Temp.Cantidad;

Si no funciona pues entonces verifica con un Break point el lugar donde esta el error
__________________
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 12-06-2003
Avatar de Lester
Lester Lester is offline
Miembro
 
Registrado: may 2003
Ubicación: Cienfuegos, Cuba.
Posts: 106
Poder: 21
Lester Va por buen camino
Question

Hola nuevamente...

Coloqué un BreakPoint para tracearlo y el error me sale en la línea donde establezco la conexión con la base de datos, o sea, donde la activo...

Código:
ADOTable1.Active := True;
No sé que pudiera ser, en cuanto a lo que me dijiste sobre el campo 'Cantidad', es así como quiero que sea, pues la cantidad que yo le voy a entrar no es entera, sino que pudiera tener decimales..., ya verifiqué el campo 'Cantidad' en la base de datos y en el record, buscando errores, pero no aparece ninguno.

Vuelvo a repetir que cuando ejecuto la aplicación fuera del Delphi no me da ningún error...
__________________
Lester Espinosa Martínez

[ Guía de estilo | La otra guía de estilo | Buscador | Trucos | My personal blog ]
Responder Con Cita
  #4  
Antiguo 12-06-2003
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Y si usas este codigo?
Código:
ADOTable1.Close;
ADOTable1.Open;
ADOTable1.Append;
ADOTable1.FieldByName('Nombre').AsString := Temp.Nombre;
ADOTable1.FieldByName('Fecha').AsDate := Temp.Fecha;
ADOTable1.FieldByName('CodDeudor').AsString := Temp.CodDeudor;
ADOTable1.FieldByName('Deudor').AsString := Temp.Deudor;
ADOTable1.FieldByName('CodProd').AsString := Temp.CodProd;
ADOTable1.FieldByName('Descrip').AsString := Temp.Descrip;
ADOTable1.FieldByName('UM').AsString := Temp.UM;
ADOTable1.FieldByName('Cantidad').AsFloat := Temp.Cantidad;
ADOTable1.FieldByName('Importe').AsFloat := Temp.Importe;
ADOTable1.FieldByName('Confirm').AsString := Temp.Confirm;
ADOTable1.FieldByName('Comprado').AsString := Temp.Comprado;
ADOTable1.FieldByName('Ubicado').AsString := Temp.Ubicado;
ADOTable1.FieldByName('CodUbicado').AsString := Temp.CodUbicado;
ADOTable1.FieldByName('FechaModif').AsDate := Temp.FechaModif;
ADOTable1.Post;
ADOTable1.Close;
Que sucede?

Espero que te sirva.
__________________
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
  #5  
Antiguo 12-06-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Si tienes campos persistentes (o sea, TFields creados) y has cambiado algun tipo de dato, verifica que coincidan los tipos de los campos persistentes con los de la BD, a ver si puede ser eso

Suerte
Responder Con Cita
  #6  
Antiguo 12-06-2003
linsua linsua is offline
Miembro
 
Registrado: jun 2003
Ubicación: Barcelona
Posts: 27
Poder: 0
linsua Va por buen camino
Hola,

Si el problema lo tienes al activar el DataSet, es probable que tengas un campo agregado dentro de este DataSet que sea de tipo diferente al de la tabla de la base de datos. Esto te puede haber ocurrido si has cambiado el tipo de algún campo en la tabla de la base de datos y no lo has cambiado en el DataSet.

Prueba a quitar todos los campos del DataSet y volverlos a agregar.

Suerte y un saludo
__________________
Luciano

Compartir el conocimiento tambien es aprender
Responder Con Cita
  #7  
Antiguo 12-06-2003
Avatar de Lester
Lester Lester is offline
Miembro
 
Registrado: may 2003
Ubicación: Cienfuegos, Cuba.
Posts: 106
Poder: 21
Lester Va por buen camino
Question

Bueno amigos agradezco mucho la ayuda que me han brindado, pero no se me ha podido resolver el problemita, pero no importa..., yo lo sigo corriendo desde afuera del Delphi...

Ahora me surge una nueva interrogante, tengo realizada la conexión a la BD hecha en Access con los componentes ADO, y quisiera saber cómo puedo saber el número del registro en el cual me encuentro actualmente. Me explico, es para una búsqueda..., yo muestro por pantalla todos los registros y cada uno de ellos tiene un número de índice en la tabla, lo que quiero hacer es buscarlos por el número donde se encuentra en esa tabla, pues si hago un campo (AUTONUMERICO) luego cuando borro algún registro no se me renumera, ni sé como hacerlo, si me pudieran tirar un cabo con eso se los agradecería mucho...

Ej:

Nombre Sexo Edad
Lester M 23 (#1)
Cualquiera F 50 (#2)
Otro M 68 (#3)

Si creara un campo (AUTONUMERICO) y borrara algún registro me quedaría de la siguiente forma:

Ej:

ID Nombre Sexo Edad
1 Lester M 23 (#1)
2 Cualquiera F 50 (#2) <------ Si elimino este
3 Otro M 68 (#3)

Quedaría:

ID Nombre Sexo Edad
1 Lester M 23 (#1)
3 Otro M 68 (#3) <------ No se me renumera

Gracias de antemano...
__________________
Lester Espinosa Martínez

[ Guía de estilo | La otra guía de estilo | Buscador | Trucos | My personal blog ]
Responder Con Cita
  #8  
Antiguo 12-06-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Puedes hacer esto

1.- antes de borrar guardas la Id del registro en una variable
2.- borras el registro (con un SQL de Delete o con un Tabla.Delete)
3.- lanzas una sentencia SQL de Update para modificar los registros posteriores

Código:
   update tabla set id = id - 1 where id > variable
Espero te sirva
Responder Con Cita
  #9  
Antiguo 12-06-2003
Avatar de Lester
Lester Lester is offline
Miembro
 
Registrado: may 2003
Ubicación: Cienfuegos, Cuba.
Posts: 106
Poder: 21
Lester Va por buen camino
Lightbulb

Cadetill:

Un millón de gracias hermano, ya resolví lo de la conexión, estaba bobeando, era como tú decías... En cuanto a último que me escribiste no lo he implementado todavía, luego lo voy a hacer y después te digo...¿OK?

Gracias nuevamente de un amigo Cubano..., lo que necesites tíralo para acá a ver si alguna vez te logro tirar un cabo...

Salu2,
__________________
Lester Espinosa Martínez

[ Guía de estilo | La otra guía de estilo | Buscador | Trucos | My personal blog ]
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


La franja horaria es GMT +2. Ahora son las 11:13:39.


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