Foros del Web » Programación para mayores de 30 ;) » .NET »

Fechas y formato (pregunta clásica a la que no encuentro respuesta...)

Estas en el tema de Fechas y formato (pregunta clásica a la que no encuentro respuesta...) en el foro de .NET en Foros del Web. SOLUCIONADO Hola! a ver si mepodéis ayudar con esta cuestión. Trabajo en VB .net. Tengo un DateTimePicker del cual obtengo una fecha en formato DD/MM/YYYY, ...
  #1 (permalink)  
Antiguo 16/02/2010, 13:31
 
Fecha de Ingreso: febrero-2010
Mensajes: 63
Antigüedad: 14 años, 1 mes
Puntos: 0
Fechas y formato (pregunta clásica a la que no encuentro respuesta...)

SOLUCIONADO


Hola! a ver si mepodéis ayudar con esta cuestión. Trabajo en VB .net.

Tengo un DateTimePicker del cual obtengo una fecha en formato DD/MM/YYYY, el caso es que la base de datos que utilizo (SQLite) requiere que los campos de tipo DATETIME tengan el formato YYYY/MM/DD.

Por todo esto creo esta función:

Código vb:
Ver original
  1. 'Dim dt As New DataTable
  2.    Private Function FechaToSQLite(ByRef fecha As Date)
  3.         '************************************************************************************
  4.        '*   Nombre: FechaToSQLite                                                          *
  5.        '*   Parametros de entrada: fecha en formato dd/mm/yyyy                             *
  6.        '*   Parametros de salida: fecha en formato yyyy/mm/dd                              *
  7.        '*   Función: Procedimiento que formatea la hora para guardarla en el               *
  8.        '*              formato de la base de datos                                         *
  9.        '*   Versión: v1.0   16 Feb 2010   XXXXXX XXXXX XXXXXXXXX ([email protected])     *
  10.        '*                                                                                  *
  11.        '************************************************************************************
  12.  
  13.         Dim fechaT As String
  14.         fechaT = fecha.ToString("yyyyMMdd")
  15.         Return fechaT
  16.  
  17.     End Function

a la que llamo desde el evento click de un botón:

Código vb:
Ver original
  1. 'tratamos el datetimepicker dtpNacimiento
  2.        Dim fechaNacimiento As New Date
  3.         fechaNacimiento = dtpNacimiento.Value.Date
  4.         'MsgBox(fechaNacimiento)
  5.        FechaToSQLite(fechaNacimiento)
  6.         'MsgBox(fechaNacimiento)

dtpNacimiento es el DateTimePicker.

El caso es que he probado de mil formas y me es imposible realizar la conversión.

Eso por una parte, por la otra....

Todo esto es para luego enviarlo a la base de datos con:

Código vb:
Ver original
  1. 'Creamos la conexión a la base de datos definida como datasource en Settings
  2.        Dim conexion As New SQLite.SQLiteConnection(My.Settings.origConnectionString)
  3.  
  4.         'Insertamos los datos en la base de datos
  5.        Dim comando As New SQLite.SQLiteCommand("INSERT INTO CLIENTES (nombre, apellido1, apellido2, sexo, fechanacimiento, fechaingreso, telefono, movil, correoe, domicilio, poblacion, provincia, cp, pais, especialidad) VALUES ('" + txtNombre.Text + "', '" + txtApellido1 + "', '" + txtApellido2 + "', '" + sexo + "', '" + fechaNacimiento + "', '" + fechaIngreso + "', '" + txtTelefono + "', '" + txtMovil + "', '" + txtCorreoe + "', '" + txtDomicilio + "', '" + txtPoblacion + "', '" + txtProvincia + "', '" + txtPais + "', '" + cbEspecialidad.SelectedItem + "')", conexion)

Ahí en la sentencia SQL me marca un error que la verdad no entiendo: "El operador "+" no esta definido para los tipos 'String' y System.Windows.Forms.TextBox'.".... en otro punto del código he hecho una consulta igual pero con un SELECT, con lo cual no veo la diferencia....

¿Podríais ayudarme con esto?

Saludos y gracias

Última edición por AlterElt; 17/02/2010 a las 16:41
  #2 (permalink)  
Antiguo 16/02/2010, 15:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Fechas y formato (pregunta clásica a la que no encuentro respuesta...)

Es muy básico:
Código vb.net:
Ver original
  1. dtpNacimiento.Value.ToString("yyyy-MM-dd")
En cuanto a los TextBox, no puedes usar "+" con ellos, sino con su valor, es decir la propiedad .Text:
Código vb.net:
Ver original
  1. Dim comando As New SQLite.SQLiteCommand("INSERT INTO CLIENTES (nombre, apellido1, apellido2, sexo, fechanacimiento, fechaingreso, telefono, movil, correoe, domicilio, poblacion, provincia, cp, pais, especialidad) VALUES ('" + _
  2. txtNombre.Text + "', '" + txtApellido1.Text + "', '" + txtApellido2.Text + "', '" + _
  3. sexo.Text + "', '" + fechaNacimiento + "', '" + fechaIngres.Texto + "', '" + _
  4. txtTelefono.Text + "', '" + txtMovil.Text + "', '" + txtCorreoe.Text + "', '" + _
  5. txtDomicilio.Text + "', '" + txtPoblacion.Text + "', '" + txtProvincia.Text + "', '" + _
  6. txtPais.Text + "', '" + cbEspecialidad.SelectedItem + "')", conexion)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 16/02/2010, 16:04
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 2 meses
Puntos: 606
Respuesta: Fechas y formato (pregunta clásica a la que no encuentro respuesta...)

Yo ando un poco pez con VB.Net (uso C#) pero para concatenar cadenas no se usa & en lugar de +, o es indiferente?
__________________
Aviso: No se resuelven dudas por MP!
  #4 (permalink)  
Antiguo 16/02/2010, 18:18
 
Fecha de Ingreso: febrero-2010
Mensajes: 63
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Fechas y formato (pregunta clásica a la que no encuentro respuesta...)

Hola!

Muchas gracias me ha funcionado bien!

Los + hay que remplazarlos por &, o por lo menos eso creo, aunque he visto en ejemplos ambas cosas... estaría bien que quien pudiera explicara la diferencia... :P

Al final he tenido que quitar el procedimiento para pasar de formato DD/MM/YYYY a YYYY-MM-DD y ponerlo tal cual lo ha puesto gnzsoloyo, si lo pongo en la función no funciona... raro raro

EDITO:

Sabeis aquello que dicen que después de descanasar se ven las solucionas mas rapido? pues si... xD ayer estaba ofuscado ya... bueno asi me funciona bien del todo:

Código vb:
Ver original
  1. 'Declaración de variables
  2.        Dim sexo As New Integer
  3.         Dim fechaNacimiento As String
  4.         Dim fechaIngreso As String
  5.  
  6.         'tratamos el radioButton (Masculino/Femenino)
  7.        If rdoMasculino.Checked = True Then
  8.             sexo = 0 'masculino=0
  9.        ElseIf rdoFemenino.Checked = True Then
  10.             sexo = 1 'femenino=1
  11.        End If
  12.  
  13.         'tratamos la fecha del dtpNacimiento (formateo)
  14.        'fechaNacimiento = dtpNacimiento.Value.ToString("yyyy-MM-dd")
  15.        'fechaNacimiento = dtpNacimiento.Value.ToString()
  16.  
  17.         'tratamos la fecha actual (formateo)
  18.        'fechaIngreso = DateTime.Now.ToString("yyyy-MM-dd")
  19.        '----------------
  20.        'tratamos la fecha del dtpNacimiento (formateo)
  21.        'dtpNacimiento.CustomFormat = "yyyy-mm-dd"
  22.        fechaNacimiento = dtpNacimiento.Value.ToString("yyyy-MM-dd")
  23.  
  24.         'tratamos la fecha actual (formateo)
  25.        fechaIngreso = DateTime.Now.ToString("yyyy-MM-dd")
  26.  
  27.         '--------------------------------
  28.        Dim conexion As New SQLite.SQLiteConnection()
  29.         Dim comando As SQLiteCommand
  30.         'origen de datos
  31.        conexion.ConnectionString = My.Settings.origConnectionString
  32.         'abrimos conexion
  33.        conexion.Open()
  34.         'creamos un comando y lo asociamos a la conexión
  35.        comando = conexion.CreateCommand
  36.         'query
  37.        comando.CommandText = "INSERT INTO CLIENTES (nombre,apellido1,apellido2,sexo,fechanacimiento,fechaingreso,telefono,movil,correoe,domicilio,poblacion,provincia,cp,pais,especialidad) VALUES('" & txtNombre.Text.Replace("'", "''") & "', '" & txtApellido1.Text.Replace("'", "''") & "', '" & txtApellido2.Text.Replace("'", "''") & "', '" & sexo & "', '" & fechaNacimiento & "', '" & fechaIngreso & "', '" & txtTelefono.Text.Replace("'", "''") & "', '" & txtMovil.Text.Replace("'", "''") & "', '" & txtCorreoe.Text.Replace("'", "''") & "', '" & txtDomicilio.Text.Replace("'", "''") & "', '" & txtPoblacion.Text.Replace("'", "''") & "', '" & txtProvincia.Text.Replace("'", "''") & "', '" & txtCodigoPostal.Text.Replace("'", "''") & "', '" & txtPais.Text.Replace("'", "''") & "', '" & cbEspecialidad.SelectedItem & "')"
  38.         'OK Sin fechas> comando.CommandText = "INSERT INTO CLIENTES (nombre,apellido1,apellido2,sexo,fechanacimiento,fechaingreso,telefono,movil,correoe,domicilio,poblacion,provincia,cp,pais,especialidad) VALUES('" & txtNombre.Text.Replace("'", "''") & "', '" & txtApellido1.Text.Replace("'", "''") & "', '" & txtApellido2.Text.Replace("'", "''") & "', '" & sexo & "', '" & fechaNacimiento & "', '" & fechaIngreso & "', '" & txtTelefono.Text.Replace("'", "''") & "', '" & txtMovil.Text.Replace("'", "''") & "', '" & txtCorreoe.Text.Replace("'", "''") & "', '" & txtDomicilio.Text.Replace("'", "''") & "', '" & txtPoblacion.Text.Replace("'", "''") & "', '" & txtProvincia.Text.Replace("'", "''") & "', '" & txtCodigoPostal.Text.Replace("'", "''") & "', '" & txtPais.Text.Replace("'", "''") & "', '" & cbEspecialidad.SelectedItem & "')"
  39.        'con TO_DATE > comando.CommandText = "INSERT INTO CLIENTES (nombre,apellido1,apellido2,sexo,fechanacimiento,fechaingreso,telefono,movil,correoe,domicilio,poblacion,provincia,cp,pais,especialidad) VALUES('" & txtNombre.Text.Replace("'", "''") & "', '" & txtApellido1.Text.Replace("'", "''") & "', '" & txtApellido2.Text.Replace("'", "''") & "', '" & sexo & "', to_date('" & fechaNacimiento & "','DD/MM/YYYY'), to_date('" & fechaIngreso & "','DD/MM/YYYY'), '" & txtTelefono.Text.Replace("'", "''") & "', '" & txtMovil.Text.Replace("'", "''") & "', '" & txtCorreoe.Text.Replace("'", "''") & "', '" & txtDomicilio.Text.Replace("'", "''") & "', '" & txtPoblacion.Text.Replace("'", "''") & "', '" & txtProvincia.Text.Replace("'", "''") & "', '" & txtCodigoPostal.Text.Replace("'", "''") & "', '" & txtPais.Text.Replace("'", "''") & "', '" & cbEspecialidad.SelectedItem & "')"
  40.        'Lanza la query
  41.        comando.ExecuteNonQuery()
  42.         'cerramos comando y conexion
  43.        comando.Dispose()
  44.         conexion.Close()
  45.         MsgBox("Se ha dado de alta un cliente nuevo en la base de datos")

saludos y muchas gracias por la ayuda

Última edición por AlterElt; 17/02/2010 a las 11:50

Etiquetas: encuentro, fechas, formato, respuesta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:29.