![]() |
Problema para insertar un dato de tipo fecha en SQL Server 2000
Estimados
Buenas Noches, tengo el siguiente problema: En una tabla tengo un campo fecha definido como Smalldatetime, cuando creo un procedimiento almacenado en el motor este parametro debe ser pasado como String para que pueda ser guardado. Si creo este mismo procedimiento almacenado (de insercion de registro en la tabla) mediante codigo delphi que seria ..... datamodule.Adoquery.SQL.ADD(Insert Into nTabla Values(:campo1,:campo2,:campo3)) donde el campo2 es de tipo smalldatetime me aparece un error que arroja el motor que me impide realizar la insercion. el resto de la instruccion es datamodule.Adoquery.Parameters.Parambyname('campo1').value:=dato1; datamodule.Adoquery.Parameters.Parambyname('campo2').value:=dato2; datamodule.Adoquery.Parameters.Parambyname('campo3').value:=dato3; ..... Si alguien ya paso por esto y lo pudo solucionar le agradecere me cuente que tengo que corregir en el codigo. Saludos Alejandro Arancibia CHILE ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ FUERZA MINEROS !!!!!!!!!!!!!!!!!! |
El problema es que SQL Server permite la inserción de fechas depende del formato de fecha con el que esté configurado el servidor, un formato universal es el siguiente:
yyyymmdd por ejemplo si tienes la fecha 24-set-2010 debes convertirlo a este valor: 20100924 Saludos |
creo que el problema de entrada es que no deberías de tener que hacer ninguna conversión de texto a fecha o viceversa...
sql server maneja, define y distingue perfectamente los tipos de datos para las fechas. |
Lamentablemente al pasar el dato como fecha desde el datetimepicker1.date al parametro crenado por codigo la instruccion de insercion arroja un error.
Luego probare lo que suguieren acerca del pasar la fecha en formato yyyymmdd Gracias por sus comentarios y luego les cuento que sucedio. Saludos Alejandro Arancibia CHILE |
Pues habría que ver como le estas pasando el parámetros y cuál es el error que te marca.
Lo siguiente funciona perfecto en SQL Server 2000 - 2008:
si tu campo es de tipo "tiempo" pues bastaría con enviar solo el tiempo. Es decir, .Time en lugar de DateTime. |
El error que arroja el motor es el Siguiente:
[Microsoft][ODBC SQL Server driver] Caracteristica opcional no implementada Utilizando el ejemplo que dejastes que es el mismo que tengo en mi codigo. Saludos |
Si aún no has solucionado tu problema podrías probar con esto:
a) parambyname('fecha').AsDateTime := Date; b) parambyname('Fecha').asstring := formatdatetime('mm/dd/yyyy',Date); c) parambyname('Fecha').asstring := formatdatetime('yyyy/mm/dd',Date); Es posible que te estés conectando a la base de datos a través de obdc, si es el caso verifica el idioma que está predefinido para la base de datos. Ok, espero que te sirva.:) |
Filtro por fecha
Finalmente nada funciono y tube que crear el procedimiento almacenado en el motor de base de datos SQL SERVER 2000.
La idea era realizar las consultas desde el codigo del programa y no tener que hacer un procedimiento almacenado por cada consulta. Gracias a todos quienes aportaron.. un dato mas con SQL SERVER 2005 no hay ningun problema con las fechas. |
Hola Alejandro
has probado con la inserción de datos desde el mismo Sql... quisas sea un problema de configuracion como dicen por ahí... en algunas ocaciones te puede dar problemas hasta el separador de Fechas... yo tenia en un datetimepicker como separador el guion "-"... y cuando hacia el insert me daba error... asi que probe con el slash "\" y tambien cambie ese parametro en la configuración regional del computador.. y santo remedio yo realizo la inserción desde delphi como en el ejemplo que te dejo ContraVeneno... Salu2:p:D PS: Otro Chileno más que utiliza Delphi... que bien.. ya no somos tan poquitos.. |
La solución
aquí esta el codigo por si le sirve a alguien mas
SQL.Add('where ((fecnac>=Convert(datetime,:lv_desde,102)) and (fecnac<=Convert(datetime,:lv_hasta,102)))'); Parameters.ParamByName('lv_desde').Value:=DateTimePicker1.date; Parameters.ParamByName('lv_hasta').Value:=DateTimePicker2.date; Pd: Con la inserción del campo fecha no tengo problemas solo al consultar en un rango de fechas. Saludos :) |
Cita:
pero en que momento preguntas por como hacer una consulta.... siempre hablas de insertar un dato... Aqui por ejemplo.. tengo una consulta de Ordenes durante un tiempo definido...
Bueno... Salu2:p:D |
Sorry
Perdon pero este tema ya me tenia un poco confundido, te envie un mensaje a tu correo te llego?
Saludos |
Cita:
Salu2:p:D |
Mensaje Correo
Te envie un mensaje privado y uno a tu correo esto lo obtengo de tu perfil pero claro esta no aparece ninguna direccion solo un Link.
Si puedes me envias tu correo a alerob25@gmail.com Espero no estar cometiendo una falta y que luego el administrador o el moderador me de un buen reto. Saludos |
La franja horaria es GMT +2. Ahora son las 21:12:38. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi