Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Error de criterios en consulta ADO (https://www.clubdelphi.com/foros/showthread.php?t=53622)

FGarcia 25-02-2008 20:29:38

Error de criterios en consulta ADO
 
Hola!

Llevo varios dias dandole vuelta a este error y no encuentro cual es el problema, En un formulario con un boton llamo a un procedimiento que se encuentra declarado en un modulo de datos, la primera vez se ejecuta correctamente, la siguiente vez que lo intento aparece el mensaje de error:

Cita:

---------------------------
Debugger Exception Notification
---------------------------
Project Captura21.exe raised exception class EOleException with message 'No coinciden los tipos de datos en la expresión de criterios'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
La llamada desde el boton en el formulario:

Código Delphi [-]
procedure TfrmPrincipal.Button1Click(Sender: TObject);
begin
  LogicaDatos.InsertarCapturas('1','   1234');
end;

El procedimiento en el modulo de datos:

Código Delphi [-]
procedure TLogicaDatos.InsertarCapturas(ID:string;Datos:string);
var
  contador: integer;
begin
  //Ponemos a Cero el Contador temporal
  contador := 0;
 
  {Buscamos todos los registros que correspondan a este ID en la tabla Captura}
  with QyUltimo do
    begin
      Close;
      sql.clear;
      sql.add('SELECT * FROM Captura ' +
              'WHERE (Bascula = ' + QuotedStr(ID) + ')' +
              'ORDER BY Consecutivo');
      open;
    end;
 
  //Si la consulta nos regresa datos es decir que no esta vacia
  if not QyUltimo.IsEmpty then
    begin
      //Nos posicionamos en el ultimo registro
        QyUltimo.Last ;
      //Si el campo Descarga no es nulo. Existe algun dato
        if not QyUltimo.FieldByName('Descarga').IsNull then
          begin
            //Obtenemos el ultimo valor de descarga para esta báscula
            contador := QyUltimo.FieldByName('Descarga').Value;
            //Incrementamos el contador
            Inc(contador);
          end;
    end
  else
    {La primera vez la consulta esta vacia asi que incrementamos el contador }
      Inc(contador);
 
  //Vamos al ultimo registro de la tabla
  CnxDatos.ADOTable1.Last ;
  //Grabamos los cambios
  with CnxDatos.ADOTable1 do
    begin
      Append;
        FieldByName('HoraFecha').Value := Now;
        FieldbyName('Bascula').Value := ID;
        FieldByName('Descarga').Value := contador;
        FieldByName('Peso').Value := Datos;
        FieldByName('Acumulado').Value := Datos;
      Post;
    end;
end;

Lo curiosos de este asunto es que este mismo procedimiento lo uso en otra aplicacion similar y no me da problemas, aqui lo que hice fue reducir la aplicacion a su minimo para solo ver este procedimiento y tratar de encontrar ese error pero no, no veo nada raro. ¿sera que de tanto verlo ya se me escondio el error?:(

Por cierto es Delphi 7, ADO y Access.

Gracias por su tiempo.


EDITO: Era un error en la declaracion del campo bascula en la bd. Lo tenia declarado como integer y ¡le intentaba mandar un string! Accidentalmente modifique la creacion de la bd y nunca pense en eso.


La franja horaria es GMT +2. Ahora son las 13:16:21.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi