FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#2
|
||||
|
||||
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. |
#3
|
|||
|
|||
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 |
#4
|
|||
|
|||
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:
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. |
#5
|
|||
|
|||
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.... |
#6
|
|||
|
|||
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.
|
#7
|
||||
|
||||
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! |
#8
|
|||
|
|||
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)); |
#9
|
||||
|
||||
o sea?
Y yo que dije?
__________________
Tiempo y ocasión acontecen a todos! |
#10
|
||||
|
||||
No entiendo porqué quieres darle formato... según entiendo, no es necesario y con solo hacer:
es más que suficiente, al menos así lo hago yo y no he tenido problemas.
__________________
|
#11
|
||||
|
||||
cuestión de experiencia...
Cita:
__________________
Tiempo y ocasión acontecen a todos! Última edición por nuk3zito fecha: 14-08-2007 a las 23:15:13. |
#12
|
||||
|
||||
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? |
#13
|
||||
|
||||
Cita:
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! |
#14
|
||||
|
||||
Cita:
|
|
|
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 |
|