Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Fechas en SQL Server (https://www.clubdelphi.com/foros/showthread.php?t=34772)

trex2000 21-08-2006 17:33:49

Fechas en SQL Server
 
Saludos:
Estoy haciendo una aplicacion que lee datos de SQL Server y hago la conexion por medio de ADO pero al momento de que estoy generando un Query cuando pongo los parametros de la Fecha me manda el sig error:
"La operacion de multiples pasos de OLEDB genero errores.Compruebe los valores de estado de OLE DB si es posible.No se realizo ningun trabajo".

El codigo que estoy usando es el sig:

Cita:

modulo.ADOQuery1.Close;
modulo.ADOQuery1.SQL.Clear;
modulo.ADOQuery1.SQL.Add('Select a.cardholderid,a.cardnumber,a.deleted,');
modulo.ADOQuery1.SQL.Add('b.recordid,b.firstname,b.lastname,b.deleted,b.note4,');
modulo.ADOQuery1.SQL.Add('c.param3,c.param2,c.param1,c.link1,c.recvtime,c.gentime,c.link2,c.link3,c. deleted');
modulo.ADOQuery1.SQL.Add('From card a,cardholder b,history c');
modulo.ADOQuery1.SQL.Add('Where (a.cardholderid = b.recordid)And (b.recordid=c.link3)And(a.Deleted = 0)');
modulo.ADOQuery1.SQL.Add('And (a.cardnumber Between :EmpIni And :EmpFin)And((c.link1 = :Puerta1)Or(c.link1 = :Puerta2))');
Modulo.ADOQuery1.SQL.Add('And (b.note4 <> :Depto)');
Modulo.ADOQuery1.SQL.Add('Order By a.Cardnumber');
Modulo.ADOQuery1.Parameters.Clear;
Modulo.ADOQuery1.Parameters.CreateParameter('EmpIni',ftInteger,pdInput,10,null);
Modulo.ADOQuery1.Parameters.CreateParameter('EmpFin',ftInteger,pdInput,10,null);
Modulo.ADOQuery1.Parameters.CreateParameter('Puerta1',ftInteger,pdInput,10,null);
Modulo.ADOQuery1.Parameters.CreateParameter('Puerta2',ftInteger,pdInput,10,null);
Modulo.ADOQuery1.Parameters.CreateParameter('FechaIni',ftDate,pdInput,25,null);
Modulo.ADOQuery1.Parameters.CreateParameter('FechaFin',ftDateTime,pdInput,25,null);
Modulo.ADOQuery1.Parameters.CreateParameter('Depto',ftString,pdInput,25,null);
Modulo.ADOQuery1.Parameters.ParamByName('EmpIni').Value:=Edit_EmpIni.Text;
Modulo.ADOQuery1.Parameters.ParamByName('EmpFin').Value:=Edit_EmpFin.Text;
Modulo.ADOQuery1.Parameters.ParamByName('Puerta1').Value:=Edit_PE.Text;
Modulo.ADOQuery1.Parameters.ParamByName('Puerta2').Value:=Edit_PS.Text;
Modulo.ADOQuery1.Parameters.ParamByName('FechaIni').Value:=DTPFI.Date;
Modulo.ADOQuery1.Parameters.ParamByName('FechaFin').Value:=DTPFF.Date;
Modulo.ADOQuery1.Parameters.ParamByName('Depto').Value:='Mantenimiento';
modulo.ADOQuery1.Open;
Me podrian decir que se debe este error y como corregirlo.

De antemano muchas gracias.:(

vtdeleon 21-08-2006 23:35:29

Saludos

1) Debes utilizar las etiquetas para los codigos. Edita tu mensaje y ponlas, por favor.

2) Las lineas qeu tiene CreateParameter creo que estan demas. El Query crea los parametros automatico. Lo que sí falta es que definas el tipo de datos a cada parametro con DataType.

No estoy seguro si esto puede resolver el problema.

trex2000 22-08-2006 01:23:23

Gracias por tu recomendacio, pero no funciono lo que escribiste para modificar de hecho si quito el createparam me marca un error de que no existe el parametro.Por lo tanto el problema sigue igual, les agradecere mucho su ayuda.

De antemano muchas gracias.:confused:

vtdeleon 22-08-2006 02:37:55

Saludos
Cita:

...de hecho si quito el createparam me marca un error de que no existe el parametro.
Ese error te aparece porque haces Clear en los parametros. Tambien quitalo!

trex2000 22-08-2006 16:21:57

Gracias otra vez por tu ayuda, ya le quite el clear alos parametros, tambien quiete el createparam y puse lo que me dijiste pero me marca el sig. error

Cita:

Caracteristica opcional no implementada
Como lo podria solucionar?

De antemano muchas gracias.:(

vtdeleon 23-08-2006 00:19:35

Saludos

No especificas en que linea te dá ese error, ademas de que desconozco ese error.
Código Delphi [-]

With modulo.ADOQuery1 do 
Begin
  Close;
  SQL.Clear;
  SQL.Add('Select a.cardholderid,a.cardnumber,a.deleted,');
  SQL.Add('b.recordid,b.firstname,b.lastname,b.deleted,b.note4,');
  SQL.Add('c.param3,c.param2,c.param1,c.link1,c.recvtime,c.gentime,c.link2,c.link3,c. deleted');
  SQL.Add('From card a,cardholder b,history c');
  SQL.Add('Where (a.cardholderid = b.recordid)And (b.recordid=c.link3)And(a.Deleted = 0)');
  SQL.Add('And (a.cardnumber Between :EmpIni And :EmpFin)And((c.link1 = :Puerta1)Or(c.link1 = :Puerta2))');
  SQL.Add('And (b.note4 <> :depto)');
  SQL.Add('Order By a.Cardnumber');
{
Como dije anteriormente, en ocasiones ahi que definir el tipo de datos a 
cada parametro, Por ejemplo
    Parameters.ParamByName('EmpIni').DataType:=ftString;
}
  Parameters.ParamByName('EmpIni').Value:=Edit_EmpIni.Text;
  Parameters.ParamByName('EmpFin').Value:=Edit_EmpFin.Text;
  Parameters.ParamByName('Puerta1').Value:=Edit_PE.Text;
  Parameters.ParamByName('Puerta2').Value:=Edit_PS.Text;
  Parameters.ParamByName('FechaIni').Value:=DTPFI.Date;
  Parameters.ParamByName('FechaFin').Value:=DTPFF.Date;
  Parameters.ParamByName('Depto').Value:='Mantenimiento';
  Open;
end;

trex2000 23-08-2006 00:53:18

Saludos:
Donde me genera el error es en las lineas que contienen los paramtros de la fecha.

De antemano muchas gracias.:confused:

vtdeleon 23-08-2006 00:55:57

Viste el comentario que puse dentro del código??

Prueba en asignar el tipo de datos a los parametros, antes de darle el valor:
Parameters.ParamByName('FechaIni').DataType:=ftDate //ftDateTime

trex2000 23-08-2006 01:48:03

Saludos:
Si lo lei y tambien ya lo hice y me marca de todos modos el error.

Gracias por tu tiempo y paciencia.

vtdeleon 23-08-2006 03:51:58

Bueno, lo unico rapido que se me ocurre hasta el momento es que inicies un nuevo proyecto para probar, con un solo formulario, realizar la conexion nuevamente y ejecutar la consulta.

Hazlo asi, una prueba, si funciona pues ya sabes que debes eliminar los componentes ados que tienes en ese proyecto por otros. No digo que los componentes no funcionen bien, sino que puede ser que se haya modificado alguna propiedad que hasta el momento no nos hemos dado cuenta.

Vamos hombre!, Dale caña al asunto;)


La franja horaria es GMT +2. Ahora son las 05:55:36.

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