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

Tabla en memoria

Estas en el tema de Tabla en memoria en el foro de .NET en Foros del Web. Hola a todos, estoy realizando una aplicacion asp en VB .NET y tengo una duda, como puedo plantear lo siguiente en una tabla que tengo ...
  #1 (permalink)  
Antiguo 18/04/2005, 14:42
 
Fecha de Ingreso: febrero-2005
Mensajes: 36
Antigüedad: 19 años, 3 meses
Puntos: 0
Tabla en memoria

Hola a todos, estoy realizando una aplicacion asp en VB .NET y tengo una duda, como puedo plantear lo siguiente en una tabla que tengo en memoria
select sum(saldo), partida
from tabla
group by partida
ya que si lo quisiera realizar con un dataadapter, no cuento con una conexion ya que la tabla no se encuentra en el disco duro. Espero alguien em pueda ayudar. Por sus repuestas , gracias. Chao.
  #2 (permalink)  
Antiguo 18/04/2005, 15:14
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
A que te refieres con que tiene suna tabla en memoria..?


Cita:
ya que la tabla no se encuentra en el disco duro.
Tampoco entiendo eso..

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 18/04/2005, 15:19
 
Fecha de Ingreso: marzo-2005
Mensajes: 81
Antigüedad: 19 años, 1 mes
Puntos: 0
porque no utilizas un datareader en vez de dataset, y cierras el reader hasta que hayas leido tu tabla?.
  #4 (permalink)  
Antiguo 18/04/2005, 15:25
 
Fecha de Ingreso: febrero-2005
Mensajes: 36
Antigüedad: 19 años, 3 meses
Puntos: 0
Hola

Quiza no me di a entender mucho, me refiero a que es una tabla dinámica por que creo mis columnas mis campos en el form load, la lleno perfectamente con datos que da el usuario a través de un datagrid, la cargo en el dataset(cargo la tabla ds.tables.add("partida")).

Esta tabla contiene varios campos entre los que se esncuentra partida, saldo por ejm:

partida saldo
2101 10
2101 10
3101 20
3101 20

Ahora tengo que determinar el saldo de cada partida, es decir, para la 2101 es 20 y para la 3101 es 40.

Se que lo puedo realizar con lo siguiente select sum(saldo),partida from tabla group by partida. este select lo tendria que poner en una cadena para pasarsela a un dataadapter y despues realizarlo con un fill. Pero el problema es que para ocupar el dataadapter necesicto una conexion, la cual no tengo por que mi tabla solo se encuentra cargada en un dataset.

La pregunta es como podria realizar esta consulta?

Espero me haya dado a entender, gracias de antemano por tu respuesta.
  #5 (permalink)  
Antiguo 18/04/2005, 16:21
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Desde donde te estas trayendo los datos..?? o cual es tu estructura.. para que dependiendo de eso te pueda dar opciones.
  #6 (permalink)  
Antiguo 18/04/2005, 16:33
 
Fecha de Ingreso: febrero-2005
Mensajes: 36
Antigüedad: 19 años, 3 meses
Puntos: 0
Este es mi codigo

Mira este es el origen de mis datos como te comento utilizo una tabla dinámica, pero la verdad es que no se como realizar la consulta
Sub source()
'Response.Write(Session.Item("entroanuevo"))
'Response.Write("ENTROA AQUI")
Dim parpre As New DataColumn
Dim recurs As New DataColumn
Dim descri As New DataColumn
Dim unimed As New DataColumn
Dim cantid As New DataColumn
Dim fecreq As New DataColumn
Dim valrec As New DataColumn
parpre.ColumnName = "parpre"
parpre.DataType = System.Type.GetType("System.Int32")
parpre.AllowDBNull = True
parpre.AutoIncrement = False

recurs.ColumnName = "recurs"
recurs.DataType = System.Type.GetType("System.Int32")
recurs.AllowDBNull = True
recurs.AutoIncrement = False

descri.ColumnName = "descri"
descri.DataType = System.Type.GetType("System.String")
descri.AllowDBNull = True
descri.AutoIncrement = False

unimed.ColumnName = "unimed"
unimed.DataType = System.Type.GetType("System.String")
unimed.AllowDBNull = True
unimed.AutoIncrement = False

cantid.ColumnName = "cantid"
cantid.DataType = System.Type.GetType("System.Int32")
cantid.AllowDBNull = True
cantid.AutoIncrement = False

fecreq.ColumnName = "fecreq"
fecreq.DataType = System.Type.GetType("System.DateTime")
fecreq.AllowDBNull = True
fecreq.AutoIncrement = False

valrec.ColumnName = "valrec"
valrec.DataType = System.Type.GetType("System.Int32")
valrec.AllowDBNull = True
valrec.AutoIncrement = False
'*****AGREGANDO LOS CAMPOS A LAS TABLAS
Dim ad_dereapoyo As New DataTable("ad_dereapoyo")
Dim nuevafila As DataRow
ad_dereapoyo.Columns.Add(parpre)
ad_dereapoyo.Columns.Add(recurs)
ad_dereapoyo.Columns.Add(descri)
ad_dereapoyo.Columns.Add(unimed)
ad_dereapoyo.Columns.Add(cantid)
ad_dereapoyo.Columns.Add(fecreq)
ad_dereapoyo.Columns.Add(valrec)
'REALIZO LA CONEXION PARA SACAR TODOS LOS CAMPOS QUE COINCIDAN CON EL NUMERO DE REQUISICION DEL WEBFORM2
'If Session.Item("entroanuevo") = 1 Then
Dim fila As DataRow
Dim tabla As New DataTable
Dim strcomando As String
Dim adaptador As OleDb.OleDbDataAdapter
Dim usuario, usuario1, usuario2, usuario3, nombre, nombre1, nombre2, nombre3, nombre4 As String
Dim numfila As Long
Dim contfila As Integer
''REALIZANDO LA CONECCION PARA AD_DERE
Dim conexion As New OleDbConnection("provider=vfpoledb.1;data source=C:\Req_dpts\ad_dere.dbf;")
strcomando = "select * from ad_dere"
adaptador = New OleDb.OleDbDataAdapter(strcomando, conexion)
adaptador.Fill(ds, "ad_dere")
For Each fila In ds.Tables("ad_dere").Rows
contfila += 1 'Response.Write(fila.Item("clave"))
'Response.Write(contfila)
Next
Dim x, band As Integer
Dim nombrecon, ape_pat, ap_mat As String
band = 0
fila = ds.Tables("ad_dere").Rows(x)
For cont As Integer = 1 To contfila
fila = ds.Tables("ad_dere").Rows(x)
If Session.Item("aleatorio") = fila.Item("numreq") Then
'****AGREGANDO UNA FILA****
nuevafila = ad_dereapoyo.NewRow()
nuevafila("parpre") = fila.Item("parpre")
nuevafila("recurs") = fila.Item("recurs")
nuevafila("descri") = fila.Item("descri")
nuevafila("unimed") = fila.Item("unimed")
nuevafila("cantid") = fila.Item("cantid")
nuevafila("fecreq") = fila.Item("fecent")
nuevafila("valrec") = fila.Item("valrec")
ad_dereapoyo.Rows.Add(nuevafila)
Session.Add("data", ad_dereapoyo)
x += 1
Else
x += 1
End If
Next

'MOSTRANDO LA INFORMACIÓN EN EL DATAGRID
ds.Tables.Add(CType(Session.Item("data"), DataTable))
DataGrid1.DataSource = Session.Item("data")
DataGrid1.DataBind()
DataGrid1.Enabled = False
Button1.Enabled = False
Response.Write(Session.Item("entroanuevo"))

End Sub
  #7 (permalink)  
Antiguo 19/04/2005, 05:49
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
podrías hacerlo utilizando un arraylist en el que vas introduciendo las partidas y una variable suma, es decir
1- recorres tu tabla
2- si partida no esta en el arraylist
->si el arraylist.count<>0
->muestras el anterior
->agregas partida al arraylist
->pones suma = saldo;
3- si partida si esta en el arraylist
-> suma+= saldo;


no se si me he explicado con claridad, espero que si, si no ya sabes, por aqui estamos
  #8 (permalink)  
Antiguo 20/04/2005, 02:04
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
dim arrpartidas as arraylist = new arrylist
dim arrsumas as arrylist = new arrylist
dim suma as integer = 0
for each filapartida in ctype(session.Item("partida"),datatable).rows
if arrpartidas.contains(filapartida("partida"))
suma+=filapartida("cantidad") 'Puesto que existe vamos sumando
else
if arrpartidas.count <>0
arrsumas.Add(filapartida("suma")) 'Si es el primero, todavía no metemos suma
end if
arrpartidas.Add(filapartida("partida"))
suma = 0
end if
next
'El último todavía no tiene asignada suma, entonces le asignamos:
arrsumas.add(suma)
suma= nothing

dim i as integer = 0
while i < arrpartidas.Count
response.write(arrpartidas(i).toString + "-" arrsumas(i).tostring + "<br>"

i+=1
end while

Espero que te sirva este ejemplo
  #9 (permalink)  
Antiguo 20/04/2005, 08:14
 
Fecha de Ingreso: febrero-2005
Mensajes: 36
Antigüedad: 19 años, 3 meses
Puntos: 0
Holas

Muchisimas gracias, ya lo implante y todo salio de maravilla , bueno pues nos seguimos escribiendo.Hasta luego
  #10 (permalink)  
Antiguo 20/04/2005, 08:54
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
No hay de que hombre, espero haberte ayudado, suerte, y para lo que necesites por aquí andamos
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 13:54.