none
Como hacer una consulta que depende de otra consulta a access RRS feed

  • Pregunta

  • Buenas Noche tengo el siguiente codigo la cual hago una consulta de una cedula y agrego a un comboBox todas las fechas..... la idea es que el usuario escoja nuevamente la fecha que desee y hay si que consulte los datos de la fecha que le selecciono pero que este acorde a los datos de la cedula...... es decir una consulta que depende de otra:

    solo tengo el codigo para agregar al comboBox las fechas de indexacion de datos... pero falta que cuando le doy la fecha me busque los datos deacuerdo a la fecha y la cedula que le di:


    ANDRES FELIPE BAHAMON MONJE

    domingo, 4 de junio de 2017 3:12

Respuestas

  • ¿Revisaste la consulta de selección que propuse?

    Private Sub llenaGridFisico(ByRef identificacion As String, ByVal fecha As String)
    
    	Dim strSql As String = "SELECT AROMAS, FISICO, SABOR FROM FISICO 
    					WHERE CEDULA = @CEDULA AND FECHA = @FECHA"
    	Dim adp As New OleDb.OleDbDataAdapter(strSql, Confisico)
    	Dim dt As New DataTable
    
    	adp.SelectCommand.Parameters.AddWithValue("@CEDULA", identificacion)
    	adp.SelectCommand.Parameters.AddWithValue("@FECHA", fecha)
    
    	adp.Fill(dt)
    
    	Me.DtGridFisico.DataSource = dt
    
    End Sub

    Mucho cuidado con el valor que se asigna al parámetro @FECHA, si el tipo -en la columna de base de datos- es date, datetime o similares entonces debes de pasar un valor del mismo tipo, no una cadena conteniendo una representación de fecha. 


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    domingo, 4 de junio de 2017 17:32

Todas las respuestas

  • este es el codigo de llenar el ComboBox:

        Private Sub BtnbuscarInforme_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnbuscarInforme.Click
    
            Me.CmbFechaReporte.Items.Clear()
            If TxtBusquedaCedula.Text = "" Then
    
                MsgBox("NO EXISTE CEDULA EN LA BASE DE DATOS ASOCIADOS", MsgBoxStyle.Critical, "ERROR DE BUSQUEDA")
                Me.CmbFechaReporte.Items.Clear()
            Else
    
            cmd1.CommandType = CommandType.Text
            cmd1.Connection = Confisico
            cmd1.CommandText = "SELECT FECHA FROM FISICO WHERE CEDULA=" + identificacion
            Try
                dr = cmd1.ExecuteReader
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
    
    
                If dr.HasRows = True Then
                    While dr.Read
    
                        Me.CmbFechaReporte.Items.Add(dr.GetValue(0))
    
                    End While
                End If
            End If
            dr.Close()
        End Sub

    luego de llenado el ComboBox con la cedula lo que quiero es que al seleccionar una fecha se llene un datareader con la informacion de esa CEDULA Y FECHA A LA VEZ  es decir dos sentencias....


    ANDRES FELIPE BAHAMON MONJE

    domingo, 4 de junio de 2017 4:55
  • Hola:

    ¿Puedes poner las estructuras de las tablas implicadas, y el criterio del filtrado?

    Un saludo desde Bilbo
    Carlos

    domingo, 4 de junio de 2017 9:16
  • Hola amigo seria algo asi:

    CEDULA

    FECHA

    NOMBRE

    AROMAS

    FISICO

    SABOR

    1075270545

    25/2/2014

    Andres

    8

    9

    6

    12130764

    25/2/2015

    Luis

    3

    5

    6

    1075270545

    20/1/2016

    Andres

    7

    10

    6

    12130764

    12/8/2016

    Luis

    3

    6

    7

    1075270545

    08/3/2017

    Andres

    10

    1

    9

    55172716

    08/4/2017

    Kathe

    4

    6

    7

    como puedes ver en la tabla algunos numero de CEDULA están repetidos pero tienen diferentes FECHA; el cogido que tengo es que busque todos los registros de la MISMA CEDULA y agregue las FECHAS de esa CEDULA al COMBOBOX... pero Tambien quiero que al momento de seleccionar la fecha me cargue los datos AROMAS, FISICO Y SABOR A UN datareader para luego asignarle que me muestre en una tabla los datos de cada uno



    ANDRES FELIPE BAHAMON MONJE

    domingo, 4 de junio de 2017 13:39
  • ¿Dónde es que tienes problemas?, con independencia de la forma como has escrito el código cuentas con los argumentos necesarios para filtrar los resultados: número de célula (TxtBusquedaCedula.Text) y fecha (CmbFechaReporte.Text).

    SELECT AROMAS, FISICO, SABOR FROM FISICO WHERE CEDULA = @CEDULA AND FECHA = @FECHA


    Private Sub CmbFechaReporte_SelectionChangeCommitted(sender As Object, ...
    
    	'...
    	cmd.Parameters.AddWithValue("@CEDULA", TxtBusquedaCedula.Text)
    	cmd.Parameters.AddWithValue("@FECHA", CmbFechaReporte.Text)
    
    	SqlDataReader reader = cmd.ExecuteReader()
    
    	'...
    	
    End Sub



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    domingo, 4 de junio de 2017 15:56
  •  

    ' ESTA ES PARA CONSULTAR

    Private Sub llenaGridFisico(ByRef identificacion As String, ByVal fecha As String) Dim var As String = "'" & fecha & "'" Dim ds As New DataSet Dim dt As New DataTable Dim strSql As String = "SELECT AROMAS, FISICO, SABOR FROM FISICO WHERE CEDULA LIKE '" + var + "'=" + identificacion Dim adp As New OleDb.OleDbDataAdapter(strSql, Confisico) ds.Tables.Add("tabla") adp.Fill(ds.Tables("tabla")) Me.DtGridFisico.DataSource = ds.Tables("tabla") End Sub

    Y EN EL EVENTO DE CAMBIAR EL COMBOBOX QUE ME LLAME  EL "llenaGridFisico"

    Private Sub CmbFechaReporte_SelectedValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmbFechaReporte.SelectedValueChanged
            
    llenaGridFisico(Me.TxtBusquedaCedula.Text, Me.CmbFechaReporte.Text)
          
            
        End Sub

    PERO NO FUNCIONA ENVIAR LOS DATOS A LA TABLA


    ANDRES FELIPE BAHAMON MONJE

    domingo, 4 de junio de 2017 17:18
  • ¿Revisaste la consulta de selección que propuse?

    Private Sub llenaGridFisico(ByRef identificacion As String, ByVal fecha As String)
    
    	Dim strSql As String = "SELECT AROMAS, FISICO, SABOR FROM FISICO 
    					WHERE CEDULA = @CEDULA AND FECHA = @FECHA"
    	Dim adp As New OleDb.OleDbDataAdapter(strSql, Confisico)
    	Dim dt As New DataTable
    
    	adp.SelectCommand.Parameters.AddWithValue("@CEDULA", identificacion)
    	adp.SelectCommand.Parameters.AddWithValue("@FECHA", fecha)
    
    	adp.Fill(dt)
    
    	Me.DtGridFisico.DataSource = dt
    
    End Sub

    Mucho cuidado con el valor que se asigna al parámetro @FECHA, si el tipo -en la columna de base de datos- es date, datetime o similares entonces debes de pasar un valor del mismo tipo, no una cadena conteniendo una representación de fecha. 


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    domingo, 4 de junio de 2017 17:32
  • Por otro lado, el evento que se produce cuando el usuario selecciona un elemento de la lista desplegable es 'SelectionChangeCommitted' que también lo propuse en mi aporte anterior. Te recomiendo tomar en cuenta las recomendaciones que se te hace llegar.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    domingo, 4 de junio de 2017 17:37
  • GRACIAS AMIGO, POR TUS CONCEJOS Y AYUDA... AHORA SI ME FUNCIONO EL CÓDIGO 

    ANDRES FELIPE BAHAMON MONJE

    domingo, 4 de junio de 2017 17:48