Foros del Web » Programando para Internet » ASPX (.net) »

Pasar resultado de una columna a variables

Estas en el tema de Pasar resultado de una columna a variables en el foro de ASPX (.net) en Foros del Web. Si este SELECT Código: SELECT TECNICO, COUNT(TECNICO) AS Cantidad FROM PRINCIPAL GROUP BY TECNICO me devuelve esto TECNICO Cantidad Pepefel 4 JoseMar 6 Ronaldo 3 ...
  #1 (permalink)  
Antiguo 03/07/2009, 05:09
 
Fecha de Ingreso: septiembre-2006
Ubicación: Buenos Aires
Mensajes: 132
Antigüedad: 17 años, 7 meses
Puntos: 0
Pasar resultado de una columna a variables

Si este SELECT

Código:
SELECT     TECNICO, COUNT(TECNICO) AS Cantidad
FROM         PRINCIPAL
GROUP BY TECNICO
me devuelve esto

TECNICO Cantidad
Pepefel 4
JoseMar 6
Ronaldo 3
Marcelo 1


¿Como hago para guardar en cuatro variables diferentes el resultado de cada valor de la columna Cantidad?

O sea

Var1 = "4"
Var2 = "6"
Var3 = "3"
Var4 = "1"
  #2 (permalink)  
Antiguo 03/07/2009, 13:30
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 9 meses
Puntos: 15
Respuesta: Pasar resultado de una columna a variables

Como los valores devuelto por la consulta son dinámicos y nunca vienen una cantidad fija entonces puedes usar ArrayList ó List<>

Si usas Visual Studio 2005 puedes usar ArrayList, el asunto aquí es que en mi caso yo lo que haría es un Dictionary ó HashTable que me guarde como key el TECNICO y Value la cantidad, así siempre tendré acceso a todo eso.

Si usas Visual Studio 2008 yo me crearía una clase TECNICO con 2 propiedades: Nombre y Cantidad, y las tengo en un List<Tecnico> cuando necesito algo especifico le tiro LINQ y traigo solo el objeto que quiero usar.

Todo depende a lo que estes haciendo, quizas profundices más porque si nos dices que haces posible te damos otras ideas de como desarrollarlo porque quizas buscas la vía que no es la adecuada y gracias a eso estas estancado buscando una solución no posible.

Saludos,
  #3 (permalink)  
Antiguo 03/07/2009, 13:59
Avatar de dargorsv  
Fecha de Ingreso: julio-2009
Mensajes: 25
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Pasar resultado de una columna a variables

tengo un codigo por aqui utilizando arraylist como te sugerian anteriormente ojala te sirva. Es una clase llamada Usuarios.

Código:
Imports System.Data.OleDb

Public Class Usuarios
    Public codUsuario As String
    Public nombre As String
    Public apellido As String
    Public servicio As String
    Public precio As String
    Public descripcion As String

    Private conexionConBD As OleDbConnection
    Private orden As OleDbCommand
    Private lector As OleDbDataReader
    Public strConexion As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                    "Data Source=H:\BaseDeDatosLaboratorio\basededatos.mdb;"

 Public Function getTodosLosUsuarios() As ArrayList

        Dim lista As ArrayList
        lista = New ArrayList

        conexionConBD = New OleDbConnection(strConexion)
        conexionConBD.Open()

        Dim consulta As String = "select  codigo, nombre, apellido, servicio, precio, descripcion  from tblservicios order by codigo asc"
        orden = New OleDbCommand(consulta, conexionConBD)

        lector = orden.ExecuteReader()

        While lector.Read
            Dim a As New Usuarios
            a.codUsuario = lector.GetInt32(0).ToString
            a.nombre = lector.GetString(1)
            a.apellido = lector.GetString(2)
            a.servicio = lector.GetString(3)
            a.precio = lector.GetString(4)
            a.descripcion = lector.GetString(5)
            lista.Add(a)
        End While
        lector.Close()
        conexionConBD.Close()
        Return lista
     End Function
End Class
  #4 (permalink)  
Antiguo 05/07/2009, 21:02
 
Fecha de Ingreso: septiembre-2006
Ubicación: Buenos Aires
Mensajes: 132
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Pasar resultado de una columna a variables

Gracias Gragorsv pero no me sirvio... en tu ejemplo me mostras como ir leyendo el valor de cada columna por columna. Yo en realidad tengo dos columnas y necesito ir leyendo fila por fila.
Las filas son estaticas, no se van a agregar ni a quitar ninguna.

Si alguien me puede ayudar
GRACIAS!!
Ojo: soy novato
  #5 (permalink)  
Antiguo 05/07/2009, 22:15
Avatar de dargorsv  
Fecha de Ingreso: julio-2009
Mensajes: 25
Antigüedad: 14 años, 10 meses
Puntos: 2
Información Respuesta: Pasar resultado de una columna a variables

pues no se si lo probaste, pero justamente ese es el objetivo ir leyendo cada fila que hay en la base de datos, la condicion "while lector.read" traducido seria como: leer hasta que ya no hayan filas. La unica diferencia que de los tantos campos que yo leo, tu solo leerias uno que es la cuenta de las cantidades, y al final todo lo va guardando en un array para despues llamarlo desde donde necesites mostrar los datos.
  #6 (permalink)  
Antiguo 07/07/2009, 08:02
 
Fecha de Ingreso: septiembre-2006
Ubicación: Buenos Aires
Mensajes: 132
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Pasar resultado de una columna a variables

Gracias chicos!!
Me dieron una idea de como hacerlo y buscando buscando en internet logre armar una funcion asi:

Public Function getTodo(ByVal strConexion As String) As ArrayList

Dim lista = New ArrayList
Dim arr(1) As String
Dim db = New ADODB.Connection
db.Open(strConexion)

Dim rs = New Recordset

rs.Open("SELECT Grupo, Total FROM dbo.BHInv_Treev_ALL", db)

rs.MoveFirst()
While Not rs.EOF

arr(0) = rs("Grupo").Value
arr(1) = rs("Total").Value

lista.Add(arr)

rs.MoveNext()

End While

rs.Close()
db.Close()

Return lista
End Function



Pero el problema es que me pisa el valor anterior. QUe estoy diciendo?
Si mi tabla es:
TECNICO Cantidad
Pepefel 4
JoseMar 6
Ronaldo 3
Marcelo 1

Y cuando ejecuto la funcion haciendo por ej, lista = getTodo(str)
Lo guardado en la matriz es:
Marcelo 1
Marcelo 1
Marcelo 1
Marcelo 1

Es como que los valores que va leyendo pisan a todos los anteriores


En que me estoy equivocando?
  #7 (permalink)  
Antiguo 07/07/2009, 08:30
Avatar de mdavila  
Fecha de Ingreso: julio-2007
Ubicación: Montevideo (Uruguay)
Mensajes: 919
Antigüedad: 16 años, 9 meses
Puntos: 13
Respuesta: Pasar resultado de una columna a variables

german eso que estas usando es viejo.....

Usa lo que te paso dargorsv.
__________________
Marcelo Davila.

:. En Ignorante te conviertes al no preguntar, el que pregunta se nutre... :.
  #8 (permalink)  
Antiguo 07/07/2009, 08:47
 
Fecha de Ingreso: septiembre-2006
Ubicación: Buenos Aires
Mensajes: 132
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Pasar resultado de una columna a variables

Entonces seguiré tu consejo...
ahora disculpa mi gran ignorancia pero estoy tratando de entender como levantar los datos del Arraylist "lista"
  #9 (permalink)  
Antiguo 07/07/2009, 09:48
Avatar de dargorsv  
Fecha de Ingreso: julio-2009
Mensajes: 25
Antigüedad: 14 años, 10 meses
Puntos: 2
Mensaje Respuesta: Pasar resultado de una columna a variables

En mi caso de uso, en mi formulario tengo un boton que desencadena la accion, y los datos los pongo en un listbox, ahi depende el control que tu quieras utilizar para mostrar tus datos.
Código:
Private Sub btMostrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btMostrar.Click
        Dim p As New Usuarios
        Dim listaUsuarios As ArrayList
        listaUsuarios = p.getTodosLosUsuarios

        Dim UsuarioEnLaLista As Usuarios
        ListBox1.Items.Clear()

        For Each UsuarioEnLaLista In listaUsuarios
            ListBox1.Items.Add(UsuarioEnLaLista.codUsuario & " - " & UsuarioEnLaLista.nombre & " " & UsuarioEnLaLista.apellido & " - " & UsuarioEnLaLista.servicio)
        Next
    End Sub
  #10 (permalink)  
Antiguo 07/07/2009, 11:17
 
Fecha de Ingreso: septiembre-2006
Ubicación: Buenos Aires
Mensajes: 132
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Pasar resultado de una columna a variables

Gracias amigos, ya tengo un poco mas claras las cosas, jamas habia usado arraylist
mi ultima inquietud para cerrar el tema y no molestarlos mas es

¿como podria reemplazar el For Each

For Each UsuarioEnLaLista In listaUsuarios
ListBox1.Items.Add(UsuarioEnLaLista.codUsuario)
Next


para que en vez de dejarmelos datos en un un ListBox me los deje en variables?
var1="datotal"
var2="datoblabla"
etc
  #11 (permalink)  
Antiguo 07/07/2009, 11:41
Avatar de pyroCL  
Fecha de Ingreso: marzo-2009
Ubicación: C#
Mensajes: 261
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Pasar resultado de una columna a variables

Vé este código...

Clase Servicio...

Código VB.Net:
Ver original
  1. Public Class Servicio
  2.     Dim nombre As String
  3.     Dim horaInicio As String
  4.     Dim horaFin As String
  5.     Public Sub constructor(ByVal n As String, ByVal i As String, ByVal f As String)
  6.         nombre = n
  7.         horaInicio = i
  8.         horaFin = f
  9.     End Sub
  10.     Public Function getIni() As String
  11.         getIni = horaInicio
  12.     End Function
  13.     Public Function getfin() As String
  14.         getfin = horaFin
  15.     End Function
  16.     Public Function getNombre() As String
  17.         getNombre = nombre
  18.     End Function
  19. End Class


Ahora, desde la BD rescato todos los valores que estén en la tabla HA_SERVICES_H, los cuales son nombre, hora inicio y hora fin...
Cada uno de estos los guardo en una lista (en vez de listas pordrías usar variables string o cosas así, pero al hacer eso sólo tienes que tener un valor por variable), es decir debes dar una condición al SELECT, que puede ser WHERE Nombre='"nombre1"'


Código vb.net:
Ver original
  1. Dim servicio As New Servicio
  2.         SQL = "select * from HA_SERVICES_H order by INICIO"
  3.         'en el metodo conectar está el string de conexion a la base de datos
  4.         Comando.Connection = conectar()
  5.         Comando.CommandText = SQL
  6.         Dim lista As New Collection
  7.         Dim lista2 As New Collection
  8.         Dim lista3 As New Collection
  9.         rs = Comando.ExecuteReader()
  10.         While rs.Read
  11.             servicio.constructor(rs("SERVICIO"), rs("INICIO"), rs("FIN"))
  12.             lista.Add(servicio.getNombre)
  13.             lista2.Add(servicio.getIni)
  14.             lista3.Add(servicio.getfin)
  15.         End While
  16.         Comando.Connection.Close()



Espero te sirva.
Saludos.
__________________
La verdadera sabiduría está en reconocer la propia ignorancia.
  #12 (permalink)  
Antiguo 07/07/2009, 11:46
Avatar de pyroCL  
Fecha de Ingreso: marzo-2009
Ubicación: C#
Mensajes: 261
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Pasar resultado de una columna a variables

Si no quieres trabajar con clases puede hacer lo siguiente en el while...

Creas las variables necesarias...

Dim nombre As String
Dim inicio As String
Dim fin As Stirng

Código vb.net:
Ver original
  1. While rs.Read
  2.           nombre = rs("SERVICIO")
  3.           inicio = rs("INICIO")
  4.           fin = rs("FIN")
  5. End While
las variables usadas en el post anterior son

Código vb.net:
Ver original
  1. Dim Comando As New SqlCommand
  2. Dim rs As SqlDataReader
  3. Dim SQL As String

Saludos.-
__________________
La verdadera sabiduría está en reconocer la propia ignorancia.
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 06:24.