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

Generar listbox en base a otro listbox en una base de datos sql, asp.net

Estas en el tema de Generar listbox en base a otro listbox en una base de datos sql, asp.net en el foro de .NET en Foros del Web. Hola!!! Buen día a todos!!! Pues verán tengo una duda y no eh encontrado como solucionarla, tengo 1 listbox, el cuál me muestra las tablas ...

  #1 (permalink)  
Antiguo 03/10/2011, 09:39
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Pregunta Generar listbox en base a otro listbox en una base de datos sql, asp.net

Hola!!! Buen día a todos!!! Pues verán tengo una duda y no eh encontrado como solucionarla, tengo 1 listbox, el cuál me muestra las tablas de mi base de datos, me gustaría saber como al hacer la selección de uno o varios elementos de la lista me generará otro listbox en el que aparecieran las columnas de la tabla o tablas que seleccione, lo único que eh logrado es mostrar los 2 listbox uno con las tablas de la base de datos, y el otro con TODAS las columnas de TODAS las tablas de mi base de datos, el problema como les dije es este, no se como hacerle por medio de la selección de uno o varios elementos del listbox para que solo me muestre los elementos seleccionados, aquí les dejo el código de lo que hasta el momento tengo :s...

Código ASP:
Ver original
  1. <%@ Import Namespace="System.Data.SQLClient" %>
  2. <script language="vbscript" runat="server">
  3. Sub Page_Load(Sender As Object, E As EventArgs)
  4.         Dim conn As SqlConnection =
  5.          New SqlConnection("server=myhost;database=mydb;User ID=myuser;Password=mypass;Trusted_Connection=no")
  6.         Dim sql As String =
  7.          "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS GROUP BY TABLE_NAME"
  8.         Dim sql2 As String =
  9.          "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS GROUP BY COLUMN_NAME"
  10.         Dim dr As New SqlCommand(sql, conn)
  11.         Dim dr2 As New SqlCommand(sql2, conn)
  12.         Dim reader As SqlDataReader
  13.         Dim values As ArrayList = New ArrayList()
  14.         Dim values2 As ArrayList = New ArrayList()
  15.         conn.Open()
  16.         reader = dr.ExecuteReader()
  17.         While reader.Read()
  18.             values.Add(reader.Item("TABLE_NAME").ToString())
  19.         End While
  20.         reader.Close()
  21.         reader = dr2.ExecuteReader()
  22.         While reader.Read()
  23.             values2.Add(reader.Item("COLUMN_NAME").ToString())
  24.         End While
  25.         lb.DataSource = values
  26.         lb.DataBind()
  27.         lb2.DataSource = values2
  28.         lb2.DataBind()
  29.         reader.Close()
  30.         conn.Close()
  31.     End Sub
  32. </script>
  33. <html>
  34. <head>
  35. <title>Tablas y Columnas</title>
  36. </head>
  37. <body>
  38.     <asp:Label ID="Label1" runat="server" Text="RPE del Empleado"></asp:Label>
  39. <form id="Form1" method="post" runat="server">
  40. <asp:ListBox id="lb" SelectionMode="Multiple" runat="server" Height="643px"
  41.     Width="196px"/>
  42.     <asp:ListBox id="lb2" SelectionMode="Multiple" runat="server" Height="643px"
  43.     Width="196px"/>
  44. </form>
  45. </body>
  46. </html>

Muchas gracias de antemano, eh buscado pero no he encontrado una solución hasta ahora, de nuevo gracias...
  #2 (permalink)  
Antiguo 03/10/2011, 14:51
Avatar de rikakashi  
Fecha de Ingreso: julio-2011
Mensajes: 226
Antigüedad: 13 años, 4 meses
Puntos: 33
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

Primero en tu segunda cadena SQL deberias de crearla con una variable donde agregues las tablas seleccionadas de las cuales quieres obtener las columnas es decir:
Listbox.selectitem=1,2 etc...
en una variable tipo cadena almacena los item seleccionados creando una cadena ya sea si solo se selecciona una tabla sea TABLE_NAME ='nombre de la tabla' con las comillas simples y si se seleccionan 2 o mas

entonces tu cadena seria table_name='tabla1' and table_name='tabla2'


sql2 = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE" & CADENA & "GROUP BY COLUMN_NAME"
__________________
la programación es tan grande como la imaginación (+.+)
  #3 (permalink)  
Antiguo 06/10/2011, 09:00
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

Sinceramente no entendí muy bien, intente de otras maneras pero solo consigo mover elementos que yo meto a través de un textbox y no de mi base de datos , eh aqui el ejemplo:

Código ASP:
Ver original
  1. <%@ Page Language="VB" AutoEventWireup="false" CodeFile="MoverList.aspx.vb" Inherits="MoverList" %>
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4.  
  5. <html>
  6. <form id="form1" runat="server" name="form1">
  7. <script language="vb" runat="server">
  8.  
  9.     Private Sub btnAgregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAgregar.Click
  10.        
  11.                 Dim Nombre As String = Me.txtnombre.Text
  12.                 Me.txtnombre.Text = ""
  13.                 Me.lstdisponibles.Items.Add(Nombre)
  14.            
  15.     End Sub
  16.  
  17.  
  18.     Private Sub btnasignartodo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnasignartodo.Click
  19.         Dim i As Integer
  20.         If lstdisponibles.Items.Count > 0 Then
  21.             For i = 0 To lstdisponibles.Items.Count - 1
  22.                 Me.lstasignadas.Items.Add(
  23.                 Me.lstdisponibles.Items.Item(i))
  24.             Next i
  25.             lstdisponibles.Items.Clear()
  26.         End If
  27.     End Sub
  28.  
  29.     Private Sub btnquitartodo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnquitartodo.Click
  30.         Dim i As Integer
  31.         If lstasignadas.Items.Count > 0 Then
  32.             For i = 0 To lstasignadas.Items.Count - 1
  33.                 Me.lstdisponibles.Items.Add(
  34.                 Me.lstasignadas.Items.Item(i))
  35.             Next i
  36.             lstasignadas.Items.Clear()
  37.         End If
  38.     End Sub
  39. </script>
  40.  
  41. <asp:TextBox ID="txtnombre" runat="server"></asp:TextBox>
  42. <asp:ListBox ID="lstdisponibles" runat="server"></asp:ListBox>
  43. <asp:Button ID="btnAgregar" runat="server" Text="Agregar" />
  44. <asp:Button ID="btnquitartodo" runat="server" Text="Eliminar Todas" />
  45. <asp:Button ID="btnasignartodo" runat="server" Text="Asignar Todas" />
  46. <asp:ListBox ID="lstasignadas" runat="server"></asp:ListBox>
  47. </form>
  48. </html>

... Soy un novato, si pudieras decirme algo más especifico, lo agradecería mucho intente hacerlo como me dijiste pero como vincularía un listbox con otro??... Intente con el código que te puse al principio pero simplemente estoy algo frío...

Código ASP:
Ver original
  1. <%@ Import Namespace="System.Data" %>
  2. <%@ Import Namespace="System.Data.SQLClient" %>
  3. <script language="vbscript" runat="server">
  4. Sub Page_Load(Sender As Object, E As EventArgs)
  5.         Dim cadena
  6.         Dim conn As SqlConnection =
  7.          New SqlConnection("server=myhost;database=mydb;User ID=myuser;Password=mypass;Trusted_Connection=no")
  8.         Dim sql As String =
  9.          "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES GROUP BY TABLE_NAME"
  10.         Dim sql2 As String =
  11.          "SELECT COLUMN_NAME FROM '&cadena&' GROUP BY COLUMN_NAME"
  12.         Dim dr As New SqlCommand(sql, conn)
  13.         Dim dr2 As New SqlCommand(sql2, conn)
  14.         Dim reader As SqlDataReader
  15.         Dim values As ArrayList = New ArrayList()
  16.         Dim values2 As ArrayList = New ArrayList()
  17.         conn.Open()
  18.         reader = dr.ExecuteReader()
  19.         While reader.Read()
  20.             values.Add(reader.Item("TABLE_NAME").ToString())
  21.         End While
  22.         reader.Close()
  23.         reader = dr2.ExecuteReader()
  24.         While reader.Read()
  25.             values2.Add(reader.Item("COLUMN_NAME").ToString())
  26.         End While
  27.         lb.DataSource = values
  28.         lb.DataBind()
  29.         lb2.DataSource = values2
  30.         lb2.DataBind()
  31.         cadena=table_name='b_traba1' and table_name='b_traba2'
  32.         reader.Close()
  33.         conn.Close()
  34.     End Sub
  35.    
  36.  
  37. </script>
  38. <html>
  39. <head>
  40. <title>Tablas y Columnas</title>
  41. </head>
  42. <body>
  43.     <asp:Label ID="Label1" runat="server" Text="RPE del Empleado"></asp:Label>
  44. <form id="Form1" method="post" runat="server">
  45. <asp:ListBox id="lb" SelectionMode="Multiple" runat="server" Height="643px"
  46.     Width="196px"/>
  47.     <asp:ListBox id="lb2" SelectionMode="Multiple" runat="server" Height="643px"
  48.     Width="196px"/>
  49. <asp:Button ID="Button1" runat="server" Text="Button" />
  50.  
  51.  
  52.  
  53. </form>
  54. </body>
  55. </html>
  #4 (permalink)  
Antiguo 06/10/2011, 09:33
Avatar de rikakashi  
Fecha de Ingreso: julio-2011
Mensajes: 226
Antigüedad: 13 años, 4 meses
Puntos: 33
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

Código vb:
Ver original
  1. Sub Page_Load(Sender As Object, E As EventArgs)
  2.         Dim reader As SqlDataReader
  3.         Dim values As ArrayList = New ArrayList()
  4.         Dim values2 As ArrayList = New ArrayList()
  5.         Dim conn As SqlConnection =
  6.          New SqlConnection("server=myhost;database=mydb;User ID=myuser;Password=mypass;Trusted_Connection=no")
  7.  
  8.         Dim sql As String =
  9.          "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS GROUP BY TABLE_NAME"
  10.         Dim dr As New SqlCommand(sql, conn)
  11.  reader = dr.ExecuteReader()
  12.         While reader.Read()
  13.             LISTBOX1.INSERT(0,READER.VALUE)
  14.         End While
  15.         reader.Close()
  16.  
  17. DIM CADENA AS STRING = LISTBOX1.SELECTITEM
  18.   Dim sql2 As String =
  19.          "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS  WHERE TABLE NAME =" & CADENA & "GROUP BY COLUMN_NAME"
  20.         Dim dr2 As New SqlCommand(sql2, conn)
  21.                  
  22.         reader = dr2.ExecuteReader()
  23.         While reader.Read()
  24.             LISTBOX2.INSERT(0,READER.VALUE)
  25.         End While
  26.         lb.DataSource = values
  27.         lb.DataBind()
  28.         lb2.DataSource = values2
  29.         lb2.DataBind()
  30.         reader.Close()
  31.         conn.Close()
  32.     End Sub

ES MAS O MENOS ASI LA LOGICA, TRATA DE ADAPTARLO
__________________
la programación es tan grande como la imaginación (+.+)
  #5 (permalink)  
Antiguo 06/10/2011, 14:39
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

Creo que si le voy entendiendo pero el problema es que me arroja un problema con la sntaxis del insert:

lb1.INSERT(0,READER.VALUE) <-----

Me dice esto:

BC30456: 'INSERT' no es un miembro de 'System.Web.UI.WebControls.ListBox'.

Gracias de nuevo!!!
  #6 (permalink)  
Antiguo 07/10/2011, 10:19
Avatar de rikakashi  
Fecha de Ingreso: julio-2011
Mensajes: 226
Antigüedad: 13 años, 4 meses
Puntos: 33
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

ok entonces la propiedad seria lb1.add(.....)
__________________
la programación es tan grande como la imaginación (+.+)
  #7 (permalink)  
Antiguo 12/10/2011, 08:09
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

Ok, pues hice los cambios que me dijiste y me quedo así:

Código ASP:
Ver original
  1. <%@ Import Namespace="System.Data" %>
  2. <%@ Import Namespace="System.Data.SQLClient" %>
  3. <script language="vbscript" runat="server">
  4. Sub Page_Load(Sender As Object, E As EventArgs)
  5.         Dim reader As SqlDataReader
  6.         Dim values As ArrayList = New ArrayList()
  7.         Dim values2 As ArrayList = New ArrayList()
  8.         Dim conn As SqlConnection =
  9.          New SqlConnection("server=10.11.2.49;database=extractor;User ID=sa;Password=administrador;Trusted_Connection=no")
  10.  
  11.         Dim sql As String =
  12.          "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS GROUP BY TABLE_NAME"
  13.         Dim dr As New SqlCommand(sql, conn)
  14.  reader = dr.ExecuteReader()
  15.         While reader.Read()
  16.             values.Add(reader.Item("TABLE_NAME").ToString())
  17.         End While
  18.         reader.Close()
  19.  
  20. DIM CADENA AS STRING = values.SELECTEDITEM
  21.   Dim sql2 As String =
  22.          "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS  WHERE TABLE NAME =" & CADENA & "GROUP BY COLUMN_NAME"
  23.         Dim dr2 As New SqlCommand(sql2, conn)
  24.                  
  25.         reader = dr2.ExecuteReader()
  26.         While reader.Read()
  27.             values2.Add(reader.Item("COLUMN_NAME").ToString())
  28.         End While
  29.         lb1.DataSource = values
  30.         lb1.DataBind()
  31.         lb2.DataSource = values2
  32.         lb2.DataBind()
  33.         reader.Close()
  34.         conn.Close()
  35.     End Sub
  36. </script>
  37. <html>
  38. <head>
  39. <title>Tablas y Columnas</title>
  40. </head>
  41. <body>
  42.     <asp:Label ID="Label1" runat="server" Text="RPE del Empleado"></asp:Label>
  43. <form id="Form1" method="post" runat="server" name="ListEnlaza">
  44. <asp:ListBox id="lb1" SelectionMode="Multiple" runat="server" Height="643px"
  45.     Width="196px"/>
  46.     <asp:ListBox id="lb2" SelectionMode="Multiple" runat="server" Height="643px"
  47.     Width="196px"/>
  48. <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
  49. <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
  50. </form>
  51. </body>
  52. </html>

Y me sigue arrojando un error, ahora en la declaración de la variable cadena:

Mensaje de error del compilador: BC30456: 'SELECTEDITEM' no es un miembro de 'System.Collections.ArrayList'.

Disculpa la tardanza rikakashi, espero y me puedan ayudar...
  #8 (permalink)  
Antiguo 12/10/2011, 08:21
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 4 meses
Puntos: 267
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

Ese error te arroja por que los arraylist no tienen esa propiedad, verifica bien lo que te ah dado rikakashi, has colocado values en donde supuestamente tienen que ir el listbox. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #9 (permalink)  
Antiguo 12/10/2011, 08:35
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

Gracias Aquaventus. Le cambie el value por el nombre del Listbox que en este caso es lb2, y le hice un cast para que lo leyera como un String de esta manera:

Código ASP:
Ver original
  1. DIM CADENA AS STRING = lb2.SELECTEDITEM.ToString()

Pero ahora me arroja este error en el Reader:

System.InvalidOperationException: ExecuteReader requiere una Connection abierta y disponible. El estado actual de la conexión es cerrada.

Y se me hace raro ya que la conexión la cierro en la línea 35 y me dice que ya no existe conexión en la línea 15 ...
  #10 (permalink)  
Antiguo 12/10/2011, 08:41
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

Ok, el mensaje pasado la regue y ya vi donde solo le agregue el "conn.Open" antes del reader :s... lo siento, Pero ahora me vuelve a arrojar un error en la declaración de cadena:

Código ASP:
Ver original
  1. DIM CADENA AS STRING = lb2.SELECTEDITEM.ToString()

Este es el error:

Detalles de la excepción: System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.

Gracias de nuevo...
  #11 (permalink)  
Antiguo 12/10/2011, 08:52
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 4 meses
Puntos: 267
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

Puede que ese mensaje te genere porque no ahi ningun elemento seleccionado en el listbox2 y tu estes forzando esa propiedad, por ello lo del NullReferenceException, verifica eso. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #12 (permalink)  
Antiguo 12/10/2011, 08:58
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

Pues, ya quedo el código, pero jajaja lo tengo como al principio, es decir, me genera el listbox con los datos, pero lo que quiero que haga, pues no lo hace, es decir, que al seleccionar un elemento me lo mande al otro listbox, aquí les dejo el código... :p...

Código ASP:
Ver original
  1. <%@ Import Namespace="System.Data" %>
  2. <%@ Import Namespace="System.Data.SQLClient" %>
  3. <script language="vbscript" runat="server">
  4. Sub Page_Load(Sender As Object, E As EventArgs)
  5.         Dim reader As SqlDataReader
  6.         Dim values As ArrayList = New ArrayList()
  7.         Dim values2 As ArrayList = New ArrayList()
  8.         Dim conn As SqlConnection =
  9.          New SqlConnection("server=local;database=mydb;User ID=myId;Password=mypass;Trusted_Connection=no")
  10.         Dim sql As String =
  11.          "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS GROUP BY TABLE_NAME"
  12.         Dim dr As New SqlCommand(sql, conn)
  13.         conn.Open()
  14.  reader = dr.ExecuteReader()
  15.         While reader.Read()
  16.             values.Add(reader.Item("TABLE_NAME").ToString())
  17.         End While
  18.         reader.Close()
  19. DIM CADENA AS STRING = Convert.ToString(lb1.SELECTEDITEM)
  20.   Dim sql2 As String =
  21.          "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME =' & CADENA & ' GROUP BY COLUMN_NAME"
  22.         Dim dr2 As New SqlCommand(sql2, conn)
  23.                  
  24.         reader = dr2.ExecuteReader()
  25.         While reader.Read()
  26.             values2.Add(reader.Item("COLUMN_NAME").ToString())
  27.         End While
  28.         lb1.DataSource = values
  29.         lb1.DataBind()
  30.         lb2.DataSource = values2
  31.         lb2.DataBind()
  32.         reader.Close()
  33.         conn.Close()
  34.     End Sub
  35. </script>
  36. <html>
  37. <head>
  38. <title>Tablas y Columnas</title>
  39. </head>
  40. <body>
  41.     <asp:Label ID="Label1" runat="server" Text="RPE del Empleado"></asp:Label>
  42. <form id="Form1" method="post" runat="server" name="ListEnlaza">
  43. <asp:ListBox id="lb1" SelectionMode="Multiple" runat="server" Height="643px"
  44.     Width="196px"/>
  45.     <asp:ListBox id="lb2" SelectionMode="Multiple" runat="server" Height="643px"
  46.     Width="196px"/>
  47. <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
  48. <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
  49. </form>
  50. </body>
  51. </html>

El error de arriba fue solo cambiar la cadena haciendole un cast así, bueno, al menos eso creo:

Código ASP:
Ver original
  1. DIM CADENA AS STRING = Convert.ToString(lb1.SELECTEDITEM)

Gracias por sus respuestas. Sigo en lo mismo, espero y me puedan seguir ayudando por que nada más no avanzo de mostrar los elementos del listbox y hasta ahí ...

Última edición por stuart_david3; 12/10/2011 a las 09:11
  #13 (permalink)  
Antiguo 12/10/2011, 10:35
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

Bueno viendo el código según yo, no me va a mostrar nada en el segundo listbox ya que la variable cadena siempre esta vacía, supongo que necesitaría algun evento del mouse para indicarle que la variable "cadena" es leída al darle clic al elemento del listbox, y así sepa que cadena fue la seleccionada. Pero no se si esto ya lo hace la función selectedItem, así que hasta este momento he estado buscando y sigo sin terminar de entender como poder lograr que me arroje el resultado...
  #14 (permalink)  
Antiguo 12/10/2011, 15:38
Avatar de rikakashi  
Fecha de Ingreso: julio-2011
Mensajes: 226
Antigüedad: 13 años, 4 meses
Puntos: 33
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

agrega un nuevo boton y en el agrega este codigo, eliminandolo del anterior

Código vb:
Ver original
  1. DIM CADENA AS STRING = Convert.ToString(lb1.SELECTEDITEM)
  2.   Dim sql2 As String =
  3.          "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME =' & CADENA & ' GROUP BY COLUMN_NAME"
  4.         Dim dr2 As New SqlCommand(sql2, conn)
  5.                  
  6.         reader = dr2.ExecuteReader()
  7.         While reader.Read()
  8.             values2.Add(reader.Item("COLUMN_NAME").ToString())
  9.         End While
  10.         lb1.DataSource = values
  11.         lb1.DataBind()
  12.         lb2.DataSource = values2
  13.         lb2.DataBind()
  14.         reader.Close()
  15.         conn.Close()

y has la prueba con una sola tabla seleccionada y veamos que pasa
__________________
la programación es tan grande como la imaginación (+.+)
  #15 (permalink)  
Antiguo 14/10/2011, 14:31
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

Hola rikakashi gracias por tu respuesta. Pues lo coloque como dijiste, solo que agregue las variables del reader y la conexión en el evento del botón, pero el mismo resultado al darle clic a dicho botón, mi otro listbox sigue en blanco ... Aquí dejo el código por si me pudieran ayudar a resolver mi duda n_n... Gracias de nuevo...


Código ASP:
Ver original
  1. <%@ Import Namespace="System.Data" %>
  2.  
  3. <%@ Import Namespace="System.Data.SQLClient" %>
  4. <script language="vbscript" runat="server">
  5. Sub Page_Load(Sender As Object, E As EventArgs)
  6.         Dim reader As SqlDataReader
  7.         Dim values As ArrayList = New ArrayList()
  8.         Dim values2 As ArrayList = New ArrayList()
  9.         Dim conn As SqlConnection =
  10.          New SqlConnection("server=myhost;database=mydb;User ID=myuser;Password=mypass;Trusted_Connection=no")
  11.         Dim sql As String =
  12.          "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES GROUP BY TABLE_NAME"
  13.         Dim dr As New SqlCommand(sql, conn)
  14.         conn.Open()
  15.  reader = dr.ExecuteReader()
  16.         While reader.Read()
  17.             values.Add(reader.Item("TABLE_NAME").ToString())
  18.         End While
  19.         lb1.DataSource = values
  20.         lb1.DataBind()
  21.         reader.Close()
  22.     End Sub
  23.     Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
  24.         Dim reader As SqlDataReader
  25.         Dim values2 As ArrayList = New ArrayList()
  26.         Dim conn As SqlConnection =
  27.         New SqlConnection("server=myhost;database=mydb;User ID=myuser;Password=mypass;Trusted_Connection=no")
  28.         conn.Open()
  29.         DIM CADENA AS STRING = Convert.ToString(lb1.SELECTEDITEM)
  30.   Dim sql2 As String =
  31.          "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME =' & CADENA & ' GROUP BY COLUMN_NAME"
  32.         Dim dr2 As New SqlCommand(sql2, conn)
  33.                  
  34.         reader = dr2.ExecuteReader()
  35.         While reader.Read()
  36.             values2.Add(reader.Item("COLUMN_NAME").ToString())
  37.         End While
  38.        
  39.         lb2.DataSource = values2
  40.         lb2.DataBind()
  41.         reader.Close()
  42.         conn.Close()
  43.     End Sub
  44. </script>
  45. <html>
  46. <head>
  47. <title>Tablas y Columnas</title>
  48. </head>
  49. <body>
  50.     <asp:Label ID="Label1" runat="server" Text="RPE del Empleado"></asp:Label>
  51. <form id="Form1" method="post" runat="server" name="ListEnlaza">
  52. <asp:ListBox id="lb1" SelectionMode="Multiple" runat="server" Height="217px"
  53.     Width="196px"/>
  54.     <asp:ListBox id="lb2" SelectionMode="Multiple" runat="server" Height="147px"
  55.     Width="196px"/>
  56. <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
  57. <asp:Button ID="Button1" runat="server" Text="Button" />
  58. </form>
  59. </body>
  60. </html>
  #16 (permalink)  
Antiguo 14/10/2011, 14:42
Avatar de rikakashi  
Fecha de Ingreso: julio-2011
Mensajes: 226
Antigüedad: 13 años, 4 meses
Puntos: 33
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

estas realizando ambas funciones dentro del load de la pagina por eso aun siguen asi, debes de meter la segunda instruccion en el evento click del boton, es decir sera el boton quien realize la consulta del segundo list y no todo en el load ya que ahi la variable cadena no se llena porque apenas acabas de llenar un list y no se a seleccionado ningun elemento
__________________
la programación es tan grande como la imaginación (+.+)
  #17 (permalink)  
Antiguo 17/10/2011, 07:51
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

Ahm, como soy nuevo en asp.net, pues pensaba que el load de la página era lo que esta dentro del Sub Page_Load(Sender.... Y bueno pensé que al solo ponerlo fuera de la instrucción End Sub sería suficiente, disculpa la ignorancia pero si no es así donde podría poner el borón fuera del Load??...
  #18 (permalink)  
Antiguo 17/10/2011, 12:37
Avatar de rikakashi  
Fecha de Ingreso: julio-2011
Mensajes: 226
Antigüedad: 13 años, 4 meses
Puntos: 33
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

si estas usando visual studio o webdeveloper solo da doble click al boton y te abrira la seccion de codigo necesaria para colocar ahi el codigo
__________________
la programación es tan grande como la imaginación (+.+)
  #19 (permalink)  
Antiguo 18/10/2011, 07:58
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

Pues cuando le doy doble clic, solo me abre la parte del código donde se crea el botón, pero ningún evento...

Código ASP:
Ver original
  1. <asp:Button ID="Button1" runat="server" Text="Button" />

Uso Visual Studio 2010 por cierto...
  #20 (permalink)  
Antiguo 18/10/2011, 09:50
Avatar de rikakashi  
Fecha de Ingreso: julio-2011
Mensajes: 226
Antigüedad: 13 años, 4 meses
Puntos: 33
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

Código vb:
Ver original
  1. <asp:Button ID="Button1" runat="server" Text="Button"  OnClick="list2" />
  2.  
  3. sub list2 ByVal sender As Object, ByVal e As EventArgs)
  4.     'AQUI TU CODIGO DE LIST 2      
  5. End Sub
__________________
la programación es tan grande como la imaginación (+.+)
  #21 (permalink)  
Antiguo 18/10/2011, 11:18
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

rikakashi Muchas gracias por tanta ayuda y disculpa también por tantas molestias, desafortunadamente sigo con el mismo problema mi listbox1 esta con sus campos pero el 2 se rehúsa a aceptar los campos que le mando ... No se que pasa :s... Aquí dejó el código que puse... De nuevo muchísimas gracias:

Código ASP:
Ver original
  1. <%@ Import Namespace="System.Data" %>
  2.  
  3. <%@ Import Namespace="System.Data.SQLClient" %>
  4. <script language="vbscript" runat="server">
  5. Sub Page_Load(Sender As Object, E As EventArgs)
  6.         Dim reader As SqlDataReader
  7.         Dim values As ArrayList = New ArrayList()
  8.         Dim conn As SqlConnection =
  9.          New SqlConnection("server=myhost;database=mydb;User ID=myuser;Password=mypass;Trusted_Connection=no")
  10.         Dim sql As String =
  11.          "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES GROUP BY TABLE_NAME"
  12.         Dim dr As New SqlCommand(sql, conn)
  13.         conn.Open()
  14.  reader = dr.ExecuteReader()
  15.         While reader.Read()
  16.             values.Add(reader.Item("TABLE_NAME").ToString())
  17.         End While
  18.         lb1.DataSource = values
  19.         lb1.DataBind()
  20.         reader.Close()
  21.     End Sub
  22. </script>
  23. <html>
  24. <head>
  25. <title>Tablas y Columnas</title>
  26. </head>
  27. <body>
  28.     <asp:Label ID="Label1" runat="server" Text="RPE del Empleado"></asp:Label>
  29. <form id="Form1" method="post" runat="server" name="ListEnlaza">
  30. <asp:ListBox id="lb1" SelectionMode="Multiple" runat="server" Height="217px"
  31.     Width="196px"/>
  32.     <asp:ListBox id="lb2" SelectionMode="Multiple" runat="server" Height="147px"
  33.     Width="196px"/>
  34. <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
  35. <asp:Button ID="Button1" runat="server" Text="Button" OnClick="list2"/>
  36. <script language="vbscript" runat="server">
  37. sub list2 (ByVal sender As Object, ByVal e As EventArgs)
  38.        Dim reader As SqlDataReader
  39.         Dim values2 As ArrayList = New ArrayList()
  40.         Dim conn As SqlConnection =
  41.         New SqlConnection("server=myhost;database=mydb;User ID=myuser;Password=mypass;Trusted_Connection=no")
  42.         conn.Open()
  43.         DIM CADENA AS STRING = Convert.ToString(lb1.SELECTEDITEM)
  44.   Dim sql2 As String =
  45.          "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME =' & CADENA & ' GROUP BY COLUMN_NAME"
  46.         Dim dr2 As New SqlCommand(sql2, conn)
  47.                  
  48.         reader = dr2.ExecuteReader()
  49.         While reader.Read()
  50.             values2.Add(reader.Item("COLUMN_NAME").ToString())
  51.         End While
  52.        
  53.         lb2.DataSource = values2
  54.         lb2.DataBind()
  55.         reader.Close()
  56.         conn.Close()
  57. End Sub
  58. </script>
  59. </form>
  60. </body>
  61. </html>
  #22 (permalink)  
Antiguo 18/10/2011, 11:22
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 14 años, 4 meses
Puntos: 267
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

Hola stuart_david3, tengo una inquietud... coloca esto en tu load
Código vb:
Ver original
  1. <script language="vbscript" runat="server">
  2. Sub Page_Load(Sender As Object, E As EventArgs)
  3.  
  4. If Not Page.IsPostBack Then
  5. 'Todo tu codigo aqui..
  6. End If
  7.  
  8.  End Sub
  9. </script>
Y seleccionas tu listbox2 y veras que aparece una pestañita con una flecha, lo clickeas y habilitas el Enable AutoPostBack. Nos cuentas. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net

Última edición por Aquaventus; 18/10/2011 a las 11:30
  #23 (permalink)  
Antiguo 18/10/2011, 12:25
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

Gracias por tu respuesta Aquaventus, mira lo intente sin el botón así:

Código ASP:
Ver original
  1. <%@ Import Namespace="System.Data" %>
  2.  
  3. <%@ Import Namespace="System.Data.SQLClient" %>
  4. <script language="vbscript" runat="server">
  5. Sub Page_Load(Sender As Object, E As EventArgs)
  6. If Not Page.IsPostBack Then
  7.         Dim values As ArrayList = New ArrayList()  
  8.         Dim values2 As ArrayList = New ArrayList()
  9.         Dim conn As SqlConnection =
  10.         New SqlConnection("server=myhost;database=mydb;User ID=myuser;Password=mypass;Trusted_Connection=no")
  11.         Dim reader As SqlDataReader
  12.         Dim sql As String =
  13.          "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES GROUP BY TABLE_NAME"
  14.         Dim dr As New SqlCommand(sql, conn)
  15.         conn.Open()
  16.  reader = dr.ExecuteReader()
  17.         While reader.Read()
  18.             values.Add(reader.Item("TABLE_NAME").ToString())
  19.         End While
  20.         reader.Close()
  21.         DIM CADENA AS STRING = Convert.ToString(lb1.SELECTEDITEM)
  22.   Dim sql2 As String =
  23.          "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME =' & CADENA & ' GROUP BY COLUMN_NAME"
  24.         Dim dr2 As New SqlCommand(sql2, conn)
  25.                  
  26.         reader = dr2.ExecuteReader()
  27.         While reader.Read()
  28.             values2.Add(reader.Item("COLUMN_NAME").ToString())
  29.         End While
  30.         lb1.DataSource = values
  31.         lb1.DataBind()
  32.         lb2.DataSource = values2
  33.         lb2.DataBind()
  34.         reader.Close()
  35.         conn.Close()
  36.     End If
  37.     End Sub
  38. </script>
  39. <html>
  40. <head>
  41. <title>Tablas y Columnas</title>
  42. </head>
  43. <body>
  44.     <asp:Label ID="Label1" runat="server" Text="RPE del Empleado"></asp:Label>
  45. <form id="Form1" method="post" runat="server" name="ListEnlaza">
  46. <asp:ListBox id="lb1" SelectionMode="Multiple" runat="server" Height="217px"
  47.     Width="196px" AutoPostBack="True"/>
  48.     <asp:ListBox id="lb2" SelectionMode="Multiple" runat="server" Height="147px"
  49.     Width="196px" AutoPostBack="True"/>
  50. <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
  51. <asp:Button ID="Button1" runat="server" Text="Button" />
  52. </form>
  53. </body>
  54. </html>

Y cuando le daba clic al listbox2 me aparecía el dibujo del puntero del mouse cuando carga pero menos de un segundo y no me llenaba nada, intente habilitando el AutoPostBack para el list2, para el list1, para ambos y nada.... También lo intente con el botón, y nada:

Código ASP:
Ver original
  1. <%@ Import Namespace="System.Data" %>
  2.  
  3. <%@ Import Namespace="System.Data.SQLClient" %>
  4. <script language="vbscript" runat="server">
  5. Sub Page_Load(Sender As Object, E As EventArgs)
  6.         If Not Page.IsPostBack Then
  7.         Dim reader As SqlDataReader
  8.         Dim values As ArrayList = New ArrayList()
  9.         Dim conn As SqlConnection =
  10.          New SqlConnection("server=myhost;database=mydb;User ID=myuser;Password=mypass;Trusted_Connection=no")
  11.         Dim sql As String =
  12.          "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES GROUP BY TABLE_NAME"
  13.         Dim dr As New SqlCommand(sql, conn)
  14.         conn.Open()
  15.  reader = dr.ExecuteReader()
  16.         While reader.Read()
  17.             values.Add(reader.Item("TABLE_NAME").ToString())
  18.         End While
  19.         lb1.DataSource = values
  20.         lb1.DataBind()
  21.         reader.Close()
  22.         End If
  23.     End Sub
  24. </script>
  25. <html>
  26. <head>
  27. <title>Tablas y Columnas</title>
  28. </head>
  29. <body>
  30.     <asp:Label ID="Label1" runat="server" Text="RPE del Empleado"></asp:Label>
  31. <form id="Form1" method="post" runat="server" name="ListEnlaza">
  32. <asp:ListBox id="lb1" SelectionMode="Multiple" runat="server" Height="217px"
  33.     Width="196px" AutoPostBack="True"/>
  34.     <asp:ListBox id="lb2" SelectionMode="Multiple" runat="server" Height="147px"
  35.     Width="196px" AutoPostBack="True"/>
  36. <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
  37. <asp:Button ID="Button1" runat="server" Text="Button" OnClick="list2"/>
  38. <script language="vbscript" runat="server">
  39. sub list2 (ByVal sender As Object, ByVal e As EventArgs)
  40.        Dim reader As SqlDataReader
  41.         Dim values2 As ArrayList = New ArrayList()
  42.         Dim conn As SqlConnection =
  43.         New SqlConnection("server=myhost;database=mydb;User ID=myuser;Password=mypass;Trusted_Connection=no")
  44.         conn.Open()
  45.         DIM CADENA AS STRING = Convert.ToString(lb1.SELECTEDITEM)
  46.   Dim sql2 As String =
  47.          "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME =' & CADENA & ' GROUP BY COLUMN_NAME"
  48.         Dim dr2 As New SqlCommand(sql2, conn)
  49.                  
  50.         reader = dr2.ExecuteReader()
  51.         While reader.Read()
  52.             values2.Add(reader.Item("COLUMN_NAME").ToString())
  53.         End While
  54.        
  55.         lb2.DataSource = values2
  56.         lb2.DataBind()
  57.         reader.Close()
  58.         conn.Close()
  59. End Sub
  60. </script>
  61. </form>
  62. </body>
  63. </html>

De nuevo gracias!!!...
  #24 (permalink)  
Antiguo 18/10/2011, 14:37
Avatar de rikakashi  
Fecha de Ingreso: julio-2011
Mensajes: 226
Antigüedad: 13 años, 4 meses
Puntos: 33
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

sigues sin llenar la variable cadena cuando menos con un solo elemento seleccionado del primer list, ademas no la tienes correctamente llamada en el string de sql

Código vb:
Ver original
  1. "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME =' " & CADENA & " ' GROUP BY COLUMN_NAME"

las comillas al lado de cadena van dobles.

ahora bien hay que hacer una prueba simple

cambia la cadena anterior por una así

Código vb:
Ver original
  1. "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME =' nombredealgunacualquiera' GROUP BY COLUMN_NAME"
y veamos si asta aquí vamos bien después veremos lo de llenar la variable cadena
__________________
la programación es tan grande como la imaginación (+.+)
  #25 (permalink)  
Antiguo 21/10/2011, 08:03
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

Gracias rikakashi Pues intente con las comillas dobles y es el mismo resultado, al meterle como parámetro el nombre de alguna tabla si me genera las columnas de dicha tabla al darle clic al botón n_n, pero no si lo hago mediante el String "Cadena" ... Si no es como lo estoy haciendo al llenar la cadena entonces cómo?? Ahm, yo pensaba que el "SELECTEDITEM" hacía eso, bueno aunque no estoy del todo seguro :s... De nuevo gracias...

Última edición por stuart_david3; 21/10/2011 a las 08:18
  #26 (permalink)  
Antiguo 21/10/2011, 15:45
Avatar de rikakashi  
Fecha de Ingreso: julio-2011
Mensajes: 226
Antigüedad: 13 años, 4 meses
Puntos: 33
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

bueno teniendo ya ese punto entonces ahora vamos a crear la cadena segun el select item del list claro es con esta funcion que lo generaremos.
primero borraremos cualquier rastro de la variable cadena anterior, solo coloca el nombre de tu primer list y este codigo utilizalo en el evento del boton

Código vb:
Ver original
  1. Dim cadena As String = ""
  2.         For i As Integer = 0 To lst1.Items.Count - 1
  3.             If lst1.SelectedItem(i) = True Then
  4.                 If cadena = "" Then
  5.                     cadena = "TABLE_NAME='" & lst1.SelectedItem(i).ToString & "'"
  6.                 Else
  7.                     cadena = cadena + (" OR TABLE_NAME='" & lst1.SelectedItem(i).ToString & "'")
  8.                 End If
  9.             End If
  10.         Next
  11.         Dim sql2 As String = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE " & cadena & " GROUP BY COLUMN_NAME"
__________________
la programación es tan grande como la imaginación (+.+)
  #27 (permalink)  
Antiguo 27/10/2011, 08:13
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

Hola rikakashi, disculpa por tardar tanto en contestar... Pues intente con el código que me hiciste el favor de postear, pero pues me sale este error:

No se puede indizar la clase 'System.Web.UI.WebControls.ListItem' porque no tiene ninguna propiedad predeterminada.

En esta línea:

Código ASP:
Ver original
  1. If lb1.SelectedItem(i) = True Then

De nuevo gracias por tu ayuda =)... Este es el código completo:

Código ASP:
Ver original
  1. <%@ Import Namespace="System.Data" %>
  2.  
  3. <%@ Import Namespace="System.Data.SQLClient" %>
  4. <script language="vbscript" runat="server">
  5. Sub Page_Load(Sender As Object, E As EventArgs)
  6.         If Not Page.IsPostBack Then
  7.         Dim reader As SqlDataReader
  8.         Dim values As ArrayList = New ArrayList()
  9.         Dim conn As SqlConnection =
  10.          New SqlConnection("server=myhost;database=mydb;User ID=myuser;Password=mypass;Trusted_Connection=no")
  11.         Dim sql As String =
  12.          "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES GROUP BY TABLE_NAME"
  13.         Dim dr As New SqlCommand(sql, conn)
  14.         conn.Open()
  15.  reader = dr.ExecuteReader()
  16.         While reader.Read()
  17.             values.Add(reader.Item("TABLE_NAME").ToString())
  18.         End While
  19.         lb1.DataSource = values
  20.         lb1.DataBind()
  21.         reader.Close()
  22.         End If
  23.     End Sub
  24. </script>
  25. <html>
  26. <head>
  27. <title>Tablas y Columnas</title>
  28. </head>
  29. <body>
  30.     <asp:Label ID="Label1" runat="server" Text="RPE del Empleado"></asp:Label>
  31. <form id="Form1" method="post" runat="server" name="ListEnlaza">
  32. <asp:ListBox id="lb1" SelectionMode="Multiple" runat="server" Height="217px"
  33.     Width="196px"/>
  34.     <asp:ListBox id="lb2" SelectionMode="Multiple" runat="server" Height="147px"
  35.     Width="196px"/>
  36. <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
  37. <asp:Button ID="Button1" runat="server" Text="Button" OnClick="list2"/>
  38. <script language="vbscript" runat="server">
  39. sub list2 (ByVal sender As Object, ByVal e As EventArgs)
  40.        Dim conn As SqlConnection =
  41.          New SqlConnection("server=myhost;database=mydb;User ID=myuser;Password=mypass;Trusted_Connection=no")
  42.        Dim cadena As String = ""
  43.         For i As Integer = 0 To lb1.Items.Count - 1
  44.             If lb1.SelectedItem(i) = True Then
  45.                 If cadena = "" Then
  46.                     cadena = "TABLE_NAME='" & lb1.SelectedItem(i).ToString & "'"
  47.                 Else
  48.                     cadena = cadena + (" OR TABLE_NAME='" & lb1.SelectedItem(i).ToString & "'")
  49.                 End If
  50.             End If
  51.         Next
  52.  
  53.         Dim sql2 As String = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE " & cadena & " GROUP BY COLUMN_NAME"
  54. End Sub
  55. </script>
  56. </form>
  57. </body>
  58. </html>
  #28 (permalink)  
Antiguo 27/10/2011, 13:57
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

No se que roio con el poio pero, gracias a Dios ya funciono el programa, aquí les dejo el código...

Código ASP:
Ver original
  1. <%@ Import Namespace="System.Data" %>
  2.  
  3. <%@ Import Namespace="System.Data.SQLClient" %>
  4. <script language="vbscript" runat="server">
  5. Sub Page_Load(Sender As Object, E As EventArgs)
  6.         If Not Page.IsPostBack Then
  7.         Dim reader As SqlDataReader
  8.         Dim values As ArrayList = New ArrayList()
  9.         Dim conn As SqlConnection =
  10.          New SqlConnection("server=myhost;database=mydb;User ID=myuser;Password=mypass;Trusted_Connection=no")
  11.         Dim sql As String =
  12.          "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES GROUP BY TABLE_NAME"
  13.         Dim dr As New SqlCommand(sql, conn)
  14.         conn.Open()
  15.  reader = dr.ExecuteReader()
  16.         While reader.Read()
  17.             values.Add(reader.Item("TABLE_NAME").ToString())
  18.         End While
  19.         lb1.DataSource = values
  20.         lb1.DataBind()
  21.         reader.Close()
  22.         End If
  23.     End Sub
  24.  
  25.  
  26. Private Sub lb1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lb1.SelectedIndexChanged
  27.  
  28.        Dim reader As SqlDataReader
  29.         Dim values As ArrayList = New ArrayList()
  30.        Dim conn As SqlConnection =
  31.          New SqlConnection("server=myhost;database=mydb;User ID=myuser;Password=mypass;Trusted_Connection=no")
  32.        Dim cadena As String = lb1.SelectedItem.ToString()
  33.  
  34.  
  35.         Dim sql2 As String = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='" & cadena & "' GROUP BY COLUMN_NAME"
  36.         Dim dr As New SqlCommand(sql2, conn)
  37.         conn.Open()
  38.  reader = dr.ExecuteReader()
  39.         While reader.Read()
  40.             values.Add(reader.Item("COLUMN_NAME").ToString())
  41.         End While
  42.         lb2.DataSource = values
  43.         lb2.DataBind()
  44.         reader.Close()
  45. End Sub
  46. </script>
  47. <html>
  48. <head>
  49. <title>Tablas y Columnas</title>
  50. </head>
  51. <body>
  52.     <asp:Label ID="Label1" runat="server" Text="RPE del Empleado"></asp:Label>
  53. <form id="Form1" method="post" runat="server" name="ListEnlaza">
  54. <asp:ListBox id="lb1" SelectionMode="Multiple" runat="server" Height="217px"
  55.     Width="196px"/>
  56.     <asp:ListBox id="lb2" SelectionMode="Multiple" runat="server" Height="147px"
  57.     Width="196px"/>
  58. <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
  59. <asp:Button ID="Button1" runat="server" Text="Button"/>
  60.  
  61. </form>
  62. </body>
  63. </html>

En realidad no se cuando es que le estoy haciendo referencia al botón, pensé que tenía que llamarlo en el evento (Button1_SelectIndex....) y hago referencia al listbox, pero lo raro es que me genera mis columnas solo al seleccionar el elemento de la lista y darle clic al botón, y no solo al seleccionar el elemento de la lista... No se como es que escucha el evento del botón el listbox, pero bueno gracias a Dios ya funciona. Si alguien me pudiera decir cómo es que escucha al botón el listbox se lo agradecería mucho... Gracias a todos los que me ayudaron, enserio muchísimas gracias!!!...
  #29 (permalink)  
Antiguo 27/10/2011, 14:23
Avatar de stuart_david3  
Fecha de Ingreso: agosto-2011
Mensajes: 215
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

Ok, lo puse de esta manera y gracias a Dios si funcionó, haciendo referencia al botón ya funciona y es como rikakashi me dijo al principio solo que yo tenia mal mi "selectedindex" así queda el código ya funcionando...

Código ASP:
Ver original
  1. <%@ Import Namespace="System.Data" %>
  2.  
  3. <%@ Import Namespace="System.Data.SQLClient" %>
  4. <script language="vbscript" runat="server">
  5. Sub Page_Load(Sender As Object, E As EventArgs)
  6.         If Not Page.IsPostBack Then
  7.         Dim reader As SqlDataReader
  8.         Dim values As ArrayList = New ArrayList()
  9.         Dim conn As SqlConnection =
  10.          New SqlConnection("server=myhost;database=mydb;User ID=myuser;Password=mypass;Trusted_Connection=no")
  11.         Dim sql As String =
  12.          "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES GROUP BY TABLE_NAME"
  13.         Dim dr As New SqlCommand(sql, conn)
  14.         conn.Open()
  15.  reader = dr.ExecuteReader()
  16.         While reader.Read()
  17.             values.Add(reader.Item("TABLE_NAME").ToString())
  18.         End While
  19.         lb1.DataSource = values
  20.         lb1.DataBind()
  21.         reader.Close()
  22.         End If
  23.     End Sub
  24.  
  25.  
  26. Private Sub list2(ByVal sender As Object, ByVal e As System.EventArgs)
  27.  
  28.        Dim reader As SqlDataReader
  29.         Dim values As ArrayList = New ArrayList()
  30.        Dim conn As SqlConnection =
  31.          New SqlConnection("server=myhost;database=mydb;User ID=myuser;Password=mypass;Trusted_Connection=no")
  32.        Dim cadena As String = lb1.SelectedItem.ToString()
  33.  
  34.  
  35.         Dim sql2 As String = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='" & cadena & "' GROUP BY COLUMN_NAME"
  36.         Dim dr As New SqlCommand(sql2, conn)
  37.         conn.Open()
  38.  reader = dr.ExecuteReader()
  39.         While reader.Read()
  40.             values.Add(reader.Item("COLUMN_NAME").ToString())
  41.         End While
  42.         lb2.DataSource = values
  43.         lb2.DataBind()
  44.         reader.Close()
  45. End Sub
  46. </script>
  47. <html>
  48. <head>
  49. <title>Tablas y Columnas</title>
  50. </head>
  51. <body>
  52.     <asp:Label ID="Label1" runat="server" Text="RPE del Empleado"></asp:Label>
  53. <form id="Form1" method="post" runat="server" name="ListEnlaza">
  54. <asp:ListBox id="lb1" SelectionMode="Multiple" runat="server" Height="217px"
  55.     Width="196px"/>
  56.     <asp:ListBox id="lb2" SelectionMode="Multiple" runat="server" Height="147px"
  57.     Width="196px"/>
  58. <asp:Button ID="Button1" runat="server" Text="Sirve" OnCommand="list2"
  59.     Width="71px"/>
  60.  
  61. <asp:Button ID="Button2" runat="server" style="margin-left: 82px"
  62.     Text="No Sirve" />
  63.  
  64. </form>
  65. </body>
  66. </html>

Muchas gracias!!!...
  #30 (permalink)  
Antiguo 27/10/2011, 16:56
Avatar de rikakashi  
Fecha de Ingreso: julio-2011
Mensajes: 226
Antigüedad: 13 años, 4 meses
Puntos: 33
Respuesta: Generar listbox en base a otro listbox en una base de datos sql, asp.net

Código vb:
Ver original
  1. <asp:Button ID="Button1" runat="server" Text="Sirve" OnCommand="list2"
  2.     Width="71px"/>

Esta es la linea en la que llamas al metodo List2 al hacer click en tu boton, ahi es donde esta el proceso de llenanr el siguiente list, si lo quieres pasar directamene al seleccionar una tamla en la primera lista lo que debes hacer es utilizar el evento selectitemchancge del list1.

Y pues me alegro que al fin pudieses resolver el problema
__________________
la programación es tan grande como la imaginación (+.+)

Etiquetas: columnas, listbox, sql, sql2008, vs2010, aspx
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 12:33.