Ingresar Fechas

Tengo una tabla en Sql server y uno de sus campos es smalldatetime, entonces tengo un asp que importa datos a esa tabla pero al importar me envía un mensaje que el formato no es compatible, ademas tengo otro asp con un formulario donde uno de los campos es la fecha, me ocurre lo mismo me dice que el valos Char no coincide con el smalldatetime, mi pregunta es Debo cambiar el formato antes de ingresarlo a la tabla y si es así como lo hago (debiera ser algo así como TODATE(campo_recibido_por_formulario)) o solo poniendo bien la fecha en el campo debiera funcionar.
Julio Herrera

4 Respuestas

Respuesta
1
Para que te admita la fecha tiene que estar bien formateada como es lógico.
Para ver que fecha admite lo que yo haría seria ir al analizador de consultas sql e intentaría hacer un insert manual hasta saber que formato aceptaría (aunque lo puedes ver haciendo un select y viendo como te devuelve los campos fecha.
Una vez sabes que formato necesitas puedes transformarlo desde ASP de varias maneras
Respuesta
1
No me queda claro como haces la inserción de datos en la tabla SQL, en cualquier caso pensando solo en el servidor una sentencia como:
Insert Tabla (Fecha) Values('10/10/2001') funciona perfectamente sin necesidad de convertir la cadena previamente a tipo fecha. Al actualizar desde tu ASP la situacion ideal seria hacerlo mediante ADO y una llamada a un Procedimiento Almacenado, en este caso el parametro del objeto Command de ADO deberias definirlo como tipo AddbTimestamp, pero si lo que haces es pasar la sentencia SQL directamente entonces te sugiero que concatenes previamente el contenido del campo de tu formulario entre comillas simples que es lo que entiende el SQL, esto es "'" & campo & "'".
Respuesta
1
OK.. Julio...
Puedes hacerlo de dos formas, dependiendo como esté el lenguaje del SQL puedes mandar tipos de datos char a campos con fechas...
Por ejemplo: si el lenguaje es en ingles debes mandar el siguiente formato
MM/DD/YYYY
Si es en español: DD/MM/YYYY
De no funcionar así, puedes utilizar funciones de VBScripts para transformar los datos, por ejemplo CDate(valor), esta función te permite optener un tipo válido de fecha con formato Mes / Día / Año...
Mira descubrí que al ingresar datos me ingresa sin problemas pero al actualizar me manda este error:
--------------------------------------------------------------------------------
Error: 80040E07
Descripción:
[Microsoft][ODBC SQL Server Driver][SQL Server]The conversion of CHAR to SMALLDATETIME resulted in a SMALLDATETIME value out of range.
Intento poner un dato de este tipo 15-01-2001, hay algo malo. Cuando el dato esta vacío me acepta este dato pero al modificar uno me manda ese error
El sql que se genera es :
update Facturas2 set Rut='100540703',Nfactura='43 ',FechaIng='04-02-2001',Monto='1803271',ObsObra='Aun sin Observaciones',FechaPago='15-01-2001',ObsPago='Aun sin Observaciones',TipoPago='0',LugarPago='0',Estado='1',Accion='' Where Rut='100540703' And NFactura='43 '
Las dos fechas son SMALLDATETIME
Intenta de esta forma '15/01/2001'
Respuesta
1
Tienes que usar la función
Convert()
En la ayuda de transacc SQL (Transacc SQL Help) esta muy bien detallada la sintaxis así como las conversiones permitidas.
Mariano

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas