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

Duda con datagrid

Estas en el tema de Duda con datagrid en el foro de .NET en Foros del Web. Tengo un problema y es el siguiente. Quiero que en un datagrid me salga en la fila una serie de nombres y en las columnas, ...
  #1 (permalink)  
Antiguo 05/08/2004, 04:03
 
Fecha de Ingreso: enero-2004
Mensajes: 75
Antigüedad: 20 años, 4 meses
Puntos: 0
Duda con datagrid

Tengo un problema y es el siguiente.

Quiero que en un datagrid me salga en la fila una serie de nombres y en las columnas, los dias del mes.

Una cosa asi:

Trabajador | 02/08/2004 | 03/08/2004 | 04/08/2004 .......
Pedro
Maria
...

este es el codigo que utilizo:

Private Function actualiza(ByVal oComando As DataSet) As DataSet
Dim pConexionOledb As OleDbConnection
Dim sCadena As String
Dim pPoner As OleDbCommand
Dim oDataAdapter As OleDbDataAdapter
Dim oCB As OleDbCommandBuilder
Dim oDataSet As DataSet
Dim agrega As DataSet
Dim Seleccion As String
Dim oDS As DataSet
Dim iDiasMes As Integer
Dim iData As Integer
Dim i As Integer = 1
Dim dFormatNormal As Date
Dim Fechas As String

oDS = New DataSet 'creamos el dataset
oDS.Tables.Add("Exportar")
' 1. Calcular el número de días que tiene el mes
iDiasMes = Me.DiasDelMes(Now.Month)
For i = 1 To iDiasMes
iData = Now.Year * 10000 + (Now.Month) * 100 + i
dFormatNormal = Japo2DateTime(iData)
If dFormatNormal.DayOfWeek <> DayOfWeek.Saturday And _
dFormatNormal.DayOfWeek <> DayOfWeek.Sunday Then
Fechas = Format("dd/mm/yyyy", dFormatNormal)
oDS.Tables(0).Columns.Add(Fechas)
Seleccion = "SELECT * from Exportar"
End If
Next
sCadena = "Provider=Microsoft.jet.oledb.4.0;Data source=" & "c:\Horario.mdb"
pConexionOledb = New OleDbConnection
pConexionOledb.ConnectionString = sCadena

'ponemos las filas
Dim pRow As DataRow
Dim j As Integer
oDS = Conexion.Seleccion("Select Trabajador from Informacion order by Codigo")
For j = 0 To oDS.Tables(0).Rows.Count - 1
pRow = oDS.Tables(0).NewRow
oDS.Tables(0).Rows.Add(pRow)
Next

'crear adaptador
oDataAdapter = New OleDbDataAdapter(Seleccion, pConexionOledb)

'contamos el numero de columnas, ha de devolver las mismas columnas que dias del mes
Dim iColumnas As Integer
iColumnas = oDS.Tables(0).Columns.Count
iColumnas = oDS.Tables(0).Rows.Count

'crear comandbuilder
oCB = New OleDbCommandBuilder(oDataAdapter)

'asignar dataset al datagrid
Me.UltraGrid1.DataSource = oDS
Me.UltraGrid1.DataBind()
Return oDS
End Function

Con esto lo unico que me sale son las filas de los nombre, pero si hago algunos cambios, me sale los dias del mes, pero todo junto no me ha salido, supongo que faltará algo, pero no se lo que es. Si alguién me pudiera ayudar...
__________________
Gracias y un saludo
  #2 (permalink)  
Antiguo 05/08/2004, 09:17
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
Hola... te hice un pequeño ejemplo usando un boton y un datagrid... solo haz copy and paste para que veas como funciona (obviamente cambias tu conectionstring y tu query) creo que ésto es lo que buscas.

Cita:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim dt As New DataTable
Dim dr As DataRow
Dim cols As Int16
Dim iTotal As Integer

'Aqui llenas la primera columna que traes desde tu BD
Dim oConn As New SqlConnection(ConfigurationSettings.AppSettings("c onnectionString"))
Dim cmd As New SqlCommand("Select top 5 * from Customer", oConn)
oConn.Open()

Dim SQLdr As SqlDataReader = cmd.ExecuteReader

Dim dc As New DataColumn("Usuario", GetType(String))
dt.Columns.Add(dc)
Do While SQLdr.Read
dr = dt.NewRow
dt.Rows.Add(dr)
dr.Item(0) = SQLdr("Company")
iTotal += 1 'Cuento el total de registros
Loop

SQLdr.Close()
oConn.Close()

'Creo las columnas para las fechas
'Leo el mes actual para colocar el total de días
Dim iDays As Integer = Now.DaysInMonth(Now.Year, Now.Month)
For cols = 1 To iDays
dc = New DataColumn("Día " & cols, GetType(String))
dt.Columns.Add(dc)
Next

'Obtengo el día actual
'Le resto 1 para que en mi funcion empiece
'con el primer día del mes
Dim iFirstDay As Integer = Now.Day - 1
For i As Integer = 1 To iDays

For Each dr In dt.Rows

dr.Item(i) = ReturnDate(iFirstDay)

Next
iFirstDay -= 1
Next

DataGrid1.DataSource = dt
DataGrid1.DataBind()

End Sub

Private Function ReturnDate(ByVal index As Integer) As String

Return Now.AddDays(-index).ToString("dd/MM/yyyy")

End Function

Con éste code lo que hace es colocar en la primera columna los datos que te traes de tu BD y en las siguientes columnas coloca la fecha..desde el día primero hasta el último día del mes actual.

Espero que te sirva.

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

Exentrit - Soluciones SharePoint & Net
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 02:09.