• Viernes 15 de Noviembre de 2024, 08:42

Autor Tema:  Error Al Insertar Fecha (sql 2005)  (Leído 5468 veces)

Sagma

  • Miembro MUY activo
  • ***
  • Mensajes: 390
  • Nacionalidad: bo
    • Ver Perfil
Error Al Insertar Fecha (sql 2005)
« en: Miércoles 22 de Noviembre de 2006, 19:49 »
0
hola a todos, como estan, estoy teniendo problemas al tratar de inserta una fecha con la hora en una DB de SQL 2005, he puesto SET DATEFORMA dmy y naranjas este es el codigo que tengo:

Código: Text
  1.  
  2. Dim FPro As DateTime
  3. FPro = DateTime.Now
  4. FPro = Format(FPro, "dd/MM/yyyy")
  5. 'FPro = Format(FPro, "dd/MM/yyyy hh:mm:ss")
  6.  
  7. Me.txt_codigo.Text = Pn.Nuevo(Desc, CPeri, DGlos, VCom, FPro)
  8.  
  9.  

y el error que me tira es este:

Citar
Error en la insercion del PlanThe conversion of a char data type to a datetime data type resulted in an out-of-range datetime value

ya que quiero insertar la fecha y la hora, alguien me puede orientar que estoy haciendo mal ????

gracias
Sagma

ElNapster

  • Moderador
  • ******
  • Mensajes: 727
    • Ver Perfil
Re: Error Al Insertar Fecha (sql 2005)
« Respuesta #1 en: Jueves 23 de Noviembre de 2006, 17:00 »
0
Chequea el regional settings de tu maquina ya que talvez tienes el formato de mm/dd/yyyy y estas tratando de ingresar el formato dd/mm/yyyy  ;)

Cualquier cosa me contas....  :comp:
"Somos lo que imaginamos ser"
-- --------------------------------------------------------------
-ElNapster
-Designer / Developer Software
-GuaTemALa



senzao18

  • Miembro HIPER activo
  • ****
  • Mensajes: 553
    • Ver Perfil
Re: Error Al Insertar Fecha (sql 2005)
« Respuesta #2 en: Jueves 23 de Noviembre de 2006, 17:35 »
0
Por que no pones la parte de codigo en la que estas insertando el dato a la tabla....

Yo para no meterme con esas mentadas fechas... uso parameter ya sea en commandstring "insert into table (fecha,n1,n2...) values(@fecha,@n1,@n2...)"

Usando procedimientos almacenados nunca eh tenido ese problema......

El problema en si lo tienes a la hora de hacer el insert......
---------------------------------------
Erick Aragon Zepeda
Dessarrollo de Aplicaciones .NET
http]
Blog de Articulos
Mi Blog
NoSolocodigo -->

Sagma

  • Miembro MUY activo
  • ***
  • Mensajes: 390
  • Nacionalidad: bo
    • Ver Perfil
Re: Error Al Insertar Fecha (sql 2005)
« Respuesta #3 en: Viernes 24 de Noviembre de 2006, 14:50 »
0
gracias por contestar, el regional settins de mi maquina esta Español-Bolivia, y es dd/MM/yyyy.

Y esta es la manera que estoy haciendo en tres capas (espero que sea asi).  <_<

Código: Text
  1.  
  2.  
  3.     Sub New(ByVal Comando As SqlClient.SqlCommand)
  4.         Command = Comando
  5.         id_planes = -1
  6.         Desc = ""
  7.         CPeriodo = -1
  8.         DetGlosa = ""
  9.         Est = -1
  10.         FechaPro = "01/01/1901"
  11.  
  12.         Campos.Add("varchar")
  13.         Campos.Add("DESCRIPCIONplan")
  14.         Campos.Add("int")
  15.         Campos.Add("CPERIODOplan")
  16.         Campos.Add("varchar")
  17.         Campos.Add("GLOSAplan")
  18.         Campos.Add("smallint")
  19.         Campos.Add("ESTADOplan")
  20.         Campos.Add("datetime")
  21.         Campos.Add("FPROCESO")
  22.     End Sub
  23.  
  24.     Sub New(ByVal IDPLANES As Integer, ByVal Comando As SqlClient.SqlCommand)
  25.         Dim Datos As New AccesoDatos.Operaciones(Comando)
  26.         Dim dr As DataRow
  27.  
  28.         Command = Comando
  29.         dr = Datos.TraerUno("PLANES", IDPLANES, Comando)
  30.  
  31.         id_planes = IDPLANES
  32.         Desc = dr(1)
  33.         CPeriodo = dr(2)
  34.         DetGlosa = dr(3)
  35.         Est = dr(4)
  36.         FechaPro = dr(5)
  37.  
  38.         Campos.Add("varchar")
  39.         Campos.Add("DESCRIPCIONplan")
  40.         Campos.Add("int")
  41.         Campos.Add("CPERIODOplan")
  42.         Campos.Add("varchar")
  43.         Campos.Add("GLOSAplan")
  44.         Campos.Add("smallint")
  45.         Campos.Add("ESTADOplan")
  46.         Campos.Add("datetime")
  47.         Campos.Add("FPROCESO")
  48.     End Sub
  49.  
  50. Public Function Nuevo(ByVal Descripcion_PLanes As String, ByVal CodPeriodo As Integer, ByVal DetalleGlosa As String, ByVal Estado_planes As Integer, ByVal FechaProceso_Plan As DateTime) As Integer
  51.         Try
  52.  
  53.             Dim AD As New AccesoDatos.Operaciones(Command)
  54.             Dim Valores As New ArrayList
  55.  
  56.             Valores.Add("varchar")
  57.             Valores.Add(Descripcion_PLanes)
  58.             Valores.Add("int")
  59.             Valores.Add(CodPeriodo)
  60.             Valores.Add("varchar")
  61.             Valores.Add(DetalleGlosa)
  62.             Valores.Add("smallint")
  63.             Valores.Add(Estado_planes)
  64.             Valores.Add("datetime")
  65.             Valores.Add(FechaProceso_Plan)
  66.  
  67.             Return AD.Insertar("PLANES", Campos, Valores)
  68.         Catch ex As Exception
  69.             Throw ex
  70.         End Try
  71.     End Function
  72.  
  73.  

Código: Text
  1.  
  2.     Public Function Insertar(ByVal Tabla As String, ByVal Campos As ArrayList, ByVal Valores As ArrayList) As Integer
  3.  
  4.         Try
  5.             Dim Consulta As String
  6.             Dim Consulta2 As String
  7.             Consulta = " Insert Into " & Tabla & "("
  8.             Consulta2 = ") Values ("
  9.  
  10.             Dim Cont As Integer = 0
  11.             While Cont <= Valores.Count - 1
  12.                 Select Case Valores(Cont)
  13.                     Case "varchar"
  14.                         Consulta = Consulta & Campos(Cont + 1)
  15.                         Consulta2 = Consulta2 & "'" & Valores(Cont + 1) & "'"
  16.                     Case "int"
  17.                         Consulta = Consulta & Campos(Cont + 1)
  18.                         Consulta2 = Consulta2 & Valores(Cont + 1)
  19.                     Case "datetime"
  20.                         Consulta = Consulta & Campos(Cont + 1)
  21.                         Consulta2 = Consulta2 & "'" & Valores(Cont + 1) & "'"
  22.                     Case "smallint"
  23.                         Consulta = Consulta & Campos(Cont + 1)
  24.                         Consulta2 = Consulta2 & Valores(Cont + 1)
  25.                     Case "decimal"
  26.                         Consulta = Consulta & Campos(Cont + 1)
  27.                         Consulta2 = Consulta2 & Valores(Cont + 1)
  28.                 End Select
  29.  
  30.                 Cont = Cont + 2
  31.                 If Cont > Valores.Count - 1 Then
  32.                     Consulta2 = Consulta2 & ")"
  33.                 Else
  34.                     Consulta = Consulta & ","
  35.                     Consulta2 = Consulta2 & ","
  36.                 End If
  37.  
  38.             End While
  39.  
  40.             Command.CommandText = Consulta & Consulta2
  41.             Command.ExecuteNonQuery()
  42.  
  43.             Dim Codigo As Integer
  44.             Command.CommandText = "Select Max(ID_" & Tabla & ") From " & Tabla
  45.             Return Command.ExecuteScalar
  46.  
  47.         Catch ex As Exception
  48.             Throw ex
  49.         End Try
  50.  
  51.     End Function
  52.  
  53.  

es campo en la DB de SqlServer 2005 lo tengo como Datetime, ya que es lo unico que hay para almacenar fecha.

gracias por la ayuda.  :comp:
Sagma

senzao18

  • Miembro HIPER activo
  • ****
  • Mensajes: 553
    • Ver Perfil
Re: Error Al Insertar Fecha (sql 2005)
« Respuesta #4 en: Viernes 24 de Noviembre de 2006, 17:37 »
0
Trata con lo siguiente....


Consulta2 = Consulta2 & _
"(CONVERT(Datetime, CONVERT(Varchar, '" & _
Valores(Cont + 1) & _
 "', 101), 101) "
---------------------------------------
Erick Aragon Zepeda
Dessarrollo de Aplicaciones .NET
http]
Blog de Articulos
Mi Blog
NoSolocodigo -->

Sagma

  • Miembro MUY activo
  • ***
  • Mensajes: 390
  • Nacionalidad: bo
    • Ver Perfil
Re: Error Al Insertar Fecha (sql 2005)
« Respuesta #5 en: Sábado 25 de Noviembre de 2006, 14:30 »
0
gracias por la colaboracion, pero aun sigo teniendo problemas, fijate:

cuando esta de esta manera sale el siguiente mensaje:

Código: Text
  1.  
  2. Dim FPro As DateTime
  3. FPro = DateTime.Now
  4.  
  5.  

Citar
Error de conversion al convertir una cadena de caracteres a datetime.

y cuando pongo de esta forma sale el siguiente mensaje:

Código: Text
  1.  
  2. Dim FPro As DateTime
  3. FPro = DateTime.Now
  4. FPro = Format(FPro, "dd/MM/yyyy")
  5.  
  6.  

Citar
la conversion de tipo de dato char a datetime produjo un valor datetime fuera del intervalo

muchas gracias, pero fijate que he echo de esta manera y si lo carga:

Código: Text
  1.  
  2. 'Dim FPro As DateTime = New DateTime(2006, 12, 12, 0, 0, 0)
  3.  
  4.  

lo inserta, pero como veras son fechas fijas, y la hora es cero.

gracias de nuevo por la ayuda  :comp:
Sagma

senzao18

  • Miembro HIPER activo
  • ****
  • Mensajes: 553
    • Ver Perfil
Re: Error Al Insertar Fecha (sql 2005)
« Respuesta #6 en: Sábado 25 de Noviembre de 2006, 17:07 »
0
Cita de: "senzao18"
Trata con lo siguiente....


Consulta2 = Consulta2 & _
"(CONVERT(Datetime, CONVERT(Varchar, '" & _
Valores(Cont + 1) & _
 "', 101), 101) "
Trataste quitando el primer "(" se me barrio está de más jeje....

Que te marca con lo que te pasé.....???

Voy a buscar el codigo que yo uso para fechas.... haber que show....
---------------------------------------
Erick Aragon Zepeda
Dessarrollo de Aplicaciones .NET
http]
Blog de Articulos
Mi Blog
NoSolocodigo -->

senzao18

  • Miembro HIPER activo
  • ****
  • Mensajes: 553
    • Ver Perfil
Re: Error Al Insertar Fecha (sql 2005)
« Respuesta #7 en: Sábado 25 de Noviembre de 2006, 17:15 »
0
Cita de: "senzao18"
Cita de: senzao18,Noviembre 24, 2006 10:37 am


Voy a buscar el codigo que yo uso para fechas.... haber que show....
Pues aui está el codigo... lo uso con un select.. y me funciona bien...


Código: Text
  1.  
  2.  
  3.    Function DPVALE(ByVal strPlaza As String, ByVal Fecha As Date) As DataSet
  4.  
  5.         Dim strQuery As String = _
  6.                     "Select movimientosdp.Plaza, movimientosdp.AsociadoID,CreditoDPVale.CodigoSAP as CodigoClienteSAP, " & _
  7.                     "sum(Case When TipoDocumento in('Abono','Canc Abono') Then  " & _
  8.                     "      Abono - Cargo " & _
  9.                     "    Else " & _
  10.                     "      0  " & _
  11.                     "    END " & _
  12.                     ") as Abono, " & _
  13.                     "sum(Case When TipoDocumento in('Bonificacion','Canc Bonificacion') Then  " & _
  14.                     "      Abono - Cargo " & _
  15.                     "    Else " & _
  16.                     "      0  " & _
  17.                     "    END" & _
  18.                     ") as Bonificacion " & _
  19.                     "from movimientosdp " & _
  20.                     " INNER JOIN CreditoDPVale ON MovimientosDP.AsociadoID = CreditoDPVale.AsociadoID " & _
  21.                     "Where TipoDocumento in ('Abono','Bonificacion','Canc Abono','Canc Bonificacion') AND Plaza =@Plaza AND " & _
  22.                     "FechaMovimiento = @Fecha " & _
  23.                     "GROUP BY movimientosdp.Plaza, movimientosdp.AsociadoID,CreditoDPVale.CodigoSAP " & _
  24.                     "Order by movimientosdp.Plaza,movimientosdp.AsociadoID,CreditoDPVale.CodigoSAP "
  25.  
  26.         Dim oResult As DataSet
  27.  
  28.         Dim sccnnConnection As New SqlConnection(oAppContext.ApplicationConfiguration.DataStorageConfiguration.GetConnectionString)
  29.  
  30.         Dim sccmdSelect As SqlCommand
  31.  
  32.         sccmdSelect = New SqlCommand
  33.  
  34.         With sccmdSelect
  35.  
  36.             .Connection = sccnnConnection
  37.  
  38.             .CommandText = strQuery
  39.             .CommandType = System.Data.CommandType.Text
  40.  
  41.             .Parameters.Add(New System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Bit, 1, System.Data.ParameterDirection.ReturnValue, False, CType(0, Byte), CType(0, Byte), "", System.Data.DataRowVersion.Current, Nothing))
  42.             '.Parameters.Add(New System.Data.SqlClient.SqlParameter("@Referencia", System.Data.SqlDbType.Int))
  43.             .Parameters.Add(New System.Data.SqlClient.SqlParameter("@Plaza", System.Data.SqlDbType.VarChar))
  44.             .Parameters.Add(New System.Data.SqlClient.SqlParameter("@Fecha", System.Data.SqlDbType.DateTime))
  45.  
  46.             .Parameters("@Plaza").Value = strPlaza
  47.             .Parameters("@Fecha").Value = Fecha.ToShortDateString
  48.             '.Parameters("@Referencia").Value = Referencia
  49.  
  50.         End With
  51.  
  52.         Dim oCatalogoCorridasAdapter As SqlDataAdapter
  53.         oCatalogoCorridasAdapter = New SqlDataAdapter
  54.         oCatalogoCorridasAdapter.SelectCommand = sccmdSelect
  55.  
  56.         Try
  57.  
  58.             sccnnConnection.Open()
  59.  
  60.             oResult = New DataSet
  61.  
  62.             oCatalogoCorridasAdapter.Fill(oResult, "DPVALE")
  63.  
  64.         Catch ex As Exception
  65.  
  66.             Throw ex
  67.  
  68.         Finally
  69.  
  70.             If (sccnnConnection.State <> ConnectionState.Closed) Then
  71.                 Try
  72.                     sccnnConnection.Close()
  73.                 Catch
  74.                 End Try
  75.             End If
  76.  
  77.         End Try
  78.  
  79.         sccmdSelect.Dispose()
  80.         sccmdSelect = Nothing
  81.  
  82.         sccnnConnection.Dispose()
  83.         sccnnConnection = Nothing
  84.  
  85.         Return oResult
  86.  
  87.     End Function
  88.  
  89.  

Es un select algo raro pero el ejemplo de fecha ahi está cualquier duda.. haces tu post.
---------------------------------------
Erick Aragon Zepeda
Dessarrollo de Aplicaciones .NET
http]
Blog de Articulos
Mi Blog
NoSolocodigo -->

Sagma

  • Miembro MUY activo
  • ***
  • Mensajes: 390
  • Nacionalidad: bo
    • Ver Perfil
Re: Error Al Insertar Fecha (sql 2005)
« Respuesta #8 en: Sábado 25 de Noviembre de 2006, 18:45 »
0
hola amigo,  :( , la verdad estoy por volverme mono, pero aun sigo.

mira la imagen, de esa manera lo estoy haciendo, segun tu ejemplo que has pasado.

y aun sigo con el mensaje, y no puedo ingresar el dato a la DB.

Citar
Conversion failed when converting datetime from character string

pero fijate, que estuve tratando primero en la DB del Sql 2005 y tambien me daba el mismo error, pero si se quita el p.m., todo ok.  B)
 
Código: Text
  1.  
  2. SET DATEFORMAT dmy;
  3.  
  4. insert into planes(DESCRIPCIONplan,CPERIODOplan,GLOSAplan,ESTADOplan,FPROCESO)
  5. values ('asdasd',2,'zxczxc',1,CONVERT(datetime,CONVERT(varchar,'25/11/2006 13:43:53')))
  6.  
  7.  

ahora la pregnta del millon, como se hace para que no tengo " p.m. ", ya que estoy tratando con:

Código: Text
  1.  
  2.             Dim FPro As DateTime
  3.             FPro = DateTime.Now
  4.             FPro = Format(FPro, "dd/MM/yyyy hh:mm:ss")
  5.  
  6.  

y aun me sigue saliendo el mensaje:

Citar
Conversion failed when converting datetime from character string

gracias por la colaboracion
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
Sagma

senzao18

  • Miembro HIPER activo
  • ****
  • Mensajes: 553
    • Ver Perfil
Re: Error Al Insertar Fecha (sql 2005)
« Respuesta #9 en: Sábado 25 de Noviembre de 2006, 20:30 »
0
Ah ok....
Trata poniendo 102 en lugar de 101.... eso puede funcionar.....


Aunque yo siempre le mongo

strFecha = Format(FEcha,"Short Date")

o

Feche.ToShortDate

Este ultimo ya en el armado de la cadena....

lo que pasa que si lo asigno a una tipo date... seguira poniendo la hora con 00:00:00
---------------------------------------
Erick Aragon Zepeda
Dessarrollo de Aplicaciones .NET
http]
Blog de Articulos
Mi Blog
NoSolocodigo -->

Sagma

  • Miembro MUY activo
  • ***
  • Mensajes: 390
  • Nacionalidad: bo
    • Ver Perfil
Re: Error Al Insertar Fecha (sql 2005)
« Respuesta #10 en: Lunes 27 de Noviembre de 2006, 22:48 »
0
gracias senzao18, pero igual si le pongo el 102,que corresponde al ANSI. da el mismo mensaje de error.  :unsure:

Pero cambie todo, al regional settings de mi maquina, y lo puse la insercion del dato como en un principio, y puse:  :whistling:

Código: Text
  1.  
  2. Dim Fpro as string
  3. fpro = date.now
  4.  
  5.  

y listo lo insera la fecha y la hora, no como queria, pero weno, lo inserta.  :devil:


gracias  :comp:
Sagma