Hola, necesito ayuda con los ComboBox en mi aplicación

Me alegro encontrarte por acá, te cuento...
Mira, mi aplicación es en Visual6.0 con base de datos en Access2007
La aplicación es para crear una base de datos (BD) de clientes con toda la info personal, laboral y de contacto.
Hasta ahora he seguido tu ayuda y he conseguido hacer un FORM que se comunica con la BD para abrir y guardar datos de cliente sy crear clientes nuevos... (gracias por el código que me facilitaste para conseguir esto). Te recuerdo que soy usuario NOVATO en Visual y trato de aprender lo que más puedo, pero para mí esto aún es chino en varios aspectos. :S
Necesito aprender algunas cosas más acerca de esto, ya que hay items que aún no manejo y me facilitarían la vida en Visual.
Para que quedemos claros, te adjunto el código para que veas como llamo la BD desde el FORM:
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Form_Load()
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                           App.Path & "\csv.mdb" & ";Persist Security Info=False"
cnn.Open
 rs.Open "Select * from db_ventas", cnn, adOpenDynamic, adLockOptimistic
 Call Visualizar_Datos
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Los datos los llamo y grabo a la BD por RecordSet y funciona de maravilla...
He agregado a mi FORM algunos COMBOBOX, a los cuáles he conseguido agregar datos por medio del "DataList", en las propiedades del ComboBox.
Ahora, lo que necesito hacer es lo siguiente:
*He creado un segundo FORM para editar exclusivamente los ComboBox (como Form de Administrador por ejemplo), en el cuál he agregado un FRAME que incluye todo lo necesario (a mi parecer) como para editar uno de los ComboBox. Mi idea es hacer varios FRAMES y que cada uno agregue, elimine o actualice opciones de un ComboBox en específico, y que guarde en otra BD los cambios... Esto es para tener separadas las BD de la aplicación y la de los clientes por temas de seguridad (por ejemplo montadas en 2 HDD diferentes por decir algo)... El código que conseguí en la red para esto es el que sigue:
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Option Explicit
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
'Connection Confirmation
Private Sub Form_Load()
    ' establece la cadena de conexión a utilizar en la propiedad ConnectionString
    cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                           App.Path & "\csv_maestro.mdb" & ";Persist Security Info=False"
    ' Abre la base de datos
    cnn.Open
    ' Abre el recordset enviando la consulta sql
rs.Open "Select * from mod_dia_pago", cnn, adOpenDynamic, adLockOptimistic
    ' Muestra los datos en los text
    Call Visualizar_Datos
End Sub
'**************************************************
'**************************************************
' Sub que carga los datos del recordset y los asigna al TextBox1 y ComboBox1
Private Sub Visualizar_Datos()
   Text1.Text = CLng(rs("Id"))
   Combo1.Text = rs("dia_pago")
End Sub
Private Sub CmdExit_Click()
End
End Sub
Private Sub Command1_Click()
' Esto genera el ítem ingresado en el TextBox2
Combo1.AddItem Text2.Text
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Graba los datos en la base de datos csv_maestro (PRUEBA)
    'Call Asignar_Datos
    'rs.Update
    'MsgBox " Registro guardado", vbInformation, "Grabar"
    'Frame2.Enabled = True
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Esto borra el contenido del TextBox2 al Click
Text2.Text = ""
End Sub
Private Sub Command2_Click()
' Esto elimina el ítem activo en el ComboBox1
Combo1.RemoveItem Combo1.ListIndex
End Sub
Private Sub Command3_Click()
' Esto borra todos los ítems del ComboBox1
Combo1.clear
End Sub
Private Sub Command4_Click()
'Esto refresca la lista del ComboBox1, no tiene ninguna utilidad en sí en este ComboBox
'pero si se genera la lista en una base de datos, es necesario para que actualice la BD
Combo1.Refresh
End Sub
Private Sub Frame4_DragDrop(Source As Control, X As Single, Y As Single)
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
**Ahora, lo que necesito saber es como hago que este FORM de administración funcione, ya que no hace lo que necesito que haga (lo que aparece en el codigo, algo esta mal y no se que)
***El problema final es que necesito saber como haer que el FORM de los clientes (el primero) me lea los datos de esta segunda BD y siga guardándome los resultados seleccionados en la BD de los clientes...
¿Se entiende algo?
En resumen:
1° Hacer que un ComboBox lea las opciones que muestra de una BD diferente a la inicial.
2° Conseguir crear y modificar las opciones a seleccionar en un ComboBox desde un Form de administración po ejemplo.
3° Lograr que en el FORM de los clientes se lean las opciones de estos ComboBox que están conectados con otra BD para mostrar sus opciones y me guarde los resultados de las selecciones en la BD de clientes.
(Traté de ser lo más claro posible para que entiendas mi problema...)

1 Respuesta

Respuesta
1
Me mataste y me mareaste!
No se que mirar...
Empecemos devuelta por favor y separemos los problemas
primero ¿por qué 2 bases de datos?
Si usas 2 bases de datos tienes que usar 2 conexiones distintas...
Consejo, no se si los combobox sirven para lo que vos necesitas, me parece una manera compleja de ver los datos, prefiero textbox y una grilla para ver los datos.
Habiendo aclarado esto, necesito que seas más concretro en tu problema, digamos
por ejemplo, no puedo hacer que el combobox me tome lo que seleccione, o que el combobox no refresca los datos de la base etc.
El tema de las 2 bases de datos, es porque tengo claro de que las bases de datos como las planillas exel tienen un limite de tamaño y peso manejable, sino después para respaldos o etc se hace muy complejo...
Por eso quiero separar la aplicación de la base de datos de clientes a crear o modificar..
Sé como llamar datos de una BD y etc, pero no sé como hacerlo ni de otra tabla ni menos de otra base en un mismo form :S HELP! jaja (recuerda que no manejo casi nada de programación, aun me limito a jugar, probar y copiar y pegar :P
¿Cuándo te refieres a los textbos para ver un listado es un "listbox" a lo que te refieres?
Porque se como llamar un campo en especifico con referencia a un "ID", pero no llamar un listado en un solo campo o lista ¿se entiende?
Para eso debiera crear otra BD donde en cada tabla guarde los datos de cada ListBox, pero no se como conectar otra tabla o BD...
Sé como hacer que un campo o un TextBox me lea y cambie los datos en un campode un ID, pero no un ListBox... ese es mi problema...
Saludos y disculpa por el mareo... jajajaja
El código que uso esta arriba as menos...
¿Tantos datos vas a cargar para tener 2 base de datos?
Para conectarte es lo mismo pero lo copias con otros nombres las variables
cone1 y cone2, pero me parece que tienes que pensar la base de datos primero, frenar y verla bien porque la frase "debería crear otra bd donde cada tabla guarde los dato... me parece que estas mal encaminado, muy mal. y después eso se refleja totalmente en la aplicación que quieres hacer y te queda un lio tremendo.
Yo te recomiendo 1 sola tabla, totalmente normalizada como dicen los libros y después ver la aplicación.
si usaste el codigo que te mande para dar un alta habras usado update y addnew
para text  y para list te paso el codigo
rs.update
rs!id = text1
rs!id = list1.list(list1.listindex)
Rs. Addnew
Aver, el tema de usar separado donde se guardan los datos de clientes y los datos de los listbox o combobox o etc de la aplicación, me hace más sentido porque así separo la aplicación de la información que modificaré o trabajaré (tabla de clientes)
Entiendo que mejor trabajo en una sola BD y eso me facilitaría las cosas y podría ser, solo tendría que ser más ordenado... (aclarando esto, eso haré y me simplifico la vida)
Ahora el tema es ok, dejo una Tabla para los clientes y otra para los datos de mi aplicación, pero tengo la siguiente duda:
¿Cómo hago para llamar o cargar o guardar los datos de un textbox cualquiera en otra tabla que no sea la de datos de clientes por ejemplo?, porque hasta ahora llamo los datos con el siguiente código:
____________________________________________________________
Option Explicit
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Private Sub dcbocustomer_Change()
End Sub
Private Sub Command1_Click()
'Carga y muestra Formulario Administración
    Load ComboBox_Editor
    ComboBox_Editor.Show
End Sub
'Connection Confirmation
Private Sub Form_Load()
    ' establece la cadena de conexión a utilizar en la propiedad ConnectionString
    cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                           App.Path & "\csv.mdb" & ";Persist Security Info=False"
    ' Abre la base de datos
    cnn.Open
    ' Abre el recordset enviando la consulta sql
    rs.Open "Select * from db_ventas", cnn, adOpenDynamic, adLockOptimistic
    ' Muestra los datos en los text
    Call Visualizar_Datos
End Sub
__________________________________________________________
Leo los datos en los list box por ejemplo como puse en este codigo:
rs("ac_comuna") = Text22.Text
Y modifico y etc por este medio... eso lo tengo claro...
Pero ¿cómo hago para crear un listbox en una tabla que llamare por ejemplo "app" en la misma DB para poder llamarla y etc?...
Ese código permanece aún en el limbo de mi ignorancia... jajajaja solo sé trabajar en una sola tabla (que triste... buuuu) y tampoco sé como hacer que un listbox me lea datos de una columna o de varias celdas (nuevamente... buuuuu)
Agradezco tu tiempo...
Litto.
PD: tengo claro que salí un poco duro de cabezota, pero es la única forma de aprender... preguntando :P.. agradezco tu tiempo...
Leo los datos en los list box por ejemplo como puse en este código:
rs("ac_comuna") = Text22.Text !!!!!!!!! esto es un text box, por favor decime que no confundis textbox con listbox....
La pregunta como hago para crear un listbox en una tabla que...
No se entiende bien el porque quieres hacer eso...
El listbox es un componente para mostrar los datos, como su nombre lo indica es una lista. Para cargarla tienes que ir cargándole los datos con additem.
Ahora fíjate por favor que datos irían en la lista ¿clientes? ¿Código de productos?
Te pregunto ¿quieres llenar un listbox? ¿Quieres cargar un dato en la base tomado del listbox?
nopo, aver, si se la diferencia entre un TextBox (son los que se usar hasta ahora) y un ListBox, solo que no se como usar los ListBox..
.
Tienes toda la razón, lo que quiero hacer es mostrar datos en una "ventanita" que me de múltiples opciones (según yo la opción seria un listbox o combobox), datos leídos de una segunda tabla de la BD y a su vez quiero poder ingresar datos en esa "ventanita" para que se agreguen al listado de ese ListBox (o ComboBox), no sé cual será más apropiado...
Quiero llenar el ListBox desde el formulario y ademas cargar un dato en la base que he seleccionado del ListBox... eso mismo que mencionas es lo que quiero hacer... ¿solo que ademas como quiero hacerlo en una segunda tabla, no se como llamar los datos, ni cargarlos, solo se ese procedimiento en los TextBox y en una sola tabla...
Gracias nuevamente...
Algo entendí...
Te recomiendo un listbox fíjate que en propiedad style tienes que elegir checkbox, y la lista te aparece con un recuadro para hacer un tilde.
¿Este listbox seria para mostrar campos de la tabla no?
Yo pondría otro para agregar, pero siempre estamos hablando de campos para la tabla, no de datos que se van a insertar en la tabla ¿esta correcto eso?
Para tomar el dato que elegiste del listbox
Listbox. List(listbox. Listindex)
Aún estoy peleando con los ListBox (no puedo llegar a una relación de romance aún con ellos jajajaja), pero en fin tengo otro problemita mientras sigo intruseando los List...
Mira, lo que pasa es que tengo un FORM3 (por ejemplo) creado que es el de mi aplicación.
He creado un "FORM6" (nombre de ejemplo) que me permite ingresar o botar el programa con una password... la dificultad es la siguiente, cuando ejecuto la aplicación, me abre el FORM3 directo y no el FORM6 como necesito...
¿Cómo hago para que arranque en el FORM3 primero? (Ya sé hacer que al hacer click en algo me abra el que le designe siguiente, pero con el primero tengo problemas)
OJO, que el FORM que me abre la BD es el FORM3, el 6 por ejemplo podría ser una pantalla de bienvenida o de password o que se yo...
Es una pregunta totalmente distinta!
Después fíjate si la podes separar porque me vas a enloquecer, con respecto a los listbox son re queribles, le tienes que agarrar la mano.
lo que queres hacer vos se llama form mdi y los otros form son child.
Sino en propiedades del visual basic, tienes que configurarlo para que el form6 arranque primero.
Pero investiga mdiform y form estilo child te va a ser mucho más útil.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas