Visual Basic - Relacionar Datacombo con textbox

Life is soft - evento anual de software empresarial
   
Vista:

Relacionar Datacombo con textbox

Publicado por eugenia (11 intervenciones) el 20/11/2013 23:36:40
Hola queria saber si me pueden ayudar, porque sinceramente estoy bastante perdida, estoy trabajando con VB 6 y una base de datos access.

Lo que necesito hacer es que al seleccionar un DNI en el datacombo, es decir cuando el puntero pasa sobre este, se muestre el Nombre relacionado en una caja de texto.

El DNI esta en la tabla "Diagnostico" como Id, mientras que el nombre en la tabla "pacientes", pero como ID uniendo las tablas esta el DNI.

Podrian iluminarme un poco, ya que no se como seleccionar el DNI en el datacombo y tengo dudas sobre como referirme a el DNI seleecionado al buscar, para poder relacionarlos.

Saludos.
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

Relacionar Datacombo con textbox

Publicado por El Viejo Charles (261 intervenciones) el 27/11/2013 20:43:22
Hola Eugenia, es sencillo lo que necesitas, el truco esta en colocar tu código de cargue de la caja de texto en el evento "LostFocus" del combo, es decir:
1. Asumo que debes tener un objeto recordset asociado a un objeto de conexión, el cual se encarga de realizar consultas a la base de datos desde tu código.
2. Supongamos que tu recordset se llama Rs


1
2
3
4
5
6
7
8
9
Private sub combo_LostFocus()
dim sSql as string
 CajaTexto.text = ""
sSql= "select nombre from pacientes where DNI = " & combo.text
Rs.open(sSql)
if not rs.eof then
   CajaTexto.text = rs("nombre ")
end if
end sub

Si aun sigues perdida, no dudes en escribirme con gusto te ayudo.
Suerte.
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

Relacionar Datacombo con textbox

Publicado por eugenia euge.p.7@hotmail.com (11 intervenciones) el 02/12/2013 20:45:50
Gracias por responder, pero no me ha funcionado, supongo que es por error mio, por lo que tengo una duda, el recordset al que te refieres es a que ¿debo crear un recordset?,o ¡¿debo hacer referencia a los dos adodcs que tengo?..

saludos..
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

Relacionar Datacombo con textbox

Publicado por El Viejo Charles (261 intervenciones) el 02/12/2013 21:02:33
Si Eugenia debes crear un Recordset, este objeto es el que se encargara de obtener y devolver los datos de tu base de datos Access. Cuando tengas dichos datos entonces podrás colocarlos en el combo.
Lo otro que observo es que si comentas sobre ADODCS es que tienes objetos de conexión a nivel de interfaz lo cual me dejarías algo corto en la ayuda, ya que estos objetos nunca lo he utilizado.
Si necesitas mas ayuda o algo mas puntual me cuentas.
Saludos
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

Relacionar Datacombo con textbox

Publicado por eugenia (11 intervenciones) el 03/12/2013 21:16:07
Disculpa, pero nunca he creado un recordset y me he basado en un manual que descargue pero me lo considera como error, he aqui el codigo:

Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "ConsultaDIagSimple",diag-,adOpenDynamic,adLockOptimistic Aqui me lo considera como error, diciendo que se esperaba expresión.
rs.Open "select id_diagnost,DNI,nombre,fecha,conclusion from ConsultaDIagSimple", adOpenDynamic, adLockOptimistic Esta sentencia me la considera correctamente.

ConsultaDIagSimple es una consulta, no una tabla, pero aunque use una tabla de igual manera me sale el error.
diag- es el nombre de la base de datos, y las demas nombradas son tablas...
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

Relacionar Datacombo con textbox

Publicado por El Viejo CHarles (261 intervenciones) el 03/12/2013 22:01:04
Hola Eugenia,
Buenod analizando lo que me comentas, la segunda línea es correcta, los recordset ejecutan consultas, sentencias (Insert, Update, Delete), vistas y stores procedures, si existe algo mas no recuerdo, pero en fin...
Igual manera si lo deseas, prueba lo siguiente (recuerda que debes agregar la referencia "Microsoft ActiveX Data Object 2.8"):

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Form_Load()
Dim RutaBaseDatos As String, cn As New ADODB.Connection, Rs As New ADODB.Recordset, sSql As String
    RutaBaseDatos = "C:\MiBaseDatos.mdb" 'AQUI COLOCAS LA RUTA DE LA BASE DE DATOS
    cn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & RuraBaseDatos & ";"
    Rs.ActiveConnection = cn
    Rs.CursorLocation = adUseClient
    sSql = "select id_diagnost,DNI,nombre,fecha,conclusion from ConsultaDIagSimple"
    Rs.Open sSql
    If Not Rs.EOF Then
        'procedimiento.....
    End If
    Rs.Close
End Sub

NOTA: EN LA CONSULTA PUEDES COLOCAR LA SENTENCIA QUE DESEES, ES DECIR SI DESEAS VER TODO EL CONTENIDO DE LA TABLA DEBES REEMPLZAR:
sSql = "select id_diagnost,DNI,nombre,fecha,conclusion from ConsultaDIagSimple"
POR LA SIGUIENTE SENTENCIA:
sSql = "select * from ConsultaDIagSimple"

Cualquier cosa me cuentas y con gusto te ayudo.
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

Relacionar Datacombo con textbox

Publicado por eugenia (11 intervenciones) el 04/12/2013 15:53:48
Perdon que siga molestando pero al ejecutar me dice: se esperaba una función o una variable en: cn.Open =
Aclaro que si puse la ruta, y otra duda en procedimiento te refieres al codigo del datacombo?
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

Relacionar Datacombo con textbox

Publicado por El Viejo Charles (261 intervenciones) el 04/12/2013 16:01:21
Si disculpa, coloque un símbolo de mas, la verdad hace rato que no codifico en VB-6.0
Intenta quitarle el igual, es decir así:
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & RuraBaseDatos & ";"

Cuentame si te funciona, cualquier cosa te ayudo con gusto.
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

Relacionar Datacombo con textbox

Publicado por eugenia (11 intervenciones) el 04/12/2013 20:10:58
si, ahora he podido abrir el recordset en procedimiento viendo otras explicaciones coloque un msgbox,y asi pude ver que funciono,muchas gracias :), pero el data combo y el textbox no se relacionan..
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

Relacionar Datacombo con textbox

Publicado por El Viejo Charles (261 intervenciones) el 04/12/2013 20:31:34
Es lo mismo, mira, retomando tu inquietud inicial, tu necesitas es buscar el evento del combo que te permita activar la acción cuando el mouse se coloque encima de este, si no mal recuerdo debería existir un evento para el datacombo llamado "MouseMove", aunque te recomiendo mejor utilizar el evento MouseDowm o Clik, de lo contrario tendrás que ser recursiva y verificar con que otro evento obtendrás utilizar el mismo resultado, ahora, si lo único que necesitas es mostrar un nombre en una caja de texto luego de seleccionar un DNI del combo, pues seria algo mas sencillo que utilizar el evento MouseMove.
Mira, no tengo el visual instalado en estos momentos pero tratare de darte una guía de como podría ser lo que necesitas:
OJO: DEBES DECLARAR LAS SIGUIENTES VARIABLES AL INICIO DEL DOCUMENTO DE CODIFICACION PARA QUE QUEDEN DISPONIBLE EN CUALQUIER MOMENTO.

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
Option Explicit
Dim cn As New ADODB.Connection, Rs As New ADODB.Recordset, sSql As String
 
Private Sub Form_Load()
 Dim RutaBaseDatos As String
 RutaBaseDatos = "C:\MiBaseDatos.mdb" 'AQUI COLOCAS LA RUTA DE LA BASE DE DATOS
 cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & RuraBaseDatos & ";"
 Rs.ActiveConnection = cn
 Rs.CursorLocation = adUseClient
 
''ESTA PARTE LLENA UN COMBOBOX
 ssql="select DNI from Diagnostico"
 rs.open ssql
 do while not rs.eof
   ComboBox.add rs(0)
   rs.movenext
 loop
 rs.close
End Sub
 
Private Sub ComboBox_Click() 'CUANDO HAGAS CLIC EN EL COMBOBOX
 sSql = "select nombre from pacientes where DNI = " & ComboBox.text
'NOTA: SI EL TIPO DE DATO DNI EN LA BASE DE DATOS ES ALFANUMERICO ENTONCES DEBE QUEDAR ASI:
'sSql = "select nombre from pacientes where DNI = '" & ComboBox.text & "'"
 Rs.Open sSql
 textbox.text = ""
 If Not Rs.EOF Then
   textbox.text = rs(0)
 End If
 Rs.Close
end Sub

ME CUENTAS COMO TE FUE, Y CUALQUIER COSA TE AYUDO CON GUSTO, SALUDOS.
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

Relacionar Datacombo con textbox

Publicado por eugenia (11 intervenciones) el 05/12/2013 03:08:23
tengo 2 problemas, uno es que me obliga a usar el datacombo porque el databox me dice siempre que no puede enlazar con el campo "dni" y por otra parte aunque use el datacombo me lanzo este error:
no se encontro el metodo o miembro de datos, en
Combo1.Add Rs(0)
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

Relacionar Datacombo con textbox

Publicado por El Viejo Charles (261 intervenciones) el 05/12/2013 14:50:48
Hola.
Bueno mira la verdad he utilizado el datacombo una sola vez y eso fue hace mucho tiempo, recuerdo que eso se llenaba por medio de otro objeto Data, ahora, podrías cambiar este objeto por otro llamado ComboBox, éste objeto cuando lo agregas al formulario pro defecto lo deja con el nombre de "Combo1", lo único que tendrías que hacer es llenarlo con la información del DNI e tu tabla, si decides cambiarlo, aquí te dejo la manera de como llenarlo, creo que en el código anterior te escribí mal un método, lastimosamente en ese momento no tenia a la mano el VB.6:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Option Explicit
 Dim cn As New ADODB.Connection, Rs As New ADODB.Recordset, sSql As String
 
Private Sub Form_Load()
 Dim RutaBaseDatos As String
 RutaBaseDatos = "C:\MiBaseDatos.mdb" 'AQUI COLOCAS LA RUTA DE LA BASE DE DATOS
 cn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & RutaBaseDatos & ";"
 Rs.ActiveConnection = cn
 Rs.CursorLocation = adUseClient
 
''ESTA PARTE LLENA UN COMBOBOX
sSql = "select DNI from Diagnostico"
 Rs.open sSql
  Do While Not Rs.EOF
  Combo1.AddItem Rs(0)
  Rs.MoveNext
 Loop
 Rs.Close
End Sub

por cierto si lo deseas envíame la base de datos que tienes estructurada hasta ahora, así podría ir probando cosillas que me vallas preguntando, la verdad he armado sin querer un pequeño proyecto en vb6 de las cosas que me has ido preguntado, pero lo único que me falta es tu base de datos.
pro_carlosgomez@hotmail.com

saludos
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

Relacionar Datacombo con textbox

Publicado por eugenia (11 intervenciones) el 05/12/2013 19:19:04
Es que no puedo usar el combobox en style 2, para q muestre el listado,ya que con cualquier base de datos me da el error de:no se puede enlazar con el campo "dni", tal vez sea un error de mi visual....
Muchas gracias de verdad, ahora la enviare..
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

Relacionar Datacombo con textbox

Publicado por eugenia (11 intervenciones) el 05/12/2013 19:53:32
Perdon, ahora se lleno en modo 1 del combobox, pero no sale el nombre en el texbox y me salta error en
Private Sub Combo1_Click()

1
2
3
4
5
6
7
8
sSql = "select nombre from paciente where DNI = '" & Combo1.Text & "'"
Rs.Open sSql  ------> error: no se han especificado parametros requeridos.
Text1.Text = ""
If Not Rs.EOF Then
Text1.Text = Rs(0)
End If
Rs.Close
End Sub
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

Relacionar Datacombo con textbox

Publicado por El Viejo Charles (261 intervenciones) el 05/12/2013 21:05:20
Hola Eugenia
Bueno te comento que la idea de pasarme la base de datos fue algo bueno, hice pruebas y me percate que existen alguna cosas que hace mucho no manejaba con este tipo de base de datos, te dejo el código con la prueba donde funcionan las consultas.

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
Option Explicit
 Dim cn As New ADODB.Connection, Rs As New ADODB.Recordset, sSql As String
 
Private Sub Form_Load()
    Dim RutaBaseDatos As String
    Combo1.Text = ""
    Text1.Text = ""
 
    RutaBaseDatos = App.Path & "\Diag-.mdb" 'AQUI COLOCAS LA RUTA DE LA BASE DE DATOS
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & RutaBaseDatos & ";"
    Rs.ActiveConnection = cn
    Rs.CursorLocation = adUseClient
 
    ''ESTA PARTE LLENA UN COMBOBOX
    sSql = "select Diagnostico.[DNI]"
    sSql = sSql & " from Diagnostico"
    Rs.Open sSql
     Do While Not Rs.EOF
     Combo1.AddItem Rs("DNI")
     Rs.MoveNext
    Loop
    Rs.Close
End Sub
 
Private Sub Combo1_Click()
    If Len(Trim(Combo1.Text)) = 0 Then
        Exit Sub
    End If
 
    Text1.Text = ""
    sSql = "select paciente.[nombre]"
    sSql = sSql & " from paciente"
    sSql = sSql & " where paciente.[DNI-paciente] = '" & Combo1.Text & "';"
    Rs.Open sSql
    If Not Rs.EOF Then
       Text1.Text = UCase(Trim(Rs("nombre")))
    End If
    Rs.Close
End Sub
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

Relacionar Datacombo con textbox

Publicado por eugenia (11 intervenciones) el 06/12/2013 20:06:14
Ha funcionado... muchisimas gracias de verdad, no tengo a quien preguntarle a si que me has ayudado muchismo :D .
solo tengo una duda, si utilizo el campo dni de diagnostico, se repetiran si tengo mas de un diagnostico del mismo paciente. Mi duda es si utilizo el DNI-paciente, de la tabla paciente, podre luego agregar a campos de la tabla diagnostico, como fecha y conclusion, seleccionando el DNI de la tabla paciente?
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

Relacionar Datacombo con textbox

Publicado por El Viejo Charles (261 intervenciones) el 06/12/2013 20:51:07
Hola Eugenia.
Bueno, lo que te comprendo es que deseas mostrar todos los diagnósticos realizados a un paciente (DNI), en este caso asumo que seria al DNI que seleccionas en el combo, si es asi, para eso te recomiendo que utilices un control llamado Microsoft Hierarchical FlexGrid, es una grilla bastante interesante y mas fácil de llenar que el FlexGrid, igual manera si eso es lo que quieres hacer me dices y te indico como la utilizas y la llenas, es muy sencilla.
Cuidate saludos
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