Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Variables TdateTime vs campos en Access y FieldByName (https://www.clubdelphi.com/foros/showthread.php?t=90476)

ederfcr 17-06-2016 20:07:18

Variables TdateTime vs campos en Access y FieldByName
 
Hola buen día.

Tengo otro inconveniente.

Tengo una tabla Access, llamada plancli, con campos 'ID' (entero autoincrementable), 'cc' (Texto corto), 'plan1' (Texto corto), 'fvenci' (Fecha/Hora). Uso Access 2013.

Tengo el siguiente código que me sirve cuando hago una búsqueda en otra tabla por campo 'cedula' (que es la misma 'cc' en la mencionada tabla plancli) y extraigo el valor del campo 'cedula' del ID buscado:

Código Delphi [-]
  mt.Connection := connection;
  mt.CursorType := ctDynamic;
  mt.LockType := ltReadOnly;
  mt.CommandText := 'SELECT * FROM datosgenerales WHERE ID = ' + IntToStr(id);
  mt.Open();
  if mt.Eof then
  begin
   //otras instrucciones
  end else
  begin
    ccusu := mt.FieldByName('cedula').AsString;
     mt.Next();
  end;
  mt.Close();
  mt.Free();

Donde mt es:

Código Delphi [-]
var
  mt: TADODataSet;


Hasta ahi todo bien. Pero cuando hago la busqueda en la tabla plancli donde lo hago por 'cc' para extraer el valor correspondiente del campo 'fvenci' y asignarlo a una variable (con el mismo nombre venci tipo TDateTime), me arroja error de "No coinciden los tipos de datos en la expresión de criterios", el código es el mismo prácticamente:


Código Delphi [-]
    ds2.CommandText := 'SELECT * FROM plancli WHERE cc = ' + ccusu;
    ds2.Open();
    fvenci:= ds2.FieldByName('fvenci').AsDateTime;
    ds2.Close();
    ds2.Free();


Donde ccusu es la variable tipo string donde esta el valor donde plantarse.

Sera problema de como guarda las fechas en Access y como se deben leer, no se. Necesito ideas y ayuda.

Gracias


EderFCR

TOPX 17-06-2016 21:47:05

Hola buen día.

¿En qué línea ocurre ese error "Data Type Mismatch in Criteria Expression"?

Si ocurre en
Código Delphi [-]
  ds2.Open;
y teniendo en cuenta que el campo cc es de tipo "Texto corto", entonces puede ser que deba usar:
Código Delphi [-]
  ds2.CommandText := 'SELECT * FROM plancli WHERE cc = ' + QuotedStr(ccusu);
-

ederfcr 17-06-2016 23:59:57

Solucionado!!!
 
Gracias!!!

Mi cerebro ya no respondía, tu ayuda fue gloriosa.

Mil gracias


EderFCR

AgustinOrtu 18-06-2016 00:08:22

Como te recomendamos en tu otra consulta, usa parametros cuando ejecutes SQL, y no vas a tener este tipo de problemas


La franja horaria es GMT +2. Ahora son las 05:26:34.

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