Foros del Web » Programación para mayores de 30 ;) » .NET »

consulta sobre un combobox

Estas en el tema de consulta sobre un combobox en el foro de .NET en Foros del Web. buenas tardas amigos, estoy teniendo un problema que no logro resolver, a pesar que he leido varias cosas propuestas aqui en el foro, no logro ...
  #1 (permalink)  
Antiguo 19/06/2009, 16:10
 
Fecha de Ingreso: junio-2009
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Pregunta consulta sobre un combobox

buenas tardas amigos, estoy teniendo un problema que no logro resolver, a pesar que he leido varias cosas propuestas aqui en el foro, no logro entender bien como hacerlo, espero que alguien me pueda ayudar.. recien me estoy iniciando en este tema de la programacion, y bueno estoy practicando muchas cosas, la consulta es la siguiente, yo tengo un combobox enlazado a una base de datos en este caso, es la tabla clientes, donde me trae el nombre de cada uno de los clientes que fueron cargados previamente y guardados en la dbd ( sql)
bien, lo que no puedo hacer es que al elegir un nombre, automaticamente me traiga el resto de los campos que tngo en el formulario, o sea yo ene l formulario tengo 1 combobox y muchos textbox , al elegir un cliente del combobox quiero q me traiga las otras columnas de esa tabla.. me explico ???
estoy trabajando con visual estudio 2008 y la base de datos que uso es sql
les coloco el q use para cargar el combobox

Private Sub consultaclientes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim cn As New OleDbConnection( _
"provider=SQLOLEDB.1;" & _
"Integrated Security=SSPI; " & _
"Persist Security Info=False;" & _
"User ID=xxxxxxx;" & _
"Password=xxxxxxxx;" & _
"Initial Catalog=OperadoresMT;" & _
"Data Source=cristian1\SQLEXPRESS")
cn.Open()

cargar_Combo(CMBnombre, "Select Nombre From Clientes")
CMBnombre.SelectedIndex = -1
Private Sub cargar_Combo( _
ByVal ComboBox As ComboBox, _
ByVal sql As String)

' nueva conexión indicando al SqlConnection la cadena de conexión
'Dim cn As New OleDbConnection(cn)

Try

' Abrir la conexión a Sql
cn.Open()

' Pasar la consulta sql y la conexión al Sql Command
Dim cmd As New OleDbCommand(sql, cn)

' Inicializar un nuevo SqlDataAdapter
Dim dda As New OleDbDataAdapter(cmd)

'Crear y Llenar un Dataset
Dim dds As New DataSet
dda.Fill(dds)

' asignar el DataSource al combobox
ComboBox.DataSource = dds.Tables(0)
'TXTcuit.Text = dda.Fill(dds)



' Asignar el campo a la propiedad DisplayMember del combo
ComboBox.DisplayMember = dds.Tables(0).Columns(0).Caption.ToString


Catch ex As Exception
MessageBox.Show(ex.Message.ToString, _
"error", MessageBoxButtons.OK, _
MessageBoxIcon.Error)
Finally
If cn.State = ConnectionState.Open Then
cn.Close()
End If
End Try

End Sub

los text q quiero rellenar son ..
txtdireccion, txttelefono, txtcuit, txtcontacto, txtobservaciones

bueno espero que me puedan ayudar !! muchas gracias !!!!
  #2 (permalink)  
Antiguo 19/06/2009, 16:21
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: consulta sobre un combobox

haber prueba con esto:

Código:
 
dim row as dataRowView = ctype(me.Combobox1.SelectedItem,DataRowView)
messagebox.show( row("nameColumn").tostring() )
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #3 (permalink)  
Antiguo 19/06/2009, 17:33
 
Fecha de Ingreso: junio-2009
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: consulta sobre un combobox

Cita:
Iniciado por boluart Ver Mensaje
haber prueba con esto:

Código:
 
dim row as dataRowView = ctype(me.Combobox1.SelectedItem,DataRowView)
messagebox.show( row("nameColumn").tostring() )
Hola amigo podrias explicarme q es lo que hace eso ??? porque mas alla de solucionar el problema me interesa aprender... y la verdad que no entiendo que es lo q haces con eso ... mas alla q no me funciona.. me tira error...
en donde es que le indico a que text quiero q me mande cada uno de los campos de cada columna ???? no se si entendiste que es lo q quiero hacer.. el combo ya tiene los datos de la base de datos.. y lo q quiero ahcer.. es agregar el resto de los campos d la tabla de clientes a distintos textbox... de acuerdo al nombre que eligen del combobox...
  #4 (permalink)  
Antiguo 20/06/2009, 09:25
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: consulta sobre un combobox

me ayudaria bastante si me dijeras que error sale, haber prueba con esto,

Código:
 
Dim row As DataRowView = CType(Me.ComboBox1.SelectedItem, DataRowView)
ForEach obj AsObjectIn row.Row.ItemArray
MessageBox.Show(obj.ToString())
Next
 

__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #5 (permalink)  
Antiguo 20/06/2009, 20:46
Avatar de jaullo  
Fecha de Ingreso: abril-2009
Mensajes: 994
Antigüedad: 15 años
Puntos: 30
Respuesta: consulta sobre un combobox

Prueba con algo como esto
Imports System.Data.SqlClient
'cargar los dato
Function buscaridentificacion()
Try
Dim datareader As SqlClient.SqlDataReader
datareader = objaux.buscar("select * from personal where identificacion='" & tucombo.Text & "' ")
If datareader.HasRows Then

While datareader.Read
'txtlastcodc.Text = " " & datareader.Item("dato1")
txtnombre.Text = "" & datareader.Item("dato2")
txtapellido.Text = "" & datareader.Item("dato3")
End While

datareader.Close()
MsgBox("El cliente que esta tratando de ingresar ya existe", MsgBoxStyle.Critical)
btnSave.Enabled = False
Else
datareader.Close()
btnSave.Enabled = True

End If

datareader.Close()

Catch ex As Exception
MessageBox.Show("Error en la Consulta" & Chr(13) & "Consulte al administrador" & Chr(13) & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try

End Function

Esto lo que hace es mediante un datareader traer los datos de la bd dependiendo del filtro que le indiques,puedes traer tantos campos necesites solo debes seguir agregandolos dentro del while.

Para que funcione en la propiedad selectedindex de tu combo
llamas la funcion anterior.

Saludos,
  #6 (permalink)  
Antiguo 22/06/2009, 09:53
 
Fecha de Ingreso: junio-2009
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: consulta sobre un combobox

Cita:
Iniciado por boluart Ver Mensaje
me ayudaria bastante si me dijeras que error sale, haber prueba con esto,

Código:
 
Dim row As DataRowView = CType(Me.ComboBox1.SelectedItem, DataRowView)
ForEach obj AsObjectIn row.Row.ItemArray
MessageBox.Show(obj.ToString())
Next
 

hola probe de varias formas introducir esto q me pusiste, y no me funciona, de hecho no es lo q quiero
me parece que no me han entendido, yo tengo mi sistema, en donde tengo la parte de clientes, como todo sistema, tiene que tener la posibilidad de agregar, eliminar, modificar y consultar clientes .. bien, lo que yo estoy tratando de hacer.. es precisamente eso.. el formulario de consulta de clientes !! a lo otro ya lo pude hacer... es x eso que a travez de un combobox llamo a la tabla clientes y el campo nombre . para que me muestren todos los datos que han sido cargados.
en mi formulario puse
un combobox y luego debajo de el ... una serie de textbox q tienen que mostrar los datos de cada uno de los clientes.. que han sido seleccionados en el combobox.. se entiende ahora lo que necesito ???
y con respecto al error que me tira es ...
no se encontro nullreference exception
espero que me puedan ayudar con esto.. ya que me siento tan perdido.. no lo puedo resolver..
muchisimas gracias por su ayuda !!
  #7 (permalink)  
Antiguo 22/06/2009, 09:57
 
Fecha de Ingreso: junio-2009
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: consulta sobre un combobox

Cita:
Iniciado por jaullo Ver Mensaje
Prueba con algo como esto
Imports System.Data.SqlClient
'cargar los dato
Function buscaridentificacion()
Try
Dim datareader As SqlClient.SqlDataReader
datareader = objaux.buscar("select * from personal where identificacion='" & tucombo.Text & "' ")
If datareader.HasRows Then

While datareader.Read
'txtlastcodc.Text = " " & datareader.Item("dato1")
txtnombre.Text = "" & datareader.Item("dato2")
txtapellido.Text = "" & datareader.Item("dato3")
End While

datareader.Close()
MsgBox("El cliente que esta tratando de ingresar ya existe", MsgBoxStyle.Critical)
btnSave.Enabled = False
Else
datareader.Close()
btnSave.Enabled = True

End If

datareader.Close()

Catch ex As Exception
MessageBox.Show("Error en la Consulta" & Chr(13) & "Consulte al administrador" & Chr(13) & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try

End Function

Esto lo que hace es mediante un datareader traer los datos de la bd dependiendo del filtro que le indiques,puedes traer tantos campos necesites solo debes seguir agregandolos dentro del while.

Para que funcione en la propiedad selectedindex de tu combo
llamas la funcion anterior.

Saludos,
datareader = objaux.buscar("select * from personal where
en esa linea me marca que no existe objaux.buscar, probe.. agregandolo como variable string y luego me marca lo de select ...... me dice que no se puede convertir a string, si lo quito me dice q select .. no es miembro de datareader y me marca todo lo de abajo tambien.. que estoy haciendo mal ??
  #8 (permalink)  
Antiguo 22/06/2009, 10:19
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: consulta sobre un combobox

Cita:
Iniciado por ccristian79 Ver Mensaje
no existe objaux.buscar, probe.. agregandolo como variable string y luego me marca lo de select ...... me dice que no se puede convertir a string, si lo quito me dice q select .. no es miembro de datareader y me marca todo lo de abajo tambien.. que estoy haciendo mal ??

de que tipo es objaux??
en donde lo declaras o como lo construyes?
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #9 (permalink)  
Antiguo 22/06/2009, 11:28
 
Fecha de Ingreso: junio-2009
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: consulta sobre un combobox

Cita:
Iniciado por boluart Ver Mensaje
de que tipo es objaux??
en donde lo declaras o como lo construyes?
no tengo idea.. me lo pusieron en el codigo arriba.. yo lo q hice.. fue declararlo en la misma funcion.. con un dim y lo puse como string .. pero evidentemente.. eso no iba.. uff parece que es dificil hacer una consulta..
yo antes lo hacia arrastrando los datos desde orignenes de datos hasta mi formulario.. donde me creaba el dataset.. y demas.. todo automaticamente. pero hoy en dia. estas cosas me estan trayendo problemas.. ya que muchas veces. no puedo usar restricciones para los combos... como x ejemplo q no remita los datos de la base de datos.. x eso es q necesito hacerlo por codigo.. a todo eso q antes hacia arrastrando ... pero bueno.. parece que es dificil .. o nadie me entiende lo q kiero hacer =(
  #10 (permalink)  
Antiguo 22/06/2009, 11:40
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: consulta sobre un combobox

haber prueba con esto:


Código:
 
Dim row As DataRowView = CType(Me.ComboBox1.SelectedItem, DataRowView)
ForEach obj AsObjectIn row.Row.ItemArray
if not obj is nothing and not obj is dbnull.value then
MessageBox.Show(obj.ToString())
end if
Next
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #11 (permalink)  
Antiguo 22/06/2009, 13:12
Avatar de jaullo  
Fecha de Ingreso: abril-2009
Mensajes: 994
Antigüedad: 15 años
Puntos: 30
Respuesta: consulta sobre un combobox

Hola a todos, disculpas por no haberles colocado que era objaux
Les explico, objaux es una variable que se declara haciendo referencia una clase que he creado en la cual se encuentra el procedimiento buscar. Esta esta formada por un Namespace que contiene la clase, que a su vez contiene las funciones, pero eso depende de como lo quieran crear.

Por ejemplo

dim objaux As New conta.data (conta es el namespace, data la clase).
Sin embargo pueden declararlo mas sencillo, por ejemplo pueden crear una clase que se llame que buscar.
La declaracion quedaria algo como:
dim objaux as new buscar

Ahora en la clase deben importar los espacios de nombre
Imports Microsoft.VisualBasic
Imports System
Imports System.Data
Imports System.Data.SqlClient

y poner lo siguiente
Dim objconexion As New SqlClient.SqlConnection
Dim strconexion As String = "Data Source=tuserver;Initial Catalog=tubd;User ID=tuuser;Password=tupass"

Sub abrirbasedatos()
If objconexion.State = ConnectionState.Closed Then
objconexion.ConnectionString = strconexion
objconexion.Open()
End If
End Sub

'esta es la funcion buscar
'____seccion de consultas

Function buscar(ByVal cSQL$) As SqlClient.SqlDataReader
Try
abrirbasedatos()
Dim objcommand As New SqlClient.SqlCommand(cSQL, objconexion)
Return objcommand.ExecuteReader()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Function

Como ven objaux.buscar, solo referencia a la clase que posee la funcion buscar, espero haberles aclarado las dudas.

Saludos,
  #12 (permalink)  
Antiguo 23/06/2009, 08:49
 
Fecha de Ingreso: junio-2009
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: consulta sobre un combobox

Hola amigos, ante todo muchas gracias por sus respuestas.. estuve haciendo algunas pruebas e investigando .. y mas o menos tengo el codigo que deberia utilizar para realizar lo q quiero, el problema es que estoy recibiendo un error a la hora de ejecutarlo que es el siguiente
Referencia a objeto no establecida como instancia de un objeto.
No se encontro NullReferenceException

el codigo que tengo es el siguiente :

Private Sub CMBnombre_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CMBnombre.Click
Dim cn As New OleDbConnection( _
"provider=SQLOLEDB.1;" & _
"Integrated Security=SSPI; " & _
"Persist Security Info=False;" & _
"User ID=xxxx;" & _
"Password=xxxxxx;" & _
"Initial Catalog=OperadoresMT;" & _
"Data Source=cristian\SQLEXPRESS")
cn.Open()

Dim da As OleDbDataAdapter
Dim ds As New DataSet
da = New OleDbDataAdapter("Select * From Clientes WHERE Nombre='" & CMBnombre.Text & "'", cn)
da.Fill(ds, " Clientes")
If ds.Tables("Clientes ").DefaultView.Count >= 0 Then
txtdireccion.Text = ds.Tables("Clientes").DefaultView.Item("Direccion" ).ToString
txtlocalidad.Text = ds.Tables("Clientes").DefaultView.Item("Localidad" ).ToString
txtprovincia.Text = ds.Tables("Clientes").DefaultView.Item("Localidad" ).ToString
txtpais.Text = ds.Tables("Clientes").DefaultView.Item("Localidad" ).ToString
txttelefono.Text = ds.Tables("Clientes").DefaultView.Item("Localidad" ).ToString
txtcuit.Text = ds.Tables("Clientes").DefaultView.Item("Localidad" ).ToString
txtcontacto.Text = ds.Tables("Clientes").DefaultView.Item("Localidad" ).ToString
txtobservaciones.Text = ds.Tables("Clientes").DefaultView.Item("Localidad" ).ToString
End If

End Sub

Podra guiarme alguno diciendome q es lo que estoy haciendo mal ??? gracias nuevamente..
  #13 (permalink)  
Antiguo 23/06/2009, 09:11
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: consulta sobre un combobox

Cita:
Iniciado por ccristian79 Ver Mensaje
Referencia a objeto no establecida como instancia de un objeto.

Algun dato es nulo.
asegurate que los items no sean nulos asi:

if not ds.Tables("Clientes").DefaultView.Item("Localidad" ) is dbnull.value then

txtlocalidad.text =ds.Tables("Clientes").DefaultView.Item("Localidad " ).tostring()

end if
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #14 (permalink)  
Antiguo 23/06/2009, 09:51
 
Fecha de Ingreso: junio-2009
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: consulta sobre un combobox

Cita:
Iniciado por boluart Ver Mensaje
Algun dato es nulo.
asegurate que los items no sean nulos asi:

if not ds.Tables("Clientes").DefaultView.Item("Localidad" ) is dbnull.value then

txtlocalidad.text =ds.Tables("Clientes").DefaultView.Item("Localidad " ).tostring()

end if
gracias por tu respuesta.. ya corregi lo que me dijiste, pero continua dandome error..

Dim da As OleDbDataAdapter
Dim ds As New DataSet
da = New OleDbDataAdapter("Select * From Clientes WHERE Nombre='" & CMBnombre.Text & "'", cn)
da.Fill(ds, " Clientes")
If ds.Tables("Clientes ").DefaultView.Count > 0 Then
If Not ds.Tables("Clientes").DefaultView.Item("Direccion" ) Is DBNull.Value Then
txtdireccion.Text = ds.Tables("Clientes").DefaultView.Item("Direccion" ).ToString
If Not ds.Tables("Clientes").DefaultView.Item("Localidad" ) Is DBNull.Value Then
txtlocalidad.Text = ds.Tables("Clientes").DefaultView.Item("Localidad" ).ToString
If Not ds.Tables("Clientes").DefaultView.Item("Provincia" ) Is DBNull.Value Then
txtprovincia.Text = ds.Tables("Clientes").DefaultView.Item("Provincia" ).ToString
If Not ds.Tables("Clientes").DefaultView.Item("Pais") Is DBNull.Value Then
txtpais.Text = ds.Tables("Clientes").DefaultView.Item("Pais").ToS tring
If Not ds.Tables("Clientes").DefaultView.Item("Telefono") Is DBNull.Value Then
txttelefono.Text = ds.Tables("Clientes").DefaultView.Item("Telefono") .ToString
If Not ds.Tables("Clientes").DefaultView.Item("Cuit") Is DBNull.Value Then
txtcuit.Text = ds.Tables("Clientes").DefaultView.Item("Cuit").ToS tring
If Not ds.Tables("Clientes").DefaultView.Item("Contacto") Is DBNull.Value Then
txtcontacto.Text = ds.Tables("Clientes").DefaultView.Item("Contacto") .ToString
If Not ds.Tables("Clientes").DefaultView.Item("Observacio nes") Is DBNull.Value Then
txtobservaciones.Text = ds.Tables("Clientes").DefaultView.Item("Observacio nes").ToString
End If
End If
End If
End If
End If
End If
End If
End If
End If

End Sub


esta es la linea que me deja marcada..
If ds.Tables("Clientes ").DefaultView.Count > 0 Then

tengo un campo ID que es incremental, sera eso lo que me esta causando el problema ???
mm no.. el campo id no es el probelma tampoco.. probe sacandolo.. tambien quite lo de permitir valores nulos en la db a ver si era algo de eso.. pero tambien me sigue tirando el mismo error... uff me tiene loko sin saber que puede ser =(

Última edición por ccristian79; 23/06/2009 a las 10:46
  #15 (permalink)  
Antiguo 23/06/2009, 11:06
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: consulta sobre un combobox

porque no remplazas

If ds.Tables("Clientes ").DefaultView.Count > 0 Then

por

If ds.Tables("Clientes ").Rows.Count > 0 Then


porque trabajas con Vistas??
y porque los Ifs anidados??
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #16 (permalink)  
Antiguo 23/06/2009, 12:04
 
Fecha de Ingreso: junio-2009
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: consulta sobre un combobox

Cita:
Iniciado por boluart Ver Mensaje
porque no remplazas

If ds.Tables("Clientes ").DefaultView.Count > 0 Then

por

If ds.Tables("Clientes ").Rows.Count > 0 Then


porque trabajas con Vistas??
y porque los Ifs anidados??
xq como no lo se hacer, empece a buscar codigos por la web, y encontre uno que lo hacia asi, trate de adaptarlo a mi proyecto, pero no me funciona.. =(
que es lo que recomiendas ?? no se si lograste entender que es lo que necesito
  #17 (permalink)  
Antiguo 23/06/2009, 12:40
 
Fecha de Ingreso: junio-2009
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: consulta sobre un combobox

Cita:
Iniciado por ccristian79 Ver Mensaje
xq como no lo se hacer, empece a buscar codigos por la web, y encontre uno que lo hacia asi, trate de adaptarlo a mi proyecto, pero no me funciona.. =(
que es lo que recomiendas ?? no se si lograste entender que es lo que necesito
tal vez no sepa explicarme lo q kiero hacer... si algun alma generosa, me puede ayudar, les dejo mi mail o msn para poder conversar mejor
[email protected]

muchisiimas gracias a todos por contestarme.. lastima que aun, no logro resolver este problema =(
trate de subir una captura de pantalla de mi sistema para mostrar que es lo q kiero hacer, pero no me deja el sistema.. porque no alcanzo al numero de post necesarios
  #18 (permalink)  
Antiguo 23/06/2009, 13:43
Avatar de jaullo  
Fecha de Ingreso: abril-2009
Mensajes: 994
Antigüedad: 15 años
Puntos: 30
Respuesta: consulta sobre un combobox

Por si alguien esta interesado en esta pagina he subido un ejemplo
http://www.myforonet.hostei.com/viewtopic.php?f=16&t=16
  #19 (permalink)  
Antiguo 24/06/2009, 09:12
 
Fecha de Ingreso: junio-2009
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: consulta sobre un combobox

muchas gracias por la informacion y por la ayuda.. pero al final nunca lo pude solucionar =(
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 16:15.