Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Error en sentencia UPDATE

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Error en sentencia UPDATE Responder citando

Hola a todos:
Estoy haciendo un programa para gestionar ligas de futbol con tablas de paradox y al intentar actualizar un registro con por ejemplo los goles de esa jornada me da el siguiente error:

QActualizar: Filed 'goles_total' is of an unknow type

El código que utilizo es este:
Código:
int goles_hoy, goles_total, goles_antes;
DBGol->DataField="Goles";//Asigno el valor de un DBGrid al clickear en la fila
goles_hoy=StrToInt(EGoles->Text);//El valor que añado en un TEdit
goles_antes=StrToInt(DBGol->Text);//El valor visualizado en un DBEdit
goles_total=goles_antes+goles_hoy;//Los sumo
//Limpiamos la consulta
QActualizar->SQL->Clear();
//Añadimos la consulta
QActualizar->SQL->Add("UPDATE jugadores SET Goles=:'goles_total' WHERE ID_JUGADOR='"+DBTIdJugador->Caption+"'");//DBTIJugador es una etiqueta que almacena el id del jugador
//Preparamos la consulta
QActualizar->Prepare();
//La ejecutamos
QActualizar->ExecSQL();
//Y liberamos la memoria
QActualizar->UnPrepare();


La verdad es que estoy bloqueado y he probado varias soluciones que he encontrado en el foro pero no me sirven porque me dan otro tipo de errores. ¿Alguien sabe en qué estoy metiendo la pata?
_________________
Ávila, ciudad patrimonio de la humanidad. Visítala.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Modifica tu consulta pasandole los parametros correspondientes
de la siguiente manera


Código:
QActualizar->SQL->Add("UPDATE jugadores SET Goles=:GLSTOT WHERE ID_JUGADOR = :IDJUGADOR");//DBTIJugador es una etiqueta que almacena el id del jugador
QActualizar->SQL->ParamByName("GLSTOT")->Value = goles_total;
QActualizar->SQL->ParamByName("IDJUGADOR")-> = DBTIdJugador->Caption;

_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Hola César:
Lo primero muchas gracias por tu ayuda. Al introducir tu código me da el siguiente error:

'Type mismatch in expression.'.

He tenido que sustituir la sentencia:
QActualizar->SQL->ParamByName("GLSTOT")->Value = goles_total;
por
QActualizar->ParamByName("GLSTOT")->Value = goles_total;
Ya que me decia que ParamByName no es una propiedad de String y de esta forma no me da error y me funciona para sentencias INSERT del mismo programa.

El código completo queda así:


Código:
int goles_hoy, goles_total, goles_antes;
DBGol->DataField="Goles";
goles_hoy=StrToInt(EGoles->Text);
goles_antes=StrToInt(DBGol->Text);
goles_total=goles_antes+goles_hoy;
//Limpiamos la consulta
QActualizar->SQL->Clear();
//Añadimos la consulta
QActualizar->SQL->Add("UPDATE jugadores SET Goles=:GLSTOT WHERE ID_JUGADOR = :IDJUGADOR");
QActualizar->ParamByName("GLSTOT")->Value = goles_total;
QActualizar->ParamByName("IDJUGADOR")->Value =DBTIdJugador->Caption;
//Preparamos la consulta
QActualizar->Prepare();
//La ejecutamos
QActualizar->ExecSQL();
//Y liberamos la memoria
QActualizar->UnPrepare();

_________________
Ávila, ciudad patrimonio de la humanidad. Visítala.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

un pequeño error de copiado, al contestar sin usar el builder.

te ha funcionado el codigo?
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

A mien lo personal no usa los "parameter", lo hago generando la secuencia como cadena , de la sig. forma:



Código:

qry->Close();
qry->SQL->Clear();
qry->SQL->Add("SELECT * FROM xxx WHERE id='"+txtId->Text+"'");
qry->Open;
// Si es fecha
qry->Close();
qry->SQL->Clear();
qry->SQL->Add("SELECT * FROM xxx WHERE fecha="+
DateToStr(txtFecha->Text));
qry->Open;


_________________
Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc

http://www.touchsoftwares.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

No me funciona me da el error:

'Type mismatch in expression.'.

Estoy intentando solucionarlo. Si lo consigo lo pondré en el foro. De todas formas acepto cualquier ayuda.

Gracias a los dos.
_________________
Ávila, ciudad patrimonio de la humanidad. Visítala.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Se me olvidaba, el dato en la tabla que intento actualizar lo he definido como short, no sé si tendrá algo que ver.
_________________
Ávila, ciudad patrimonio de la humanidad. Visítala.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Una ayudita por favor llevo tres dias buscando alguna explicación y nada de nada. Por que me da el error de type mismatch in expression?.
_________________
Ávila, ciudad patrimonio de la humanidad. Visítala.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.