Visual Basic.NET - al seleccionar fecha en datetimepicker no me muestra datos en maskededitbox

 
Vista:

al seleccionar fecha en datetimepicker no me muestra datos en maskededitbox

Publicado por juan manuel (13 intervenciones) el 20/04/2019 08:17:30
que tal gente del foro.

estoy adentrandome hace muy poco en la programacion en visual basic .NET.

les escribo por un problema que tengo en visual basic .net con base de datos access.

resulta que tengo un datetime picker con la propriedad format = long y la propiedad value = 20/04/21019 (todo esto lo configure en tiempo de diseño).

en la tabla de la base access tengo un campo llamado dia_semana con formato = fecha larga.

lo que quiero hacer es que cuando se selecciona una fecha en el datetimepicker me muestre el horario desde atencion en un maskeditbox y el horario hasta de atencion tambien en otro maskeditbox, aparte de la duracion de la consulta. estos datos estan previamente cargados en las tabla de la base access.

la tabla esta conformada de la siguiente manera:

campo id autoincremental
campo dia_semana fecha/date (formato = fecha Larga)
hora_desde texto
hora_hasta texto
duracion consulta tambien de tipo texto el campo.

al principio no funcionaba tampoco, pero despues tocando no se que cosa anduvo perfectamente y, cuando quise ajustar la fecha en la propiedad value del datetimepicker a la actual, se me desconfiguro y volvio a no mostrar nada en los maskedditbox al seleccionar una fecha.

muestro el codigo que tengo ya que debe estar mal algo y, tambien, los formatos de las fechas.

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
conex.Close()
 
conex.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Juan Manuel\Documents\programita 1\turnos clinica.accdb;Persist Security Info=False;"
 
conex.Open()
 
 
 
SQL = "SELECT * FROM DiasTurnos WHERE (dia_semana = @DIASEMANA)"
 
cmd = New OleDb.OleDbCommand(SQL, conex)
 
cmd.Parameters.AddWithValue("@DIASEMANA", Convert.ToString(dtpdiasatencion.Value))
 
 
 
da = New OleDb.OleDbDataAdapter(cmd)
 
dt = New DataTable()
 
da.Fill(dt)
 
If dt.Rows.Count > 0 Then
 
    Dim row As DataRow = dt.Rows(0)
 
    txtnro.Text = row(Convert.ToString("nro_dia"))
 
    mttxtdesde.Text = row(Convert.ToString("hora_desde"))
 
    mtxthasta.Text = row(Convert.ToString("hora_hasta"))
 
    metxtduracion.Text = row(Convert.ToString("duracion_consulta"))
Else
    Me.txtnro.Text = ""
    Me.mttxtdesde.Text = ""
    Me.mtxthasta.Text = ""
    Me.metxtduracion.Text = ""
End If

con el asunto de converttostring no pasa nada y si se lo quito es lo mismo.

desde ya agradecido por cualquier respuesta.
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 Wilfredo Patricio Castillo
Val: 1.239
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

al seleccionar fecha en datetimepicker no me muestra datos en maskededitbox

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 21/04/2019 03:29:45
A ver Juan Manuel.

Si dices que tu campo dia_semana, es de tipo fecha, porqué es que le envías un parámetro de de tipo string?.

Tendrías que pasarle un parámetro de tipo fecha no te parece mas coherente?.

Entonces, en ves de convertir el parámetro a string, tendrías que convertirlo a tipo de dato date.

Otra cosa, hasta donde recuerdo, en msaccess, existen los campos hora (time), por lo tanto tus horas deberías guardarlas como tal, osea en formato Time.

Hay que ser coherente en los tipos de datos, no pretendas manejar tipos de datos fecha y le pases cadenas o viceversa.

Saludos cordiales,
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

al seleccionar fecha en datetimepicker no me muestra datos en maskededitbox

Publicado por juan manuel (13 intervenciones) el 21/04/2019 06:23:54
Muchas gracias.

lo resolvi efectivamente no pasandolo como string, sino como date.

la solucion fue la siguiente:

en la linea donde pasaba el parametro:

cmd.parameters.addwithvalue("@DIASEMANA", dtpdiasatencion.value)

hice lo siguiente:

cmd.parameters.addwithvalue("@DIASEMANA", dtpdiasatencion.value.date)

y funciono perfectamente.

lo que pasa es que soy nuevo en visual basic .net y, sobre todo, al trabajar con fechas.

lo que me sucede ahora es que en el evento del datetimepiker_valuechanged_1 en vez de datetimepicker_valuechanged me salta el error de que esta autorizado a cambiar la propiedad connestionstring ya que esta abierta y en el evento datetimepicker_valuechanged no me funcion como si lo hace en el evento datetimepicker_value_changed:1. esto como lo puedo modificar?.

perdon. ya lo resolvi.

me falto poner en el evento datetimepicker value_changed_1 lo siguiente:

conex.close.

no me di cuenta de cerrar la conexion. que error garrafal el mio.

ya esta resuelto y funciona, aparentemente, todo bien.

muchas gracias a todos por la ayuda.
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