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

Dudas con DataSet

Estas en el tema de Dudas con DataSet en el foro de .NET en Foros del Web. Hola, Estoy pasándome de ASP a ASP.NET y me encuentro con varios problemas. El primero es que sé que los Recordset dejan de existir y ...
  #1 (permalink)  
Antiguo 01/03/2005, 07:37
Avatar de koaxial  
Fecha de Ingreso: agosto-2001
Mensajes: 119
Antigüedad: 22 años, 8 meses
Puntos: 0
Dudas con DataSet

Hola,

Estoy pasándome de ASP a ASP.NET y me encuentro con varios problemas.

El primero es que sé que los Recordset dejan de existir y ahora son DataSets.

- Mi primera duda es cómo puedo "preguntar" por el fin del fichero, pues antes con mi recordset hacía un if RS.EOF then, pero por lo visto ahora la propiedad EOF no existe. ¿Cómo lo hago?

-Mi segunda duda es cómo puedo recorrer los registros de una tabla y si puedo hacerlo de igual manera a como lo hacía antes. Supongo que no pues creo que tampoco existen el método MoveNext.


Gracias de antemano.
  #2 (permalink)  
Antiguo 01/03/2005, 07:45
Avatar de neivan  
Fecha de Ingreso: febrero-2005
Mensajes: 539
Antigüedad: 19 años, 3 meses
Puntos: 1
ds.tables("tabla").rows.count - 1
count te devuelve el numero de filas
- 1 por q luego iras 0 a num de filas - 1

muy sencillo

for i=o to ds.tables("tabla").count - 1
response.wirte(ds.tables("tabla").rows(i).item("co lumna")
next

No digas nunca q no se puede hacer

Ademas piensa q todo lo q puedes hacer en asp lo podras hacer en .net
  #3 (permalink)  
Antiguo 01/03/2005, 13:01
Avatar de koaxial  
Fecha de Ingreso: agosto-2001
Mensajes: 119
Antigüedad: 22 años, 8 meses
Puntos: 0
Otro problema

En cuanto a lo primero (Conocer el fin del fichero ) parece que funciona correctamente.

El problema está ahora de recorrer la tabla. He utilizado el código:

for i=o to ds.tables("tabla").count - 1
response.wirte(ds.tables("tabla").rows(i).item("co lumna")
next


La cuestión es que me aparece un mensaje de error:
System.IndexOutOfRangeException: No hay ninguna fila en la posición 0.

Se trata de una base de datos Access con una tabla y un solo registro del que quiero tomar los datos. Es curioso, porque la conexión parece realizarla correctamente, pero al contar el número de filas con numfilas=ds.tables("tabla").rows.count me devuelve cero. ¿Cómo es posible?
  #4 (permalink)  
Antiguo 02/03/2005, 03:33
Avatar de neivan  
Fecha de Ingreso: febrero-2005
Mensajes: 539
Antigüedad: 19 años, 3 meses
Puntos: 1
Si te devuelve 0 es q no hay ninguna fila

Has asigano correctamente la tabla a travesd el dataadapter al dataset???

Ejemplo de tablas metidas en un dataset

function dataset() as DataSet

dim cn as System.Data.SqlClient.SqlConnection
cn=conexion() 'Esta es una funcion q me devuleve la conexion
cn.open()
Dim adap1 as System.Data.SqlClient.SqldataAdapter
Dim adap2 as System.Data.SqlClient.SqldataAdapter
Dim adap3 as System.Data.SqlClient.SqldataAdapter
Dim ds as System.Data.DataSet
adap1=new System.Data.SqlClient.SqlDataAdapter("Select * from FESTIVOS",cn)
adap2=new System.Data.SqlClient.SqlDataAdapter("Select * from CURSOS_PLANIFICADOS",cn)
adap3=new System.Data.SqlClient.SqlDataAdapter("Select * from cursos order by Denominacion",cn)
ds=new System.Data.DataSet()
adap1.Fill(ds,"TFESTIVOS")
adap2.Fill(ds,"TCURSOSP")
adap3.Fill(ds,"TCURSOS")
cn.close()
return ds

end function

Este ds tendra metidas tres tablas alas q podre acceder
Mi conexion es con sqlserver => otra tipo de conexion y tal pero la idea es la misma
Si hago un ds.tables("TCURSOS").rows.count me devuleve 45
Si hago ds.tables("TCURSOS"P).rows.count me devuleve 14
....
  #5 (permalink)  
Antiguo 02/03/2005, 13:17
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Cita:
Iniciado por koaxial
Se trata de una base de datos Access con una tabla y un solo registro del que quiero tomar los datos. Es curioso, porque la conexión parece realizarla correctamente, pero al contar el número de filas con numfilas=ds.tables("tabla").rows.count me devuelve cero. ¿Cómo es posible?
En primer lugar, si sólo tiene un sólo dato no tiene sentido utilizar un DataSet, hazlo con un DataReader (no están incluidas las sentencias Try/Catch para simplicificar el ejemplo):
Código:
Dim conexion as new OleDbConnection('tu cadena de conexión')
Dim com as new OleDbCommand('tu sentencia SQL', conexion)
conexion.Open()
Dim dr as OleDbDataReader =  com.ExecuteReader() 
' Si tienes más datos puedes hacerlo con un While
If (dr.Read()) Then
  ' Recuperas los datos con dr("nombre_campo_bd") o cualquiera de los 
  ' métodos del DataReader
End If
dr.Close()
conexion.Close()
Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
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 23:32.