Visual Basic.NET - Buscar registro en SQL en base a DateTime

 
Vista:
Imágen de perfil de Edgar
Val: 113
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Edgar (55 intervenciones) el 17/07/2019 22:23:39
Buenas tardes les cuento mi problema:
Tengo una base de datos SQL, en la cual debo de buscar si varios registros existen en base a un rango de fecha y horas.
Mi base de datos tiene una tabla llamada Estatus con una columna llamada liberación del tipo (datetime,null).
la columna liberacion tiene un formato así:
2019-06-22 23:09:32.020

Tengo datos en una tabla llamada Tabla1, la cual contiene los ID (del 1 al 10) de los empaques.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
For Each renglon As DataRow In Tabla1.Rows
 
 
 Dim Da As New SqlDataAdapter("SELECT * From Estatus Where IDempaque = " + renglon.Item("Id").ToString() + " AND liberacion = 'NO SE COMO PONER ESTO'", cnn)
 
            Dim Dw As New DataTable
            Da.Fill(Dw)
 
            If Da IsNot Nothing Then
                MsgBox("Registro " + db.Rows(0).Item(0).ToString() + " encontrado")
 
          End If
 
            If Da Is Nothing Then
                MsgBox(" Regsitro No encontrado")
 
            End If
 
        Next

Explico, el código va recorriendo los ID de mi tabla1 y va mostrando los datos liberados, pero yo debo de fijar los turnos de trabajo, por ejemplo, debo declarar variables de tiempo para lograr esto (supongo).

Buscar que estén todos los registro (del ID 1 al 10) liberados en mi tabla de SQL Estatus, en la fecha actual (DateNOW), para el turno 1 que es de 6am a 2pm.

Luego para el turno 2 que es de 2pm a 9:30pm y para el tercer turno que es de 9:30 a 6:00am.
Esta aplicación se ejecuta durante todo el día, ya que servirá para saber que empaque no ha sido liberado en lo que va del turno.
Alguien puede ayudarme.
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: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Phil Rob (1546 intervenciones) el 17/07/2019 23:35:54
Hola Edgar,

Tu problema actual parecer como ello de tu proyecto “Pacientes”, en el mes de mayo.
Este es por qué soy sorprendido de no ver de comando WHERE … BETWEEN … en tu frase SQL.

Quizá que tienes que crear cambiar 2 variables (por ejemplo PrimeraHora y UltimaHora) con el mismo formato que ello de la DB y que escribir una frase SQL pareciendo a :

1
"SELECT * FROM … … … " & " Where ElCampoConHora BETWEEN '" & PrimeraHora  & "' AND '" & UltimaHora & "' AND … … … "

...
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 Edgar
Val: 113
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Edgar (55 intervenciones) el 18/07/2019 15:40:46
Hola Phil, y esas variables de Primera hora y segunda hora como las creas? en la tabla de mi SQL, yo solo tengo una columna del tipo DateTime llamda liberación, la cual se ve así:

sql-Liberacion

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
Dim a As String
a = Format("06:00:00")
Dim b As String
b = Format("14:00:00")
 
 
For Each renglon As DataRow In Table1.Rows
 
 
    Dim Da As New SqlDataAdapter("SELECT * From Estatus Where IdEmpaque = " + renglon.Item("Id").ToString() + " AND DATEPART(hh-mm-ss, Liberacion) BETWEEN " + a.ToString() + " And " + b.ToString() + "", cnn)
 
 
    Dim Dw As New DataTable
    Da.Fill(Dw)
 
    If Da IsNot Nothing Then
        MsgBox("Registro " + Tabla1.Rows(0).Item(0).ToString() + " encontrado")
 
    End If
 
    If Da Is Nothing Then
        MsgBox(" No encontrado")
 
    End If
 
Next

Igual mi ciclo IF tampoco sirve
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Phil Rob (1546 intervenciones) el 18/07/2019 16:52:06
Hola,

Veo tu imagen y no veo problema para buscar sobre las fechas con horas ...

Puedes escribir un comando SQL con :
“ … WHERE FORMAT(Column1, "dd/mm/yyyy hh:mm:ss") Between '" & PrimeraHora & "' AND '" & UltimaHora & "'"

Por ejemplo, con la tabla Pacientes de el otro proyecto :

1
2
3
4
SELECT Pacientes.Paciente
FROM Pacientes
WHERE FORMAT(Column1, "dd/mm/yyyy hh:mm:ss")
BETWEEN '04/03/2019 22:50:00' AND '05/03/2019 10:00:00';

Saludos

EdgarBetween
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 Edgar
Val: 113
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Edgar (55 intervenciones) el 18/07/2019 17:40:11
Hola amigo, mira la escribi así pero me marca error, no se como escribir la sentencia.
Lo que quiero es checar cada día si hay un registro, poreso la fecha debe ser en tiempo real, pero las horas fijas:
1
2
3
4
5
6
Dim fecha As DateTime = DateTime.Now.Date
 
 
 
Dim Da As New SqlDataAdapter("SELECT * From Estatus Where FORMAT (Liberacion, "mm/dd/yyyy HH: mm : ss") BETWEEN " + fecha.ToString() + " 06:00:00 AND " + fecha.ToString() + " 14:00:00, cnn)
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Phil Rob (1546 intervenciones) el 18/07/2019 18:31:49
Por favor, pruebas :
1
Dim Da As New SqlDataAdapter("SELECT * From Estatus Where FORMAT (Liberacion, 'mm/dd/yyyy HH:mm:ss') BETWEEN '" + fecha.ToShortDateString  + " 06:00:00' AND '" + fecha.ToShortDateString + " 14:00:00'", cnn)
Atención, no olvidas los ' y " para los String, y no poner " " ente HH:mm:ss.

Comentas y miraré en la tarde o mañana.
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 Edgar
Val: 113
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Edgar (55 intervenciones) el 18/07/2019 19:20:26
Parece funcionar, ya que no se llena el DataGridView1, mi base de datos es SQL.
1
2
3
4
5
Dim fecha As DateTime = DateTime.Now
Dim Da As New SqlDataAdapter("SELECT * From Estation Where FORMAT (Liberacion, 'mm/dd/yyyy HH:mm:ss') BETWEEN '" + fecha.ToShortDateString + " 06:00:00' AND '" + fecha.ToShortDateString + " 14:00:00'", cnn)
Dim Dw As New DataTable
Da.Fill(Dw)
DataGridView1.DataSource = Dw

Otro tema, Sabes como poner si es diferente de nulo (NULL) o igual a Nulo en los ciclos IF? para saber si no existe algún registro?
1
2
If Not IsDBNull(Dw) Then......
If IsDBNull(Dw) Then.......
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Phil Rob (1546 intervenciones) el 18/07/2019 22:03:22
Este debe te ayuardar :
1
2
3
4
5
If Dw.Rows.Count < 1 Then
' El DataTable DW es vacia
Else
' El DataTable DW no es vacia
End If

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 Edgar
Val: 113
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Edgar (55 intervenciones) el 23/07/2019 00:45:17
Hola mi amigo Phil, te cuento mi problema mira:
Yo tengo un primer databale (con 7 Items por ejemplo) que contiene un IdEmpaque con la "Description" el cual sale de aquí:
1
2
3
4
5
6
Private Sub PrimeraVez()
        Dim Da As New SqlDataAdapter("Select IdEmpaque, Description From Empaques Where LineaEmpaque = '" + ComboBox2.SelectedValue.ToString + "'", cnn)
        Dim DT As New DataTable
        Da.Fill(DT)
        save(DT)
    End Sub

Después, de ese datatable uso el IdEmpaque para hacer otra consulta en otra tabla SQL:


1
2
3
4
5
6
7
8
9
10
Private Sub save(Table1 As DataTable)
 
        Dim fecha As DateTime = DateTime.Now
 
        Dim Dw As New DataTable
 
        For Each row As DataRow In Table1.Rows 'Aqui es donde uso el Id del datatable anterior
 
            Dim Da As New SqlDataAdapter("SELECT * From Estatus Where IdEmpaque = " + renglon("Id").ToString() + "AND FORMAT (Liberación, 'mm/dd/yyyy HH:mm:ss') BETWEEN '" + fecha.ToShortDateString + " 06:00:00' AND '" + fecha.ToShortDateString + " 13:00:00'", cnn)
            Da.Fill(Dw)

Entonces, va buscando solo los IdEmpaque (los 7 de mi primera tabla) que estén dentro de la fecha de hoy y de las horas 06:00 y 20:00, es aquí donde comienza mi problema, ya que pongo ciclos IF de está manera:
1
2
3
4
5
6
7
8
9
10
11
12
13
If Not IsNothing(Da) Then                ' el registro existe o NO es NULL en la SQL
 
                ListBox1.DataSource = Table1
                ListBox1.DisplayMember = ("Description")
 
'Aquí el listbox1 se llena con la lista de Descripción de cada empaque que están dentro de la fecha y hora.
 
            Else
 'Aquí se debe de hacer una acción con la cantidad de empaques (de los 7 por ejemplo) que no estén dentro de las horas.
 
            End If
        Next
    End Sub

Necesito lograr algo así:

ejemploCheck

Donde los que sí están dentro de las horas se marquen con palomita en un listbox (no necesariamente debe ser un listbox) u otro Toolbox, y los que no estan dentro con una equis.
Espero haberme explicado bien, no se como lograr esto.
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Phil Rob (1546 intervenciones) el 23/07/2019 12:10:57
Hola Edgar,

Atencion, Da.Fill(Dw) ' Este remplaza el "Fill" precedente por cada cicla ¡

1
2
3
4
5
6
7
8
Dim Dw As New DataTable
 
For Each row As DataRow In Table1.Rows 'Aqui es donde uso el Id del datatable anterior
 
Dim Da As New SqlDataAdapter("SELECT * From Estatus Where IdEmpaque = " + renglon("Id").ToString() + "AND FORMAT (Liberación, 'mm/dd/yyyy HH:mm:ss') BETWEEN '" + fecha.ToShortDateString + " 06:00:00' AND '" + fecha.ToShortDateString + " 13:00:00'", cnn)
Da.Fill(Dw)  ' Remplaza el Fill anterior
 
' …

' No sé si el código siguiente es también en la cicla For, pero el buena proba es (en un Try si problemas) :
If Dw.Rows.Count > 0 Then …
' y no :
' If Not IsNothing(Da) Then …

Tienes que trabajar con el DataTable y no con el DataAdapter, esta último es para llenar el DataTable.

Quizá puedes corregir un poco ante continuar...
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 Edgar
Val: 113
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Edgar (55 intervenciones) el 23/07/2019 16:15:40
Hola Phil, mi código si sirve como lo tengo, ya que arroja en el listbox la Descriptión de mi Table1 (la que se usa para buscar en el Da).
Me arroja en el listbox los empaques que SÍ estan dentro de las horas y la fecha de hoy en la tabla Estatus.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim Dw As New DataTable
 
 
For Each row As DataRow In Table1.Rows 'Aqui es donde uso el Id del datatable anterior
 
 
Dim Da As New SqlDataAdapter("SELECT * From Estatus Where IdEmpaque = " + renglon("Id").ToString() + "AND FORMAT (Liberación, 'mm/dd/yyyy HH:mm:ss') BETWEEN '" + fecha.ToShortDateString + " 06:00:00' AND '" + fecha.ToShortDateString + " 13:00:00'", cnn)
 
Da.Fill(Dw)
 
If Not IsNothing(Da) Then                ' el registro existe o NO es NULL en la SQL
 
 
                ListBox1.DataSource = Table1
 
                ListBox1.DisplayMember = ("Description") 'Aquí el listbox1 SI Se llena  con la lista de Descripción de cada empaque que están dentro de la fecha y hora.
 
 
            Else
 'Aquí NO se como hacerlo para que los Empaques que NO están (de los 7 por ejemplo) dentro de las horas me los arroje como no encontrados o que no están.
            End If
        Next
 
    End Sub


Mi objetivo es lograr una sola lista, la cual se resalten los que sí estan de los que no:

ejemploCheck

No necesariamente debo usar Listboxs, tu que me puedes recomendar, para lograr algo parecido?
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Phil Rob (1546 intervenciones) el 23/07/2019 16:38:09
Decime, los registros que tu quieras son los todos excepto los A, B, C, E, F, G y H. Es a decir, los registros D, I, J, K, ...
He bien comprendido ?
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 Edgar
Val: 113
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Edgar (55 intervenciones) el 23/07/2019 18:18:39
No, me explico:
Ahora mejor he creado un DataGridView en lugar del listbox.
Se busca que todos los registros estén liberados (los 7, o los que sean), de esos que están liberados se deben marcar con palomita (cargar una imagen a la columna Image del DTGV) , y los que todavia NO con equis:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Table1.Columns.Add("Image", GetType(Image)) 'Aqui agrego una columna del tipo imagen a la Table1 para luego ponerla en el DTGV
 
Dim fecha As DateTime = DateTime.Now
 
For Each row As DataRow In Table1.Rows       'Aqui es donde uso el Id de la Table 1 (anterior)
 
 
Dim Da As New SqlDataAdapter("SELECT * From Estatus Where IdEmpaque = " + renglon("Id").ToString() + "AND FORMAT (Liberación, 'mm/dd/yyyy HH:mm:ss') BETWEEN '" + fecha.ToShortDateString + " 06:00:00' AND '" + fecha.ToShortDateString + " 13:00:00'", cnn)
 
 
If Not IsNothing(Da) Then                ' el registro existe o NO es NULL en la SQL
 
DataGridView1.DataSource = db
DataGridView1.CurrentRow.Cells("Image").Value = Image.FromFile("C:\Documents\Visual Studio 2015\Projects\System\bin\Debug\Images\icons8-marca-de-verificación-16.png")  ' Aqui se debe cargar la imagen de palomita SOLO a los registros encontrados.
 
            Else  'Aquí se deben cargar imágenes con una equis (otra imagen) , a los registros que no existen.
 
            End If
 
        Next
    End Sub

Haciendo una prueba con otros empaques (ahora son 12), observo que todos (los12) existen dentro de las horas, pero la imagen del icono de paloma solo se me carga a la primera celda del DatagGrid en vez de todos:

checkkk


Y si un registro no existe, se debe cargar otra imagen(una con una equis por ejemplo)
Osea, la cantidad de empaques a buscar, NO es fija ya que la cantidad de IdEmpaque de la Table 1 es variable, entonces se busca que los IdEmpaque que contiene la Table 1 (pueden ser 7, o 12 o 15 o los que sean, ya que la Table1 se llena con otra consulta anterior) existan en el Da, si no es así deben marcarse con una equis y si sí existen con una palomita.
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Phil Rob (1546 intervenciones) el 23/07/2019 23:06:00
No soy seguro de bien comprender todo.

Pero veo tu codigo y propongo de modificar :
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
Table1.Columns.Add("Image", GetType(Image)) 'Aqui agrego una columna del tipo imagen a la Table1 para luego ponerla en el DTGV
 
Dim fecha As DateTime = DateTime.Now
 
        Dim ImageEquis As System.Drawing.Image
        Dim ImagePaloma As System.Drawing.Image
 
ImagePaloma = System.Drawing.Image.FromFile("C:\Documents\Visual Studio 2015\Projects\System\bin\Debug\Images\icons8-marca-de-verificación-16.png")
ImageEquis = System.Drawing.Image.FromFile("C:\ ……….     ") ' A completar
 
DataGridView1.DataSource = db   ‘ que es db, es conocido aquí ?
 
' si db es conocido aquí, puedes utilizar DataGridView1 para el comando SQL y para la cicla : 
 
' For Each row As DataRow In Table1.Rows    'Aqui es donde uso el Id de la Table 1 (anterior)
 
 
For R As Integer = 0 To DataGridView1.Rows.Count -1
 
‘ y remplazar renglon("Id").ToString() por DataGridView1.Item(0, R).Value.ToString
 
Dim Da As New SqlDataAdapter("SELECT * From Estatus Where IdEmpaque = " + DataGridView1.Item(0, R).Value.ToString
 + "AND FORMAT (Liberación, 'mm/dd/yyyy HH:mm:ss') BETWEEN '" + fecha.ToShortDateString + " 06:00:00' AND '" + fecha.ToShortDateString + " 13:00:00'", cnn)
 
 
If Not IsNothing(Da) Then                ' el registro existe o NO es NULL en la SQL
 
''''DataGridView1.DataSource = db
''DataGridView1.CurrentRow.Cells("Image").Value = ImagePaloma 
DataGridView1.Item("Image", R).Value = ImagePaloma
 
            Else  'Aquí se deben cargar imágenes con una equis (otra imagen) , a los registros que no existen.
'' DataGridView1.CurrentRow.Cells("Image").Value = ImageEquis 
DataGridView1.Item("Image", R).Value = ImageEquis
 
            End If
 
Da.Dispose  'Necesario para liberar memoria porque  existe un New a cada cicla.  ' !!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
='/img/emoticons/smile.gif' width='22' height='22' border='0' />
        Next
End Sub

Si puedes poner imagen en línea 1, no veo para que este no funcionar para otra líneas.

Espero que esto funciona ...
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 Edgar
Val: 113
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Edgar (55 intervenciones) el 24/07/2019 01:47:30
Hola mi amigo, explico el problema:
La Table1 es una datatable de columna "Id" y una columna "Description" (con datos ya cargados previamente)
Luego le agrego una columna del tipo imagen a la Table1, cuya columna está vacía.

GetType(Image)) 'Aqui agrego una columna del tipo imagen a la Table1 para luego ponerla en el DTGV

Mi código queda así:
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
Table1.Columns.Add("Image", GetType(Image)) 'agrego una columna del tipo imagen a la Table1 para luego ponerla en el DTGV
Dim fecha As DateTime = DateTime.Now
 
Dim Dw As New DataTable
 
DataGridView1.DataSource = Table1
 '(el DTGV siempre muestra la Table1, pero las imágenes de cada celda de la columna "Image" (la cual no tiene ninguna imagen cargada aún) deben irse agregando del modo que sí el Id de la Table1 existe dentro de la primera hora y segunda hora de la tabla Estatus, si existe debe ponerse la ImagePaloma, si no existe debe ponerse la ImageEquis.
 
Dim ImageEquis As System.Drawing.Image
Dim ImagePaloma As System.Drawing.Image
 
ImagePaloma = System.Drawing.Image.FromFile("C:\Documents\Visual Studio 2015\Projects\System\bin\Debug\Images\icons8-marca-de-verificación-16.png")
 
ImageEquis = System.Drawing.Image.FromFile("C:\Documents\Visual Studio 2015\Projects\System\bin\Debug\Images\icons8-marca-de-verificación-1999.png"")

For Each row As DataRow In Table1.Rows       'uso el Id de la Table1 para ver si existe dentro de la búsqueda de Da:

Dim Da As New SqlDataAdapter("SELECT * From Estatus Where IdEmpaque = " + row("Id").ToString() + "AND FORMAT (Liberación, 'mm/dd/yyyy HH:mm:ss') BETWEEN '" + fecha.ToShortDateString + " 06:00:00' AND '" + fecha.ToShortDateString + " 13:00:00'", cnn)
 
Da.Fill(Dw)
 
If Dw.Rows.Count > 0 Then          'para los Id de la Table1 que sí existen dentro de Da debe cargarse la imagePaloma en la columna Image
 
                For R As Integer = 0 To DataGridView1.Rows.Count - 1
                    DataGridView1.Item("Image", R).Value = ImagePaloma
                Next
Else                                               'para los Id de la Table1 que NO existen en Da debe cargarse la ImageEquis
 
                For R As Integer = 0 To DataGridView1.Rows.Count - 1
                    DataGridView1.Item("Image", R).Value = ImageEquis
                Next
 
            End If
 
 
        Next

Lo que me ocurre es que si existe al menos un Id (de los que tiene la Table1) me marca todos con paloma:

12Palomas

Y sí al menos hay uno que no está, me marcan todos con ImageEquis:

12Equis


Y lo que necesito es que cada Id de la Table1 si existe se cargue en el DTGV la Imagepaloma y si no existe con ImageEquis, siendo dramático sería algo así:

Dramatizacion
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 Edgar
Val: 113
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Edgar (55 intervenciones) el 24/07/2019 02:09:42
Por ejemplo, en mi SQL concentrándonos en estos Id, puedo ver que están liberados dentro de las 06:35:00 y 06:39:00
Ides

Entonces en mi Da hago esta búsqueda para ver si se intercalan las ImagePaloma y la ImageEquis según el caso:

For Each row As DataRow In Table1.Rows 'uso el Id de la Table1 para ver si existe dentro de la búsqueda de Da:

Dim Da As New SqlDataAdapter("SELECT * From Estatus Where IdEmpaque = " + row("Id").ToString() + "AND FORMAT (Liberación, 'mm/dd/yyyy HH:mm:ss') BETWEEN '" + fecha.ToShortDateString + "06:00:00' AND '" + fecha.ToShortDateString + " 06:36:00'", cnn)

Dejando fuera apropósito a los Id 2,3 y 8,
Osea que para los demás Id de la Table1 en la columna "Image" en el DTGV1 debe cargarse la ImagenPaloma y los Id 2,3 y 8 debe cargarse la ImageEquis y esto NO sucede, me sale el siguiente resultado erroneo:
12Palomas

Cuando debería salir así :

ejemploEquis
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Phil Rob (1546 intervenciones) el 24/07/2019 09:58:32
Hola Edgar,

Este es un buen día que comienza !

"Y lo que necesito es que cada Id de la Table1 si existe se cargue en el DTGV la Imagepaloma y si no existe con ImageEquis, siendo dramático sería algo así " es muy claro para me.

Para qué tu codigo no es mismo que el mio ? Pongo uno If en una cicla For (como en tu codigo precedente) y aqui, en tu codigo, pones dos For en uno If.

En la tarde, utilizaré el código de 01:47 et tu ejemplo de 02:09 y crearé un projecto con Access para testar. Seria mejor si envias foto de la tabla completa (con los 12 registros).

Te informo después.

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 Edgar
Val: 113
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Edgar (55 intervenciones) el 24/07/2019 15:43:53
Hola, la Table1 (Datatable) es la que contiene los 12 registros, y de esos 12 registros solo los Id se utilizan para buscar en el Da:
La Table1 es la que se debe ver en el DTGV1, sí existe el registro se debe poner una ImagenPaloma, si no, se debe poner ImageEquis,
Reviso tu solución, en un momento le escribo mi amigo.
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Phil Rob (1546 intervenciones) el 24/07/2019 17:51:30
Este es exactamente esto es hago !
Pero, no tengo 12 registros por que no tengo tu DB ...

Si mi solución no conviene, tienes que enviar las 2 tablas de la DB para agregar en mi DB.

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 Edgar
Val: 113
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Edgar (55 intervenciones) el 02/08/2019 06:14:38
Hola mi gran amigo.
El código es excelente y funciona, pero tengo una duda, de como se podría aplicar a este caso:

Por ejemplo.
Supongamos que un usuario es el encargado de llenar los 12 registros (por ejemplo) en la base de datos, supongamos que se ejecuta la aplicación para verificar sí el usuario ya realizó el llenado de los 12.

Al momento de ejecutar la aplicación aparece esto:

Caso-11

Entonces eso quiere decir que el usuario NO ha llenado en la base de datos los registros 7,9 y 11 todavía...
Pero el usuario tal vez está haciendo el llenado del 7,9 y 11 mientras la aplicación está ejecutándose.....

Mientras la aplicación está ejecutándose y mostrando el DTGV ¿Existe una manera de hacer que el DTGV cambie automáticamente la ImageEquis por la ImgePaloma en el momento que el usuario llene los ID faltantes?
Sabes como hacer esto mi amigo Phil?
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Phil Rob (1546 intervenciones) el 02/08/2019 08:31:25
Hola Edgar,

Rápidamente, con una primera idea, propongo esto :

Poner un Timer con un Interval de 2 a 5 segundos (pongo 3 segundos en mi ejemplo)
Start el timer cuando es terminado el llenado del DGV
Cuando el Timer Tick, llamar el procedimiento de iniciar (Button1_Click) para recargar el DVG

He hecho el ejemplo en mi codigo de otro dia. Adjunto el archivo EdgarESParaHorasConTimer.zip.

Tienes que ver las lineas :

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
Public Class Proba
 
    Dim WithEvents MiTimer As New Timer
' ... ... ...
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        MiTimer.Interval = 3000   ' 3 segundos
' ... ... ...
 
    Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
        MiConnexion.Dispose()     ' vaciar la memoria !!! 
        MiTimer.Stop()
        MiTimer.Dispose()
    End Sub
 
    Private Sub Save(Table1 As DataTable)
' ... ... ...
            Dw.Clear()
            Da.Dispose()
        Next
        MiTimer.Start()
    End Sub
 
   Private Sub MiTimer_Tick(sender As Object, e As EventArgs) Handles MiTimer.Tick
        MiTimer.Stop()
        Button1_Click(Me, Nothing)
    End Sub

Que tenga un buen dia
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 Edgar
Val: 113
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Edgar (55 intervenciones) el 05/08/2019 18:28:19
Hola mi gran amigo, el añadir el timer fue una excelente idea, funcionó perfecto.

Lo que necesito es añadir una alarma sonora, explico:

Sí hay al menos una ImageEquis en el DatagGridView1 entonces activar la alarma, intenté colocar esta línea aquí pero NO resultó, ya que la alarma se reinicia por el Timer de 3 segundos :

1
2
3
4
5
6
7
8
If Dw.Rows.Count > 0 Then
 
    DataGridView1.Item("Controle", R).Value = ImagePaloma
 
Else
    DataGridView1.Item("Controle", R).Value = ImageEquis
    My.Computer.Audio.Play("C:\Users\Edgar\Desktop\alarmaSonido.wav")
End If

Lo que necesito es que suene la alarma si hay al menos una ImageEquis y se desactive (o no se active) si todas son "ImagePaloma"
Donde pondrías esa línea del código mi amigo?, otra opción podría ser aumentar los segundos en el Timer? o agregar otro timer?
Buena tarde :)
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Phil Rob (1546 intervenciones) el 05/08/2019 21:44:33
Hola,

El Timer recarga el DGV y si la condición del sonido es presente, el sonido será todavía activado.
Si el sonido no es activado, este es que no hay más imagen Equis.
Quizá puedes agregar otra señal para aumentar la duración de la información, por ejemplo :

1
2
3
4
5
6
7
8
' ... ... ...
       Else
                DataGridView1.Item("Controle", R).Value = ImageEquis
                DataGridView1.Item("Descripcion", R).Style.ForeColor = Color.Red    ' Red on Yellow es muy visible !!!!
                DataGridView1.Item("Descripcion ", R).Style.BackColor = Color.Yellow
                My.Computer.Audio.Play("C:\Users\Edgar\Desktop\alarmaSonido.wav")
       End If
' ... ... ...

Un segundo Timer no paréceme ser una buena idea.

Buena tarde
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 Edgar
Val: 113
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Edgar (55 intervenciones) el 05/08/2019 22:04:26
Hola, lo intentaré y te aviso...
Lo que estaba pensando era recorrer el DTGV1 y verificar sí la columna "Controle" tiene alguna ImageEquis, sí es así activar la alarma (según un segundo Timer), no se sí es buena idea...
Trabajo en ello y le informo mi amigo...
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 Edgar
Val: 113
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Edgar (55 intervenciones) el 06/08/2019 06:21:53
Hola, ya pude arreglar el problema, el tiempo del Timer lo aumenté a 20,000, el código ya sirve como debe de ser ...
Mi gran amigo, sabes como hacer que el archivo .exe se ejecute automáticamente cuando se prenda la computadora?
Explico:
El programa siempre debe estar trabajando, pero puede que la computadora se apague o se reinicie.
Como puedo hacer que mi proyecto se ejecute automáticamente cuando se prenda la computadora (sin una nueva intervención del usuario), ya que en un principio el usuario debe seleccionar una opción del combobox2 para crear DT:

1
2
3
4
5
6
7
8
9
10
11
12
' ... ... ...
Private Sub PrimeraVez()
    Dim Da As New SqlDataAdapter("Select IdEmpaque, Description From Empaques Where LineaEmpaque = '" + ComboBox2.SelectedValue.ToString + "'", cnn)
 
    Dim DT As New DataTable
 
    Da.Fill(DT)
 
    save(DT)
 
End Sub
' ... ... ...

Mi duda es: cuando se prenda la computadora, se ejecute automáticamente el archivo .exe y se seleccione automáticamente una opción en el comobox y se presione el botón 1?
Existe una forma sencilla de lograr ese objetivo?
Cualquier recomendación me serviría de mucho
Buena noche amigo
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Phil Rob (1546 intervenciones) el 06/08/2019 08:48:15
Hola edgar,

Tienes que buscar cómo llamar una programa al inicio de la computadora (poner el atajo (Link) en la carpeta de los inicios de Windows (en inglés : … in the current user's startup folder …).

Para “ … automáticamente una opción en el ComboBox y se presione el botón 1? … “, no es seguro de bien comprender. Puede escribir en el evento _Load del primero formulario del programa, los códigos para seleccionar en el ComboBox y para “Click” el Boton :
1
2
ComboBox.Text = ComboBox.Items(?...)
Boton1_Click(Me, Nothing)

Que tenga un buen día.
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 Javier
Val: 150
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Javier (77 intervenciones) el 24/07/2019 22:40:04
No se si ya resolviste el problema pero creo que el problema lo tienes en el siguiente fragmento

1
2
3
4
5
6
7
8
9
10
11
12
If Dw.Rows.Count > 0 Then          'para los Id de la Table1 que sí existen dentro de Da debe cargarse la imagePaloma en la columna Image
    // Aqui tendrias que recorrer las filas del DATATABLE para tomar el ID
    For R As Integer = 0 To DataGridView1.Rows.Count - 1
        DataGridView1.Item("Image", R).Value = ImagePaloma  // Aqui tendrias que validar que el ID correspondiente a la fila del DataGridView sea el mismo ID del DATATABLE, si es igual pones la imagen de la paloma, si no la imagen de la X
    Next
Else                                               'para los Id de la Table1 que NO existen en Da debe cargarse la ImageEquis
 
    For R As Integer = 0 To DataGridView1.Rows.Count - 1
        DataGridView1.Item("Image", R).Value = ImageEquis
    Next
 
End If
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Buscar registro en SQL en base a DateTime

Publicado por Phil Rob (1546 intervenciones) el 04/08/2019 21:04:24
Hola,

Hay muchas preguntas sobre la impresión de los documentos.

Este es la razón por que he hecho el ejemplo de un método de trabaja que me gusta.
Envío el proyecto de probas a todos (ImpresionES.zip).

No es la sola manera de hacer y el formato de los datos para la impresora es diferente para cada documento. Este que muestro es solamente un ejemplo para su dar ideas.

Saludos



ParaImprimir
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