| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Rilo Ens

Registrado: 03 Jun 2003Mensajes: 40Ubicación: Ávila
|
Publicado: Mar 14 Mar, 2006 11:54 pm Asunto: Error en sentencia UPDATE |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mie 15 Mar, 2006 6:34 am Asunto: |
|
|
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; |
_________________
 |
|
| Volver arriba |
|
 |
Rilo Ens

Registrado: 03 Jun 2003Mensajes: 40Ubicación: Ávila
|
Publicado: Mie 15 Mar, 2006 10:45 pm Asunto: |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Jue 16 Mar, 2006 12:31 am Asunto: |
|
|
un pequeño error de copiado, al contestar sin usar el builder.
te ha funcionado el codigo? _________________
 |
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Jue 16 Mar, 2006 6:34 pm Asunto: |
|
|
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 |
|
 |
Rilo Ens

Registrado: 03 Jun 2003Mensajes: 40Ubicación: Ávila
|
Publicado: Jue 16 Mar, 2006 11:00 pm Asunto: |
|
|
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 |
|
 |
Rilo Ens

Registrado: 03 Jun 2003Mensajes: 40Ubicación: Ávila
|
Publicado: Vie 17 Mar, 2006 12:00 am Asunto: |
|
|
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 |
|
 |
Rilo Ens

Registrado: 03 Jun 2003Mensajes: 40Ubicación: Ávila
|
Publicado: Dom 19 Mar, 2006 12:15 am Asunto: |
|
|
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 |
|
 |
|