![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Ok. Tu problema de hecho es muy común para quienes se inicián en SqlServer
Resulta que cuando manejas fechas estás pueden ser manejadas por Sql server de dos maneras diferentes, en formato americano (yyyy-dd-mm) o en formato europeo (yyyy-mm-dd). Esto provoca que si en el equipo donde ejecutas tu aplicación la configuración regional define el formato en dd/mm/yy y la configuración en tu servidor sql está en mm/dd/yyy, cualquier paso de parámetros en formato datetime va a generar el problema que tu tienes. La solución que implementamos en la empresa fué estandarizar el uso de los campos DateTime. Por ejemplo establecimos que cualquier sp o función que recibiera como parametros valores de fecha estos fueran convertidos a char con el formato 120, y de manera interna en el Sp o función hacemos la reconversión a formato datetime de Sql. Lo que ganamos con esto es que sin importar la configuración de los equipos cliente nuestros sps y funciones siempre funcionarán. Usando tu sp ejemplifico lo que hacemos
ahora bíen desde tus aplicaciones deberas estandarizar de igual manera el paso del valor para que en todas sea de esta manera Y listo con eso te vas a ahorrar un millón de dolores de cabeza. Mucha suerte Última edición por poliburro fecha: 09-12-2006 a las 05:09:29. |
|
#2
|
|||
|
|||
|
Hola Poliburro, muchas gracias por tu respuesta, se nota que eres una persona aventajada en sql sever. Modifiqué el procedimiento almacenado como me indicaste y logré algo que no sabía. Es decir poner el formato de fecha a día-mes-año, porque sql server por defecto lo pone en mes-día-año, es decir que aprendí algo nuevo. Ahora en cuanto a delphi modifiqué el código segun me sugeriste y nada el mismo error. Tengo mis dudas en cuanto a lo que me dices, pues en mi aplicación he utilizado otros procedimientos almacenados que tienen como parámetros campos del tipo datetime, los cuáles les paso a través de un datetimepicker y nunca me dieron ese tipo de error, la única diferencia es que aquellos devuelven un conjunto de resultados y en este caso estoy tratando de actualizar la base de datos. Yo creía que delphi internamente se encargaba de hacer el cambio. Por ejemplo tengo un formulario donde tengo un dbgrid donde muestro un conjunto de registros que cumplen una determinada condición a través de un procedimiento almacenado, el código es el siguiente:
Esto me funciona perfectamente bien. Y el código del procedimiento almacenado que me devuelve el conjunto de registros es este: Por eso te digo que no se donde está el problema. Te reitero la diferencia es que este evuelve un conjunto de resultados y el otro es para actualizar. No se si esa es la causa como tu mismo dijiste soy nuevo en ambas cosas, tanto en sql server como en delphi. El error que se origina te lo pongo textualmente: 'Aplication uses a value of the wrong type for the current operation', cuando le doy ok se detiene en la línea que ya expliqué en el mensaje anterior aún cuando ya hizé el cambi que me sugeriste:ADOSPDebCheque.Parameters.ParamByName('@FechaDebito').Value := FormatDateTime('yyyy-dd-mm',DTPFechaDebitoPanel.Date). Espero puedas ayudarme y hayas entendido mi explicación. Te reitero las gracias. |
|
#3
|
||||
|
||||
|
Cita:
Jjejeje hay un error en la sentencia que estas usando amigo pues debe ser de la siguiente manera
Si observas debe ser yyyy mmm dd Ahora bien, revisa que en tu sp estes pasando el valor convertido en date time .No debe presentarte problema. Cuando usas trunc, en escencia estas haciendo algo parecido al formatdatetime prueba pasandoles el periodo 23/12/2006 al 31/12/2006 a los sps que te devuelven recorsets.suerte
__________________
Conoce mi blog http://www.edgartec.com |
|
#4
|
|||
|
|||
|
Hola poliburro, disculpa que te moleste, pero todavía sigue dando el mismo error, no se que hacer, cambié lo que me dijiste y nada sigue dando le mismo error. Ahora no te entiendo cuando me dices que chequee si en el stored procedure estoy pasando el valor convertido en datetime, como verifico esto, disculpa mi desconocimiento, espero no importunarte con tanta molestia. Te pongo nuevamente el código para que lo veas:
|
|
#5
|
||||
|
||||
|
Podrias postear el nuevo código del sp que te está dando problemas? para ver si es ahí el error.
__________________
Conoce mi blog http://www.edgartec.com |
|
#6
|
|||
|
|||
|
Hola poliburro. Este es el código del procedimiento almacenado:
Te reitero que cuando lo ejecuto en Sql Server funciona perfectamente bien. |
|
#7
|
||||
|
||||
|
humilde opinion
Hola... apenas estoy empezando con el tema que estan tocando, así que no creo poder ayudar. Pero vi un error en el código que podría ser lo que causa el problema: Estan poniendo "mmm" en lugar de "mm"...
Tal vez quede como tonto por no saber nada del tema, pero tal vez les ayude... me arriesgaré.
__________________
"Sé de tal manera y vive una vida tal, que si todos los hombres fueran como tú y vivieran como tú, nuestro mundo sería un paraíso terrenal" Siempre hazlo con la ayuda de Dios
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Se puede pasar una tabla a un procedimiento almacenado? | AFilth | MS SQL Server | 2 | 07-02-2006 13:10:21 |
| Procedimiento Almacenado | scooterjgm | Conexión con bases de datos | 5 | 18-01-2005 18:21:32 |
| Procedimiento almacenado y Ado | LucianoRey | MS SQL Server | 11 | 06-07-2004 22:55:23 |
| actualizar con dbexpres y un procedimiento almacenado | felixgo | Conexión con bases de datos | 1 | 22-06-2004 12:21:17 |
| Procedimiento Almacenado | Ulises | Providers | 3 | 30-01-2004 18:14:58 |
|