Ver Mensaje Individual
  #1  
Antiguo 25-02-2008
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Reputación: 22
FGarcia Va por buen camino
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.

Última edición por FGarcia fecha: 25-02-2008 a las 21:09:03.
Responder Con Cita