Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-10-2006
DarkGirl DarkGirl is offline
Registrado
 
Registrado: oct 2006
Posts: 3
Poder: 0
DarkGirl Va por buen camino
Cool datetimerpicker-parambyname-SQL server 2000

Hola a todos.
Estoy trabajando con un TQuery, TDataSouse y un Ttable.
Necesito seleccionar una fecha del datetimepicker y segun la fecha debe mostrar un valor en un TDBedit.
Tengo el siguiente código:

Query1.SQL.Clear;
Query1.Close;
Query1.SQL.Text:='SELECT * FROM TOTALES WHERE FEEMLI =:fecha';
Query1.ParamByName('fecha').AsDateTime:= DateTimePicker1.DateTime;
Query1.ParamByName('fecha').Value:=FormatDateTime('mm/dd/yyyy',DateTimePicker1.DateTime);
Query1.Open;

El problema es que el formato de fechas de SQL server.. La consulta no me muestra nada.
Aparece el mensaje:

"....Quey1 parameter 'fecha' not found..."


Alguien me puede ayudar!!!.

Saludos a todos
Responder Con Cita
  #2  
Antiguo 15-10-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Código Delphi [-]
Query1.SQL.Clear;
Query1.Close;
Query1.SQL.Text:='SELECT * FROM TOTALES WHERE FEEMLI =:fecha';
Query1.ParamByName('fecha').Value:= Trunc(DateTimePicker1.DateTime);
Query1.Open;

Veo que le das valores a 2 parámetros que se llaman fecha, pero en el SQL solo añades un parámetro.

De todas formas, puedes que no hayas puesto todo el sql completo para simplificar, creo que el truco está en Trunc, para dar la fecha y quitar la hora.

Si usas FormatDateTime, estas asignando una fecha con tipo de datos String (pueden venir problemas despues).

Si Usas AsDateTime, pues tambien está recibiendo la hora (no sé exactametne como trabaja SQL SERVER, sería cuestion de hacer un ShowMessage despues de abrir la consulta para ver el sql que se ha usado) para ver si añade a la fecha 0:00:00.000 .

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 16-10-2006
DarkGirl DarkGirl is offline
Registrado
 
Registrado: oct 2006
Posts: 3
Poder: 0
DarkGirl Va por buen camino
Cambie el código como me dijiste...

Aún me sale el mensaje
'...Query1 parameter fecha not found...'

Al parecer no quiere leer el parametro que le paso en la consulta SQL.


¿Que puede estar pasando?.

Saludos
Responder Con Cita
  #4  
Antiguo 18-10-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 18
efelix Va por buen camino
DarkGirl yo uso sql server 2000 y en una aplicación donde también uso un procedimiento almacenado que tiene dos parámetros de entrada que son dos fechas, en este caso yo lo que utilizo son los componentes de la paleta ado, es decir un ado stored procedure, en el evento onclick de un botón de comando yo le paso el valor de los date timepicker a los valores de los parámetros del procedimiento almacenado, de la siguiente forma:
Código Delphi [-]
ADOSPPendientesPago.Parameters.ParamByName('@FechaRecepcion').Value :=Trunc(DTPFecha1.Date);
ADOSPPendientesPago.Parameters.ParamByName('@FechaRecepcion1').Value :=Trunc(DTPFecha2.Date);
Te he puesto nada mas la parte de la asignación de los parámetros para que ves como funciona. Chequea bien si has definico correctamente los parámetros y se le has asignado los valores en la propiedad Tparameters a cada uno de ellos. Por otra parte no debes preocuparte por el formato de fechas de sql server. MS SQL Server utiliza un formato de fecha que es mes/día/año que solo lo debes tener en cuenta a la hora de probar el funcionamiento de procedimiento almacenado dentro de él, pero cuando la vas a pasar los valores en tiempo de ejecución a través de delphi esto no tien importancia porque de forma transparente se hacen los cambios pertinentes y todo funciona sin problema alguno. En lo que a mi respecta te diré que me trabaja de maravillas sin ningún problema. Espero que te sirva lo que te he explicado. Suerte.
Responder Con Cita
  #5  
Antiguo 20-10-2006
DarkGirl DarkGirl is offline
Registrado
 
Registrado: oct 2006
Posts: 3
Poder: 0
DarkGirl Va por buen camino
Gracias eFelix por tu comentario,
pero resulta que soy nueva en Delphi.
No sé como utilizar ADO.
Me puedes dar una ayudita...

Como se usa ADOStoreProcedure?

Desde ya muchas gracias
Saludos....
Responder Con Cita
  #6  
Antiguo 21-10-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 18
efelix Va por buen camino
Saludos. En el entorno de desarrollo de delphi hay una paleta con el nobre ADO, la cual tiene varios componentes, el primero de ellos es un ADOConnection para la conexión con la base de datos sql server, ADOTable,ADOStoredProcedure, etc. En tu caso específico tendrías que utilizar el Ado connection para conectarte a la base de datos, si tienes un procedimiento almacenado entonces debes utilizar un ADOStoredProcedure, y en la propiedad conecction del mismo hacer alusión al adoconnection que pusiste en la forma, luego debes ir a la paleta DataAccess y utilizar un DataSource el cual estará vinculado con el ADOStoredProcedure. Una vez hecho esto tienes que trabajar con el ADOStoredProcedure, es decir con su propiedades, fundamentalmente con la propiedad Tparameters, donde podrás ver los parámetros de tu procedimiento almacenado, seleccionando cada uno de ellos y asignandóle un valor o un tipo de datos en correspondencia con el tipo de datos que hayas definido en sql server para ese parámetro. Por ejemplo: si tienes un parámatro que es de tipo fecha, que lo definiste en sql server como datetime o date, tienes que asignarle un valor de tipo datetime o date, porque sini te generaría un error que dirá que el parámetro no ha sido asignado, y así sucesivamente con cada uno de los parámetros de tu procedimiento almacenado. Los procediemientos almacenados de sql server crean por defecto un parámetro de que se llama @RETURNVALUE que es de tipo entero el cual no debes tocar al menos que necesites trabajar con él que creo que ese no es tu caso. Espero que esto te sirva de ayuda para comenzar, de todas no tengas pena en preguntar, que aquí estamos para ayudarnos mutuamente. Suerte.
Responder Con Cita
  #7  
Antiguo 13-08-2007
Avatar de nuk3zito
nuk3zito nuk3zito is offline
Miembro
 
Registrado: ago 2003
Ubicación: "Z" Land
Posts: 244
Poder: 21
nuk3zito Va por buen camino
Wink

Checa este hilo, tiene la solución que buscas... pero con ADO (que es eso lo que también necesitas)
http://www.clubdelphi.com/foros/showthread.php?t=45319

Saludos
__________________
Tiempo y ocasión acontecen a todos!
Responder Con Cita
  #8  
Antiguo 13-08-2007
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
para mssql nada como las fechas en formato iso, ademas hay que poner comillas cuando mandas la fecha en cadena, con esto se debe solucionar tu problema:

Query1.ParamByName('fecha').Value:=QuotedStr(FormatDateTime('yyyymmdd',DateTimePicker1.DateTime));
Responder Con Cita
  #9  
Antiguo 13-08-2007
Avatar de nuk3zito
nuk3zito nuk3zito is offline
Miembro
 
Registrado: ago 2003
Ubicación: "Z" Land
Posts: 244
Poder: 21
nuk3zito Va por buen camino
o sea?

Cita:
Empezado por luisgutierrezb Ver Mensaje
para mssql nada como las fechas en formato iso, ademas hay que poner comillas cuando mandas la fecha en cadena, con esto se debe solucionar tu problema:

Query1.ParamByName('fecha').Value:=QuotedStr(FormatDateTime('yyyymmdd',DateTimePicker1.DateTime));
Y yo que dije?
__________________
Tiempo y ocasión acontecen a todos!
Responder Con Cita
  #10  
Antiguo 13-08-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
No entiendo porqué quieres darle formato... según entiendo, no es necesario y con solo hacer:

Código Delphi [-]
Query1.ParamByName('fecha').AsDateTime:= DateTimePicker1.DateTime;

es más que suficiente, al menos así lo hago yo y no he tenido problemas.
__________________

Responder Con Cita
  #11  
Antiguo 13-08-2007
Avatar de nuk3zito
nuk3zito nuk3zito is offline
Miembro
 
Registrado: ago 2003
Ubicación: "Z" Land
Posts: 244
Poder: 21
nuk3zito Va por buen camino
cuestión de experiencia...

Cita:
Empezado por ContraVeneno Ver Mensaje
No entiendo porqué quieres darle formato... según entiendo, no es necesario y con solo hacer:

Código Delphi [-]
Query1.ParamByName('fecha').AsDateTime:= DateTimePicker1.DateTime;

es más que suficiente, al menos así lo hago yo y no he tenido problemas.
Entre mayor experiencia tengas, te darás cuenta que las leyes de Murphy siguen vigentes y son aplicadas aún a nuestros sistemas en Delphi... pero con el estándar ANSI se resuelve.
__________________
Tiempo y ocasión acontecen a todos!

Última edición por nuk3zito fecha: 14-08-2007 a las 23:15:13.
Responder Con Cita
  #12  
Antiguo 14-08-2007
Avatar de Jparra
Jparra Jparra is offline
Registrado
 
Registrado: nov 2006
Posts: 3
Poder: 0
Jparra Va por buen camino
Mi solucion

Hola,

Pues yo recientemente lo hice de la siguiente forma:
Código Delphi [-]ShortDateFormat := 'yyyymmdd';
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM DBA.POSHeader WHERE Opendate = ' + DateToStr(DateTimePicker1.Date) + ' ORDER BY Transact');
Query1.ExecSQL;
Query1.Open;

A mi me ha funcionado de maravilla... Esto es conectandome a una Base de Datos SQL de SyBase.

He notado que en los ejemplos anteriores no le ejecutaban la sentencia de SQL al Query meriante el Procedimiento ExecSQL, no soy muy experto, pero no es necesario este pas?
Responder Con Cita
  #13  
Antiguo 14-08-2007
Avatar de nuk3zito
nuk3zito nuk3zito is offline
Miembro
 
Registrado: ago 2003
Ubicación: "Z" Land
Posts: 244
Poder: 21
nuk3zito Va por buen camino
Cita:
Empezado por Jparra Ver Mensaje
Hola,

Pues yo recientemente lo hice de la siguiente forma:
Código Delphi [-]ShortDateFormat := 'yyyymmdd';
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT * FROM DBA.POSHeader WHERE Opendate = ' + DateToStr(DateTimePicker1.Date) + ' ORDER BY Transact');
Query1.ExecSQL;
Query1.Open;

A mi me ha funcionado de maravilla... Esto es conectandome a una Base de Datos SQL de SyBase.

He notado que en los ejemplos anteriores no le ejecutaban la sentencia de SQL al Query meriante el Procedimiento ExecSQL, no soy muy experto, pero no es necesario este pas?
Que pasó? O es una o es otra... pero al hacer esas dos cosas, lo único que haces es abrir el query dos veces:
1) sin regresar nada
2) ahora si regresando los datos

Deberías de usar solo el Open, y te recomiendo que leas en la ayuda de Delphi para que sirve el otro.

Mira JParra, lo que comentamos del formato ANSI deberías de usarlo para tus querys también, porque el día que vayas a otra PC con una configuración diferente, ahi te van a hallar si no sabes cual es el problema ni por donde buscarle.
__________________
Tiempo y ocasión acontecen a todos!
Responder Con Cita
  #14  
Antiguo 15-08-2007
Avatar de Jparra
Jparra Jparra is offline
Registrado
 
Registrado: nov 2006
Posts: 3
Poder: 0
Jparra Va por buen camino
Cita:
Empezado por nuk3zito Ver Mensaje
Que pasó? O es una o es otra... pero al hacer esas dos cosas, lo único que haces es abrir el query dos veces:
1) sin regresar nada
2) ahora si regresando los datos

Deberías de usar solo el Open, y te recomiendo que leas en la ayuda de Delphi para que sirve el otro.

Mira JParra, lo que comentamos del formato ANSI deberías de usarlo para tus querys también, porque el día que vayas a otra PC con una configuración diferente, ahi te van a hallar si no sabes cual es el problema ni por donde buscarle.
Tienes razon , Chequie la ayuda de delphi... Pero tambien cai en ese error por un ejemplo que vi en la ayuda, lo que no me di cuenta que se trataba de una consulta de accion. Gracias por sacarme del error!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Delphi y SQL server 2000 Juanito-Kun MS SQL Server 7 06-03-2008 09:51:12
Exportar database sql server 2005 a sql server 2000 ErenioDhG Conexión con bases de datos 1 29-08-2006 15:42:46
SQL Server 2000 y Delphi cmoldes MS SQL Server 2 16-02-2005 20:20:57
SQL SERVER 2000 se cae sga000y MS SQL Server 2 17-01-2005 23:59:23
Ms Word 2000/97 + Ms sql server 7/2000 + almacenar - leer - actualizar Campos jcp_nqn Servers 0 21-12-2003 01:55:14


La franja horaria es GMT +2. Ahora son las 14:17:35.


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
Copyright 1996-2007 Club Delphi