Visual Basic - Una consulta que haga esto...?

Life is soft - evento anual de software empresarial
 
Vista:

Una consulta que haga esto...?

Publicado por ZYRYUS (29 intervenciones) el 07/01/2001 00:00:00
Vereis, tengo una base de datos hecha, un formulario (Visual basic) en el que añado registros, con varios campos, como nombre, direccion, dni..... entonces, desde otro form, cuando se cargue este, debe de aparecer en un combo box el nombre de todos los clientes, que se encuentran en el anterior form.Cuando seleccione un nombre de la lista tienen que aparecer los datos relacionados con el nombre, como eran direccion, dni...., estos deben de hacerlo en sus correspondientes textbox del form.
Gracias por vuestra ayuda.
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

RE:Una consulta que haga esto...?

Publicado por Rasta (41 intervenciones) el 07/01/2001 00:00:00
Utiliza el bookmark del recordset que estés utilizando. Por ejemplo si estás utilizando un objeto data (datClientes) y seleccionas un nombre en el dbcombo (dbcClientes) , para ir al registro seleccionado escribe:

datClientes.Recordset.Bookmark = dbcClientes.SelectedItem
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

RE:Una consulta que haga esto...?

Publicado por ZYRYUS (29 intervenciones) el 08/01/2001 00:00:00
Lo he probado pero no me funciona, sale un error.
Gracias
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

RE:Una consulta que haga esto...?

Publicado por Ariopolis (159 intervenciones) el 08/01/2001 00:00:00
Te aconsejo que cargues el combo con un recordset y luego asignes a las propiedades de los textbox los campos que quieras visualizar:

Private rs as ADODB.Recordset
Set rs = New ADODB.Recordset

Con esta rutina cargas los nombres de los clientes en el combo:
rs.Open "select nombre,direccion,dni from clientes", cnConexion, adOpenDynamic, adLockOptimistic
Do Until rs.EOF
Combo.AddItem rs!nombre
rs.MoveNext
Loop

Asignas estas propiedades para que cuando cambies en el combo te aparecerán los datos del cliente en las cajas de texto:
Set txtDireccion.DataSource = rs
txtDireccion.DataField = "direccion"

Set txtDni.DataSource = rs
txtDni.DataField = "dni"

Un saludo.
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

RE:Una consulta que haga esto...?

Publicado por ZYRYUS (29 intervenciones) el 08/01/2001 00:00:00
Verás, es que la estoy haciendo con DAO porque no se como hacerlo con ADO, he intentado traducir tus instrucciones DAO pero ni funciona.Si puedes escribirlo con DAO te lo agradezco.Me sale une error: "No se encontro el metodo o miembro de datos"
GRACIAS.
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

RE:Una consulta que haga esto...?

Publicado por Ariopolis (159 intervenciones) el 08/01/2001 00:00:00
La verdad es que el código que te he indicado solo vale para ADO, pero con DAO no se como hacerlo. Prueba con un control DATA, porque creo que estableciendo estas propiedades (DataSource y DataField) en tiempo de diseño sí que funciona.

Lo siento. :(
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

RE:Una consulta que haga esto...?

Publicado por BENJO (167 intervenciones) el 09/01/2001 00:00:00
La forma más sencilla es updatar la base una vez que terminás de adicionar registros.
Al dirigirte al segundo form, ahí tenés que tener un control data2 con el recordsource de la base updatada anteriormente.

data2.recordsource="select * ......"
y el combo lo rellenás como te dijo Ariopolis.

Ahora el problema que tenés son los campos individuales, de DNI, domicilio, etc.
ya que si los asocias al mismo recordset, cada vez que cargues el combo y salte el código a un nuevo registro, van a desatarse los eventos de cada uno de los textbox, lo cual si son pocos, no importaría. De lo contrario, te convendría hacer como te dijo Ariopolis, es decir en la misma secuencia cargar primero el combo y despues por código asignar el recorsorurce a cada uno de los textbox.
Para el movimiento de registrose en el evento click del combo ya rellenado colocá la instrucción

data.findfirst data.fields!(micampo) _ & "=combo.text"

Así cada vez que cambiás el combo busca en la tabla asociada a los textbox los datos del cliente.
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

RE:Una consulta que haga esto...?

Publicado por ZYRYUS (29 intervenciones) el 10/01/2001 00:00:00
Muchas gracias por vuestra ayuda, pero estoy haciendo la base de datos con DAO, y con ADO ando un poco perdido y el código que habeis expuesto no se muy bien como hacerlo con DAO, si podeis escribirlo con DAO os lo agradezco.
Muchas gracias por vuestro interés.
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

RE:Una consulta que haga esto...?

Publicado por Rasta (41 intervenciones) el 10/01/2001 00:00:00
Mira, yo tenía el mismo problema que tú, y la solución que te di anteriormente tampoco me funcionaba, pero lo resolví con una rutina de error, es decir, no me acuerdo ahora del número de error que me daba, pero lo que hice fue esto:

err:
If err.number=xxx then
datClientes.Recordset.Bookmark = dbcClientes.SelectedItem
end if
exit sub

Es decir, repite la rutina dos veces y producía el efecto que estaba buscando. Espero que a tí tambien te sirva.

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