Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

DataCombo y Sentencia Select

Estas en el tema de DataCombo y Sentencia Select en el foro de Visual Basic clásico en Foros del Web. Buenos días Amigos!! Como Siempre yo buscando respuestas de las cosas que no se o que no puedo resolver. Tengo un programita que ya termine ...
  #1 (permalink)  
Antiguo 09/05/2011, 21:20
 
Fecha de Ingreso: marzo-2011
Ubicación: Florida-Uruguay
Mensajes: 74
Antigüedad: 13 años, 1 mes
Puntos: 4
Información DataCombo y Sentencia Select

Buenos días Amigos!! Como Siempre yo buscando respuestas de las cosas que no se o que no puedo resolver. Tengo un programita que ya termine y se me ocurrió agregarle un detalle más. En una Form tengo 2 DataCombo. Uno de ellos lo tengo conectado por medio de un Command de una Conexión de un DataEnvironment el cual me regresa los nombres de unas Especialidades Médicas ingresadas en una tabla (llamada Especialidades), y el otro sin Command. Lo que me gustaría es que al elegir la especialidad me devuelva una lista con los Médicos que dan consultas en esa especialidad (Almacenados en otra tabla llamada Medicos). De la manera que en este momento lo tengo declarado me devuelve el primer registro que coincide con esta especialidad como ya mencione desearía poder generar una lista de todos los que practícan esa especialidad. Mi actual declaración esta de esta manera.

Private Sub DataEspecialidad_Click(Area As Integer)

Dim rsConsulta7 As ADODB.Recordset
Set rsConsulta7 = New ADODB.Recordset

strVALOR_ESP = DataEspecialidad.Text

SQL = "SELECT * FROM Medicos WHERE NombreEspecialidad = '" & Me.DataEspecialidad.BoundText & "' ORDER BY NombreEspecialidad;"
rsConsulta7.Open SQL, cnn, adOpenForwardOnly, adLockReadOnly ', adCmdText

If rsConsulta7.EOF = False And rsConsulta7.BOF = False Then
DataMedico.Text = rsConsulta7.Fields("NombreMedico")
rsConsulta7.MoveNext

End If
End Sub

Desde ya muchas gracias a quien desee colaborar!!!
  #2 (permalink)  
Antiguo 10/05/2011, 13:09
 
Fecha de Ingreso: noviembre-2006
Mensajes: 227
Antigüedad: 17 años, 5 meses
Puntos: 6
Respuesta: DataCombo y Sentencia Select

Bueno considero que si haces un ciclo te funciona mejor tu tienes esto

Código:
SQL = "SELECT * FROM Medicos WHERE NombreEspecialidad = '" & Me.DataEspecialidad.BoundText & "' ORDER BY NombreEspecialidad;"
rsConsulta7.Open SQL, cnn, adOpenForwardOnly, adLockReadOnly ', adCmdText

If rsConsulta7.EOF = False And rsConsulta7.BOF = False Then
     DataMedico.Text = rsConsulta7.Fields("NombreMedico")
     rsConsulta7.MoveNext
End If
deberia de se asi:

Código:
SQL = "SELECT * FROM Medicos WHERE NombreEspecialidad = '" & Me.DataEspecialidad.BoundText & "' ORDER BY NombreEspecialidad;"
rsConsulta7.Open SQL, cnn, adOpenForwardOnly, adLockReadOnly ', adCmdText

While rsConsulta7.EOF = False
     DataMedico.AddItem= rsConsulta7.Fields("NombreMedico")
    rsConsulta7.MoveNextf
Wend
ya viendo el codigo tu problema es que tienes el Combo con .Text cuando deberia ser .AddItem de lo contrario solo te coloca el primer registro que encuentra solo cambia esa propiedad y listo.

Saludos
  #3 (permalink)  
Antiguo 10/05/2011, 13:28
 
Fecha de Ingreso: marzo-2011
Ubicación: Florida-Uruguay
Mensajes: 74
Antigüedad: 13 años, 1 mes
Puntos: 4
Respuesta: DataCombo y Sentencia Select

SalomonSab: Te comento que el DataCombo no tiene en sus propiedades y métodos .AddItem en los ComboBox si, probe propiedades como .ListField y es eso lo que me falta creo........................
Saludos
  #4 (permalink)  
Antiguo 11/05/2011, 11:00
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: DataCombo y Sentencia Select

Hola!!
Intenta asi:
Código vb:
Ver original
  1. If rsConsulta7.EOF = False Then
  2. 'EL BOUNDCOLUMN DEL DATACOMBO DEBE SER "ID_MEDICO" o el codigo del medico, SIN LAS COMILLAS
  3. 'EL DATAFIELD DEL DATACOMBO DEBE SER "ID_MEDICO"  o el codigo del medico, SIN LAS COMILLAS
  4.  
  5.      Set DataMedico.RowSource=rsConsulta7
  6.      DataMedico.BoundText=1
  7.      DataMedico.ListField="NombreMedico"
  8. End If
  #5 (permalink)  
Antiguo 11/05/2011, 13:55
 
Fecha de Ingreso: marzo-2011
Ubicación: Florida-Uruguay
Mensajes: 74
Antigüedad: 13 años, 1 mes
Puntos: 4
Respuesta: DataCombo y Sentencia Select

Lokoman, Sabes que no me funciona. Al elegir la Especialidad en el DataEspecialidad no me trae ningún registro en el DataMedicos. Las propiedades de los Datos en el DataMedico están vacías, menos las BOUNDCOLUMN y DATAFIELD que les Puse el ID_Medico (celda que no tenía en la tabla Medicos pero la cree para que lleve un ID correlativo y consecutivo, ya que yo me guiaba por el Número de Caja Profecional ahora lo tengo los dos datos).

Como siempre Gracias por tus aportes.
  #6 (permalink)  
Antiguo 11/05/2011, 14:02
 
Fecha de Ingreso: noviembre-2006
Mensajes: 227
Antigüedad: 17 años, 5 meses
Puntos: 6
Respuesta: DataCombo y Sentencia Select

Bueno la verdad es que nunca he usado ese control pero creo que la manera correcta de enlazarlo seria esta:

Código:
Private Sub Form_Load()
Dim conectar As ADODB.Connection
Dim recorrido As Recordset
Dim SQL As String
Set conectar = New ADODB.Connection
conectar.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;Persist Security Info=False"
conectar.Open
Set recorrido = New Recordset
conectar.CursorLocation = adUseClient
SQL = "SELECT nombre from ciudad"
recorrido.Open SQL, conectar
Set DataCombo1.RowSource = recorrido
DataCombo1.ListField = "nombre"
DataCombo1.DataField = "nombre"
Set DataCombo1.DataSource = recorrido
End Sub
prueba y nos cuentas
  #7 (permalink)  
Antiguo 12/05/2011, 07:32
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: DataCombo y Sentencia Select

El strSelect te trae datos?
Código vb:
Ver original
  1. SQL = "SELECT * FROM Medicos WHERE NombreEspecialidad = '" & Me.DataEspecialidad.BoundText & "' ORDER BY NombreEspecialidad;"
  2. rsConsulta7.Open SQL, cnn, adOpenForwardOnly, adLockReadOnly ', adCmdText

Coloca una interrupción en "Private Sub DataEspecialidad_Click(Area As Integer)" y corre el proyecto con F8.
  #8 (permalink)  
Antiguo 12/05/2011, 13:32
 
Fecha de Ingreso: marzo-2011
Ubicación: Florida-Uruguay
Mensajes: 74
Antigüedad: 13 años, 1 mes
Puntos: 4
Respuesta: DataCombo y Sentencia Select

Lokoman, sabes que coloque el punto de interupción y cuando la sentencia llega a ( If rsConsulta7.EOF = False Then ) pasa directamente al ( End If ). Si cambio el False por True la sentencia pasa por:

DataMedico.BoundText=1
DataMedico.ListField="NombreMedico"

Pero el DataMedico lo rellena con el número (1), que es el valor de BoundText.
Alguna otra Idea??
  #9 (permalink)  
Antiguo 12/05/2011, 14:46
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 14 años, 7 meses
Puntos: 47
Respuesta: DataCombo y Sentencia Select

Si no entra en el IF (If rsConsulta7.EOF = False Then), es porque el SQL no trae datos... intenta con un query general (un select *) y comprueba a ver si entra.

El DataMedico.BoundText=1, si no me equivoco, te debe traer el primer registro del campo que está en DataMedico.ListField.
  #10 (permalink)  
Antiguo 14/05/2011, 09:34
 
Fecha de Ingreso: marzo-2011
Ubicación: Florida-Uruguay
Mensajes: 74
Antigüedad: 13 años, 1 mes
Puntos: 4
Respuesta: DataCombo y Sentencia Select

Les comento que lo solucione, al final lo deje así y me funciona al pelo
Código PHP:
Private Sub DataEspecialidad_Click(Area As Integer)
Dim rsConsulta7 As ADODB.Recordset
Dim strVALOR_ESP 
As String
Set rsConsulta7 
= New ADODB.Recordset

strVALOR_ESP 
DataEspecialidad.BoundText

SQL 
"SELECT * FROM Medicos WHERE NombreEspecialidad = '" DataEspecialidad.BoundText "' ORDER BY NombreMedico;"
rsConsulta7.Open SQLcnnadRsnAddNewadLockReadOnlyadCmdText
    
If rsConsulta7.EOF False Then

        Set DataMedico
.RowSource rsConsulta7
        Set DataMedico
.DataSource rsConsulta7
            DataMedico
.ListField "NombreMedico"
            
DataMedico.DataField "NombreMedico"
            
DataMedico.BoundColumn "NombreMedico"
      
            
DataMedico.Refresh
            rsConsulta7
.MoveNext
        
End 
If
End Sub 
Una de las diferencias es que antes yo tenía:
rsConsulta7.Open SQL, cnn, adOpenForwardOnly, adLockReadOnly ', adCmdText

y cambie el adOpenForwardOnly por adRsnAddNew
despues agrege las propiedades de datos todas desde la sentencia.
Aunque esten agregadas desde la sentencia no funcionan, te traen solo el primer registro, por lo menos hasta que se ponga adRsnAddNew, cosa que la descubri solito (me siento orgulloso jaja), probando los distintos ad.
Saludos a todos, y gracias por su aportes, un abrazo grande!!!!

Etiquetas: datacombo, select, sentencia
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 01:26.