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

Problema

Estas en el tema de Problema en el foro de .NET en Foros del Web. Hola, Yo lo que quiero hacer es insertar en un grid, los trabajadores y los dias del mes, una cosa asi: [B]Trabajadores|02/08/2004|03/082004|04/08/2004.... Pepito |8 |3 ...
  #1 (permalink)  
Antiguo 26/08/2004, 03:21
 
Fecha de Ingreso: enero-2004
Mensajes: 75
Antigüedad: 20 años, 3 meses
Puntos: 0
Busqueda Problema

Hola,

Yo lo que quiero hacer es insertar en un grid, los trabajadores y los dias del mes, una cosa asi:

[B]Trabajadores|02/08/2004|03/082004|04/08/2004....
Pepito |8 |3 |9
Juan |9 |7 |10
...
[/B]

O sea, los Trabajadores en una columna, i debajo los dias del mes, las horas trabajadas por cada trabajador.

Aqui esta el codigo de la funcion:

Private Function Horas(ByVal oComan 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 DS As DataSet
Dim sHoras As String
Dim DSResultado As DataSet
Dim dColumnas As DataColumn
Dim dFilas As DataRow
Dim dFilas1 As DataRow
Dim Fechas As String
Dim j As Integer
Dim iDiasMes As Integer
Dim iData As Integer
Dim dFormatNormal As Date
Dim DataSet As DataSet
Dim i As Integer = 0
Dim sTrabajadores As String

sCadena = "Provider=Microsoft.jet.oledb.4.0;Data source=" & "c:\Horario.mdb"
pConexionOledb = New OleDbConnection
pConexionOledb.ConnectionString = sCadena

'creamos el dataset y la tabla
DSResultado = New DataSet
DSResultado.Tables.Add()
dColumnas = DSResultado.Tables(0).Columns.Add("Trabajador")
'dColumnas = DSResultado.Tables(0).Columns.Add()
DataSet = Conexion.Seleccion("Select Trabajador from Informacion Order By Codigo")

'insertar columnas de dias
'calcular el numero de dias que tiene el mes, y poner los dias en columnas
iDiasMes = Me.DiasDelMes(Now.Month)
For j = 1 To iDiasMes
iData = Now.Year * 10000 + (Now.Month) * 100 + j
dFormatNormal = Japo2DateTime(iData)
If dFormatNormal.DayOfWeek <> DayOfWeek.Saturday And _
dFormatNormal.DayOfWeek <> DayOfWeek.Sunday Then
Fechas = Format("dd/mm/yyyy", dFormatNormal)
DSResultado.Tables(0).Columns.Add(Fechas)
End If
Next

'Insertar trabajadores
For i = 0 To DataSet.Tables(0).Rows.Count - 1
dFilas = DSResultado.Tables(0).NewRow
sTrabajadores = DataSet.Tables(0).Rows(i).Item(0)
dFilas.Item("Trabajador") = sTrabajadores
Dim DSTrabajadores As DataSet
Dim sTrabaj As String
'con esta sentencia cojeremos el codigo del trabajador correspondiente
DSTrabajadores = Conexion.Seleccion("Select Codigo from Informacion Where Trabajador='" & sTrabajadores & "'")
sTrabaj = DSTrabajadores.Tables(0).Rows(0).Item(0)
For j = 1 To iDiasMes
Dim sDias As String
iData = Now.Year * 10000 + (Now.Month) * 100 + j
dFormatNormal = Japo2DateTime(iData)
If dFormatNormal.DayOfWeek <> DayOfWeek.Saturday And _
dFormatNormal.DayOfWeek <> DayOfWeek.Sunday Then
sDias = Format("dd/mm/yyyy", dFormatNormal)
'con esta sentencia seleccionamos las horas trabajadas del trabajador q toque, de un dia en concreto
DS = Conexion.Seleccion("Select Horas from Presencia where Codigo ='" & sTrabaj & "' and Fecha = '" & sDias & "'")
'este primer if, sirve por si alguien ese dia no ha fichado, q se lo salte
If i > DS.Tables(0).Rows.Count Or j > DS.Tables(0).Rows.Count Then
Else
sHoras = DS.Tables(0).Rows(i).Item(0)
dFilas.Item(sDias) = sHoras
End If
End If
DSResultado.Tables(0).Rows.Add(dFilas) 'error
Next
Next

'crear comandbuilder
oCB = New OleDbCommandBuilder(oDataAdapter)

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

me da error en "DSResultado.Tables(0).Rows.Add(dFilas)" y me dice "Esta fila ya pertenece a esta tabla"

Si alguien me pudiera decir como lo puedo arreglar
__________________
Gracias y un saludo
  #2 (permalink)  
Antiguo 26/08/2004, 06:50
 
Fecha de Ingreso: abril-2004
Mensajes: 27
Antigüedad: 20 años
Puntos: 0
Hola, a ver si te sirve de ayuda.

Cuando haces el NewRow estas metiendo ya una fila en el dataset y haciendo que dFilas apunte a esa nueva fila, que en un principio no tiene dato alguno.
Lo que tendrias que hacer entonces es modificar la fila.
Con lo que antes de escribir en los campos de la fila deberias poner:
dFilas.BeginEdit()

Luego en lugar de hacer:
DSResultado.Tables(0).Rows.Add(dFilas)

Pondrias:
dFilas.EndEdit()
DSResultado.AcceptChanges() 'Para aceptar los cambios (no se si es necesario)


Creo que con esto solucionarias el error que te da.
Que haya suerte
__________________
nos vemos
  #3 (permalink)  
Antiguo 26/08/2004, 08:29
 
Fecha de Ingreso: enero-2004
Mensajes: 75
Antigüedad: 20 años, 3 meses
Puntos: 0
creo q es cosa del, If i > DS.Tables(0).Rows.Count or j > DS.Tables(0).Rows.Count, pq he condeguido q me ponga el primer trabajador, pero los otros, me los deja en blanco.
__________________
Gracias y un saludo
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 01:31.