Visual Basic.NET - Convertir fecha tipo texto

 
Vista:
Imágen de perfil de Adonis
Val: 55
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Convertir fecha tipo texto

Publicado por Adonis (19 intervenciones) el 20/12/2019 04:48:53
Hola tengo un proyecto en VB.NET mis bases de datos son en SQLITE. en una de las tablas se me muestra un campo de fecha pero ya viene por defecto con tipo de datos texto. Todos los registros de esa tabla la envío integra a otra tabla con nombre distinto y quiero que el campo Fecha se guarde como Date en una columna llamada fecha y como Time en otra columna llamada Hora. El dato que me muestra la tabla1 en el campo Date Time es este: 2019-12-19 22:00:00.000 y necesito que en la tabla2 sea este: 19-12--2019 en el campo Fecha y 22:00:00 en el campo hora. Que a la hora de hacer el insert lo grabe así o que a la hora de consultar por un select me lo devuelva de esta forma.

Agradeceré su ayuda.
Un abrazo a todos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Phil Rob
Val: 2.250
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Convertir fecha tipo texto

Publicado por Phil Rob (577 intervenciones) el 20/12/2019 12:55:46
Hola,

Adjunto un proyecto para testar. El nombre del archivo no es apropiado porque viene de otro objeto.
Contiene el código de conversión siguiente :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 
    Dim FechaHora As String
    Dim Fecha As String
    Dim Hora As String
 
    FechaHora = TBFechaHora.Text
 
    CambiarFechaHora(FechaHora, Fecha, Hora)
 
    TBFecha.Text = Fecha
    TBHora.Text = Hora
 
End Sub
 
Private Sub CambiarFechaHora(ByVal FechaHoraInicales As String, ByRef FechaTratada As String, ByRef HoraTratada As String)
    Dim Fecha As String
    Dim Hora As String
    Dim Mese As String
    Dim Dia As String
    Dim Ano As String
    Dim Hor As String
    Dim Minu As String
    Dim Seg As String
    Dim SepFecha As Integer
    Dim SepHora As Integer
    Dim SepFechaHora As Integer
 
    ' Separar Fecha y Hora
 
    SepFechaHora = FechaHoraInicales.IndexOf(" ")
    Fecha = FechaHoraInicales.Substring(0, SepFechaHora)
    Hora = FechaHoraInicales.Substring(SepFechaHora + 1)
 
    ' Tratar Fecha
 
    SepFecha = Fecha.IndexOf("-")   ' Cambiar - en / segun el caracter utilizado, tambien en las lineas siguiente
 
    Ano = String.Format("{0:0000}", CType(Fecha.Substring(0, SepFecha), Integer))
    Mese = String.Format("{0:00}", CType(Fecha.Substring(SepFecha + 1, Fecha.LastIndexOf("-") - SepFecha - 1), Integer))
    Dia = String.Format("{0:00}", CType(Fecha.Substring(Fecha.LastIndexOf("-") + 1, 2), Integer))
 
    FechaTratada = Dia & "-" & Mese & "-" & Ano  ' Utilizar el caractere que gustamos
 
    ' Tratar Hora
 
    SepHora = Hora.IndexOf(":")
 
    Hor = String.Format("{0:00}", CType(Hora.Substring(0, SepHora), Integer))
    Minu = String.Format("{0:00}", CType(Hora.Substring(SepHora + 1, Hora.LastIndexOf(":") - SepHora - 1), Integer))
    Seg = String.Format("{0:00}", CType(Hora.Substring(Hora.LastIndexOf(":") + 1, 2), Integer))
 
    HoraTratada = Hor & ":" & Minu & ":" & Seg  ' Escribir como gustamos, por ejemplo : HoraTratada = Hor & "H" & Minu & "'" & Seg & "''"
 
End Sub

Que tenga un buen dias

FechaHora
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Richard
Val: 183
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Convertir fecha tipo texto

Publicado por Richard (41 intervenciones) el 20/12/2019 23:35:23
Hola

Aca un codigo mucho mas pequeño y tambien funcional

Formulario

001

Codigo interno

002

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Adonis
Val: 55
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Convertir fecha tipo texto

Publicado por Adonis (19 intervenciones) el 22/12/2019 06:09:19
Les agradezco a ambos su colaboración. Este tipo de conversión al modo que lo muestran ustedes me es conocida. Mi problema está en hacer la concreción directamente en el diseñador del DataSet, es decir hacer la conversión directamente en la consulta select del datatable para que me muestre esas dos columnas en el formato que quiero: Date en la columna fecha y time en la columna hora. Les recuerdo que ni base de datos es en sqlite.

Un abrazo a los dos y muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Richard
Val: 183
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Convertir fecha tipo texto

Publicado por Richard (41 intervenciones) el 22/12/2019 18:25:11
Hola
Hice lo que pediste, espero sea lo que buscas.

Me comentas si te sirvio o es algo distinto lo que buscas

Te dejo las imagenes y el codigo que hice.

001
002
003
004

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Adonis
Val: 55
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Convertir fecha tipo texto

Publicado por Adonis (19 intervenciones) el 23/12/2019 06:12:42
Richard, así como nuestras lo he probado ya y me salta un error, a pesar de que hace la conversión. Por eso vine en busca de este grupo que siempre nos ayudamos mutuamente.
Te paso las imágenes de lo que busco, del error que salta y de como queda desfigurado el tableadapter.

Captura
Captura1
Captura2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Richard
Val: 183
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Convertir fecha tipo texto

Publicado por Richard (41 intervenciones) el 23/12/2019 12:50:09
Hola
Necesito 3 cosas:
1ero
Enviame un select * from tabla de las 2 tablas
2do
Enviame tu base de datos para analizar tus 2 tablas y especificame cual es la tabla de donde tomaras los datos y a que tabla los enviaras.
3ero
Esplicame lo siguiente: Yo entiendo que la tabla origen tiene un campo datetime donde esta almacenado la fecha y hora y de ese campo quieres separarlo en 2 campos, uno de fecha y otro de hora para enviarlo a otra tabla donde tienes un campo fecha y un campo hora. Es correcto lo que indico?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Richard
Val: 183
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Convertir fecha tipo texto

Publicado por Richard (41 intervenciones) el 23/12/2019 14:46:22
El archivo q envie si funciona?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Adonis
Val: 55
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Convertir fecha tipo texto

Publicado por Adonis (19 intervenciones) el 24/12/2019 23:59:56
Si amigo. Tu archivo funciona. Te voy a enviar un resumen de lo que necesito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Adonis
Val: 55
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Convertir fecha tipo texto

Publicado por Adonis (19 intervenciones) el 27/12/2019 04:18:44
A ver cómo te explico:
Mi programa se conecta con unos autómatas del mismo tipo, y a la hora de gestionar sus registros el fabricante escogió sqlite para almacenarlos. Todos esos autómatas poseen las mismas bases de datos, es decir, los nombres de las bases de datos son iguales. Lo que hace mi programa es capturar los datos de cada uno de ellos y enviarlos a una base de datos nueva.
Ubiquémonos solo en una de esas tablas:
Nombre de la base de datos y Tabla original: “Configuraciones”
Nombre la base de datos nueva: Nulec, nombre de la tabla nueva: Historicos
Esta tabla configuraciones es la que está en el autómata que quiero analizar y la muestro en mi programa a través de un DataGridView. A esta tabla yo el agrego dos columnas más: Columna Código, y Columna Hora. En tiempo de ejecución le agrego el código que corresponde a ese autómata, también agrego la columna Hora que no es más que copiar todo lo que está en la columna Fecha de esa tabla

1
2
3
4
5
6
7
8
9
Private Sub q(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
    'Aqui recorro el datagridview y agrego en cada fila el valor del combobox
    For i = 0 To ConfigurableDataGridView.Rows.Count - 1
        ConfigurableDataGridView.Rows(i).Cells("Codigo").Value = ComboBox1.Text
    Next
For i = 0 To ConfigurableDataGridView.Rows.Count - 1
        ConfigurableDataGridView.Rows(i).Cells("Hora").Value = ConfigurableDataGridView.Rows(i).Cells("DateTimeDataGridViewTextBoxColumn").Value
    Next
End Sub
Una vez que tenga esta tabla lista, con un procedimiento, recorro todas sus filas y la paso a una tabla nueva en la base de datos creada por mi:
Este procedimiento se me hace bastante lento y por eso lo hago en segundo plano, pero igual lo que hago es esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
    Try
        Dim i As Integer
        For i = 1 To 1000
            BackgroundWorker1.ReportProgress(i / 10)
            Threading.Thread.Sleep(10)
        Next
        Dim columnas As Integer = ConfigurableDataGridView.ColumnCount
        Dim filas As Integer = ConfigurableDataGridView.RowCount
        Dim c, f As Integer
        Dim Columna As String()
        ReDim Columna(0 To columnas - 1)
        For f = filas To 1 + 1 Step -1
            For c = 0 To columnas - 1
                Dim valor As String = ConfigurableDataGridView.Rows(ConfigurableDataGridView.Rows.Count - f).Cells(c).Value.ToString()
                Columna(c) = valor
            Next
 
            Dim resultado As String = HistoricosTableAdapter.ScalarQuery(Columna(1), Columna(2), Columna(3), Columna(4), Columna(5), Columna(6), Columna(7), Columna(8), Columna(9), Columna(10), Columna(11), Columna(12), Columna(13))
            If resultado = Nothing Then
 
                HistoricosTableAdapter.Insert(Columna(0), Columna(1), Columna(2), Columna(3), Columna(4), Columna(5), Columna(6), Columna(7), Columna(8), Columna(9), Columna(10), Columna(11), Columna(12), Columna(13))
 
            Else
                HistoricosTableAdapter.UpdateQuery(Columna(0), Columna(1), Columna(2), Columna(3), Columna(4), Columna(5), Columna(6), Columna(7), Columna(8), Columna(9), Columna(10), Columna(11), Columna(12), Columna(13))
 
            End If
        Next
        e.Result = Me.HistoricosTableAdapter.Fill(Me.NulecDataSet.Historicos)
    Catch ex As System.Exception
        MsgBox("Los datos ya existen, o la columna código está vacía")
    End Try
End Sub
Si te das cuenta utilizo una consulta ScalarQuery para comprobar si en una fila los datos existen.
Un Insert para insertar los datos de la tabla original a la tabla Nueva. Un UpdateQuery para actualizar. Y un Select para mostrar los datos copiados a la tabla nueva.

Todo esto lo hago porque la tabla original no debo modificarla, pero cuando paso los datos a la tabla nueva (Historicos) los campos Fecha y Hora de la tabla nueva pasan como tipo Texto porque si en la configuración de la tabla nueva los elijo tipo Date y tipo Time los registros no pasan. Todo lo que busco es convertir esos dos campos en el procedimiento que graba los datos y lleguen ya en el formato que necesito, o de lo contrario que a la hora de hacer la consulta select se conviertan y vengan en el formato necesitado.
Es posible que no entiendas lo que he tratado de explicarte pero en resumen lo que necesito es convertir en una consulta del mismo diseñador del dataset los campos fecha y hora que están en texto a Date y Time.

También necesito Revises el procedimiento que utilizo para pasar los datos de una tabla a otra pq cuando pasa de 1000 filas se hace demasiado lento.

Un abrazo y muy agradecido ya por su atención.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Adonis
Val: 55
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Convertir fecha tipo texto

Publicado por Adonis (19 intervenciones) el 27/12/2019 05:02:57
Espero puedas entender lo que intento hacer.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar