Programación General > Visual Basic para principiantes
Conventir entero a cadena o.o?
lineare:
Hola disculpen quisiera saber si es posible poder evaluar una lista de un combobox que contiene numero a una cadena ya que en mi consulta el campo es texto.
--- Código: Visual Basic ---Private Sub Option1_Click(Index As Integer)'Pone en blanco las columnas de datagrid y los combo de consulta Combo1.Clear Combo2.Clear Combo3.Clear DataGrid1.ClearSelCols'COMIENZA LA CONSULTA DEPENDIENDO DEL RESULTADO DE LOS OPTION BOTON X = Index + 1 If X = 10 Then X = "A" If X = 11 Then X = "B" linea.RecordSource = "SELECT * From sqlies WHERE estacion.linea = '" & X & "'" linea.Refresh Do While Not linea.Recordset.EOF Combo1.AddItem linea.Recordset.Fields(1) Combo3.AddItem linea.Recordset.Fields(1) linea.Recordset.MoveNext Loop Combo1.ListIndex = 0End Sub Private Sub Combo1_Click()'DA LA CONSULTA DE LAS ESTACIONES If Combo1.text = "No hay ninguna estación seleccionada " Then Exit Sub Combo3.ListIndex = Combo1.ListIndex [color=#FF4000]linea.RecordSource = "SELECT estacion.nombre_estacion FROM sqlies WHERE estacion.orden=" _ & Val(Combo3.text)[/color] linea.Refresh Combo2.Clear Do While Not linea.Recordset.EOF Combo2.AddItem linea.Recordset.Fields(0) linea.Recordset.MoveNext Loop Combo2.ListIndex = 0End Sub
lo que necesito es que en el combo 2 se desplieguen la lista de nombres de pendiendo del option boton que se seleccione
De antemano muchas gracias espero sus sugerencias ^_^
Nebire:
No acabo de entender lo que quieres, asumo que no te explicas con claridad.
Un combobox, puede ser comparado por el texto que aloja o por el índice. En esto es lo mismo que una matriz.
Comparar usando el índice (no nos importa el texto en este caso)
--- Código: Visual Basic --- if combo1.listindex = 5 then ' el código que se quiera asociar.end if Aquí le hemos preguntado si está seleccionado el elemento 5º en el combobox, no nos importa su contenido. Esto es útil cuando el contenido puede variar pero sabemos de fijo que implica. Por ejemplo imagina un combobox con 7 elementos. El elemento 0 podría ser nombre de país, el elemento1 nombre de ciudad, ................ el elemento 5 nombre de persona, y el elemento 6 número de afiliación a lo que sea. Entonces en el ejemplo, le estaríamos indicando qué interesa saber; si está seleccionado el nombre, sea éste el que sea.
Otro caso, comparando el texto seleccinado (el contenido del índice seleccionado)
--- Código: Visual Basic --- if combo1.list(combo1.listindex)= "Pedro" then ' el código asociado que queremos ejecutarend if Como puedes observar el acceso al texto es a través de su propiedad list(número), imagina simplemente que tiene una matriz llamada list, así de simple.
Si invocamos como índice de la matriz, el valor: 'combo1.listindex', pués es claro que el índice deseado es el índice seleccionado. Esto es útil para comparar elementos cuya naturaleza son todas del mismo tipo (para esto un listbox suele ser más explícito aunque ocupa más espacio, por el despliegue).
Los combos son útiles para contener diferentes tipos de 'elementos' (nada impide que contengan un único tipo de 'elementos') y las listas son muy útiles para los elementos del mismo tipo. Imagina un combo con 3 elementos: Unidades, carpetas y ficheros e imagina una lista donde tras seleccionar uno de esos 3 elementos se llena con las unidades del sistema, las carpetas de la unidad actual o los ficheros de la carpeta actual.
El uso es totalmente libre, sin embargo es ese uso el que nos indica cuando nuestra selección exige una comparación por índice o por 'texto', en el caso del combo donde hay varios 'elementos' distintos, utilizar el índice es más rápido, cómodo y claro que comparar por el texto, en cambio cuando el combo tiene todos sus ítems de un único 'elemento' la utilidad recáe en el texto.
Otro código... recorrer el combo, es lo mismo que recorrer una matriz.
--- Código: Visual Basic --- for k= 0 to combo.listcount -1 if combo.list(k)= Nombre then ' el código asociado. end ifnext
Sólo recordar que a diferencia de una lista, un combo actúa exclusivamente como una matriz de options-button, es decir sólo hay 1 elemento seleccionado a la vez (una lista permite múltiple selección, el combo no).
El combo, te indiqué mas arriba tiene ese doble 'comportamiento' (cada elemento puede representar una familia, o todos los elementos pertenecen a la misma familia), que no es un comportamiento íntrínseco del control, sino exclusivamente del diseño (el concepto que tu albergas). Es importante comprender esto explicado, para sacar el mayor provecho posible aun combobox.... Pero precisamente porque existe el listbox, el combobox carece de sentido que tenga múltiple selección.
Entonces, ¿ cómo miramos la múltiple selección...? imagina que tenemos un hotel y se requiere de los clientes que elijan qué días quieren recibir el desayuno a lo largo de la semana... cargamos un listbox con los días de la semana, en el listbox se activa la propiedad multiselect (y si se se requiere utilizar casillas de marca style=checkbox). Este código lo omitimos luego entenderás que es fácilmente deducible de los siguientes...
Luego, para preparar los desayunos ... para saber la lista de hoy 'Jueves' de los clientes a los que hay que preparar el desayuno, tendremos 2 listbox, en uno los nombres de los clientes, cuyo índice es el nº de habitación y en otro listbox se cargará la lista de la semana de ese cliente.(esto último es imprescindible porque usamos una base de datos, tiene un carácter explicativo).
--- Código: Visual Basic --- dim Hoy as byte Hoy = 4 ' jueves For k = 0 to listHabitaciones.listcount-1 if listHabitaciones.list(k)<>"" then ' la habitación no está desocupada, hay un cliente ' 1 cargar la lista desayuno semanal (que eligió el cliente) desde la base de datos al listbox, luego... ' 2 el cliente de la habitación k, tiene encargado desayuno para hoy ? if listDesayuno.Selected(Hoy)= TRUE then ' 3 preparar desayuno para la habitación k end if end if next Naturalmente si utilizamos una base de datos esto lo haríamos sin necesidad de listbox, pero se trata de explicar la funcionalidad del listbox y del combobox.
Otro modo de recorrer un listbox, pero para comprobar su propiedad múltple selección
--- Código: Visual Basic --- for k= 0 to list1.listcount -1 if list1.selected(k) = true then ' lo que vayamos a hacer... end ifnext
Por último, cuando usamos un combo, podemos además elegir un comportamiento ligeramente diferente basado en la propiedad style del combobox, por defecto se suele usar la opción 'dropdown combo', con esta opción es posible introducir un texto que no figura en la lista, el evento change se encargade registrar este caso, pero sólo deberíamos marcar que ha existido cambió y validarlo con el evento validate, hay que evento change ocurre con cada carácter pulsado . Pero imagina que tenemos los días de la semana en un combo, evidentemente no nos podemos arriesgar a que alguien ponga 'pepino' como selección, sino que los días deben ser fijos desde lunes hasta domingo, en este caso, en la propiedad style elegimos 'Dropdown list'.
Supongo que dadas las explicaciones debería quedarte claro el tema aunque yo no haya entendido realmente cual es tu problema.
----------------
p.d.: Ahora al volver a leerte lo que preguntas, me parece entender lo que tan farragosamente has liado... de hecho la pregnta está mal planteada y podrías haber omitido todo el código porque ni siquiera tiene que ver con combos ni base de datos.
al parecer tu quieres procesar una variable numérica como string, esto es algo tan elemental, en los lenguajes que debería estar prohibido preguntarlo. Por que es una simple conversión de datos. Después de aprender los tipos de datos básicos que admite un lenguaje lo siguiente a aprender es como convertir uno en otro cuando esto es posible:
--- Código: Visual Basic --- dim Precio as long dim Valor as string Precio = 1033 Valor= CStr(Precio) & "Euros." asignamos sobre una variable string, el valor de una variable numérica, para ello lo convertimos (convertString) msgbox valor
lineare:
Hola muchas gracias por responder y me disculpo por no ser tan explicits el problema que tengo es que cuando ejecuto el programa me aparece el siguiente error:
No se han especificado valores para algunos de los parametros requeridos
y cuaqndo le pongo en depurar me sale que esta llinea de codigo esta mal
--- Código: Visual Basic ---RecordSource = "SELECT estacion.nombre_estacion FROM sqlies WHERE estacion.orden=" & Val(Combo3.text)
lo que no estiendo es porque me marca error si este codigo ya habia funcionado con otra base de datos crei que seria por que lo estaba tomando como entero ya que trabaje con matrices pero al parecer es otra cosa
Nebire:
--- Código: Visual Basic ---if combo3.text <>"" then RecordSource = "SELECT estacion.nombre_estacion FROM sqlies WHERE estacion.orden = " & Combo3.textend if Nota el: Combo3.text , sin el val, la base de datos espera una cadena de textos, así el valor sea un número. Una query pasada por vb es una cadena de texto, espera TEXTO. si el registro luego resulta almacenar datos numéricos, luego ya lo convertirá a numero...
p.d.: acostúmbrate a dejar espacios en blanco donde vayan, ya que 'orden=' es distinto de 'orden =' lo mismo que 'x + 3' es una operación, 'x+3' se interpreta como una variable, no como una operación.
lineare:
Hola disculpa la molestia pero al momento de ejecutar me sale un error y el mensaje que me aparece es relacionado al adodc "No se han especificado valores para algunos de los parametros requeridos la verdad no se a que se deba ya revise varias veces la conexion y esta al igual que la consulta
--- Código: Visual Basic --- Private Sub Combo1_Click()'DA LA CONSULTA DE LAS ESTACIONES If Combo1.Text = "No hay ninguna estación seleccionada " Then Exit Sub Combo3.ListIndex = Combo1.ListIndex If Combo3.Text <> "" Then linea.RecordSource = "SELECT estacion.nombre_estacion FROM sqlies WHERE estacion.linea = " & Combo3.Text linea.Refresh Combo2.Clear Do While Not linea.Recordset.EOF Combo2.AddItem linea.Recordset.Fields(2) linea.Recordset.MoveNext Loop Combo2.ListIndex = 0 End IfEnd Sub
De antemano muchas gracias por t ayuda y paciencia :hola:
Navegación
[#] Página Siguiente
Ir a la versión completa