PDA

Ver la Versión Completa : "Problema de actualizacion con update"


luisreg
19-09-2003, 20:42:52
Hola amigos del club delphi

Tengo un problema de actualizacion de registros con la sentencia update que la realizo desde un query, el query lo llamo desde un datamodule para actualizar un campo llamado "DiasCred" que son lo dias de credito de la tabla Cliente.
El problema surge al modificar los dias de credito desde un combobox y ejecuto la accion desde un boton llamado "guardar".

Al ejecutar en tiempo de ejecucion me envia un error de excepcion de la BDE mas o menos asi:
Type mismatch in expression.'. Process stopped.

Pero por más que le busco no se cual sea mi error.

Este es el codigo para explicarme mejor dentro del boton:
procedure TfrmModificaCtes.guardaClick(Sender: TObject);
var
diacred: integer; // variable para guardar los dias de credito
begin
diacred:=0;
// con este case al seleccionar el item del combobox "creditodia"
// le paso a la variable diacred los dias de credito
case creditodia.ItemIndex of
-1: dcred:=0;
0: dcred:=0;
1: dcred:=8;
2: dcred:=10;
3: dcred:=15;
4: dcred:=21;
5: dcred:=30;
end;

// aqui mando llamar el query para actualizar el cambio
with DMRegla.qryActualiza do
begin
SQL.Clear;
SQL.Add('update Cliente set Diascred=: param1');
SQL.Add('where id_cliente=: param2');

Params[0].AsInteger:=dcred;
Params[1].AsInteger:=StrToInt(numcte.Text);

ExecSQL;

MessageDlg('Los cambios fueron guardados !!', mtInformation,[mbOK],0);
end;
end;
Agraceria su ayuda, plis.

marcoszorrilla
19-09-2003, 20:50:39
Mira a ver si los parámetros los has declarado del tipo adecuado, porque el error que te arroja apunta a que algún parámetro no corresponde con el campo en el que se prentende guardar.

Un Saludo.

delphi.com.ar
19-09-2003, 20:52:45
Los parámetros los estas poniendo si el espacio entre el : y el nombre... ¿No?,
¿Ambos campos son numéricos en la base de datos?

luisreg
20-09-2003, 19:50:59
marcozorrila
ya cheque los parametros y si corresponden con los campos ya que los tengo asi:
id_cliente tipo short
DiasCred tipo numerico
ah y la variable es dcred no diascred que es en donde guardo el valor del dia segun se haya seleccionado.

delphi.com.ar
si, los parametros los pongo despues de los : sin espacio solo que se me fue ese espacio, y los tipos de datos son numericos como se los mencione a mascozorrilla

este problema me sucedio despues de agregar el campo Diascred en la tabla cliente, y lo agregue desde el databse desktop. La tabla la tengo como maestro, pero no se si altere mal la estructura de la tabla, los demas campos que tengo si los puedo actualizar pero con este no he podido hacer que funcione.

a ver si sirve esto las tablas las cree con visio 2000 y de ahi las pase a paradox.

que me aconsejan que haga.

marcoszorrilla
20-09-2003, 22:01:32
* id_cliente tipo short, quizás aquí esta el fallo, porque con este tipo el máximo que puedes alcanzar en números positivos es de 32767, como normalmente el código del cliente suele tener 7 dígitos.

4300001 por ejemplo si lo intentamos guardar en un campo de tipo Short, nos dará error.

Bueno ya nos dirás si estaba ahí el error.

Un Saludo.

luisreg
23-09-2003, 17:16:17
Hola que tal amigos una disculpa por contestar tan tarde.

marcozorrila
ya cheque este dato y el problema no reside en este campo.

El problema lo encontre en el tipo de datos que estaba declarado como numerico en el campo Diascred y el parametro que lo tenia como entero lo puse como flotante y ya me funciono, es decir de esta manera:

Params[0].asfloat:=dcred

De esta manera me ha funcionado aunque crei que el tipo de datos numerico podria pasarle datos de parametros declarados como enteros pero no fue asi.

Agradezco su tiempo para ayudarme y gracias por su ayuda.

Saludos.