Access - Duda Interesante...

 
Vista:

Duda Interesante...

Publicado por David (18 intervenciones) el 12/03/2007 22:11:28
Amigos:
Tengo una campo para agrupar y realizar la suma de costos, sin embargo ahora agregué otro campo patra agrupar, y el codigo que antes me sirvió, ahora noa tabla, en otras palabras necesito sumar el costo si Item y este NuevoCampo son iguales a los que tengo en el formulario....como cambia este código???

Private Sub Form_Open(Cancel As Integer)
Dim d As Database, r As Recordset, s As String, r2 As Recordset
Set d = CurrentDb
s = "select Item,sum(Costo) as suma from Tabla1 group by Item and Tipo"
Set r = d.openrecordset(s)
s = "select * from Tabla2"
Set r2 = d.openrecordset(s)

Do Until r.EOF
r2.FindFirst "Item='" & r!Item & "'" and "Tipo='" & r!Tipo & "'"
If Not r2.nomatch Then
r2.edit
r2!Estado = r2!Presupuesto - r!suma
r2.Update
End If
r.MoveNext
Loop

End Sub

He hecho algunas modificaciones y no ha resultado....Que cambios debo hacer???

Por ejemplo:

Tabla1:
Item Tipo Costo
Item1 Negro 10

Item1 Negro 5

Item 2 Negro 5

Item 1 Azul 15
Item 2 Azul 20

Tabla2
Tipo Item Presupuesto Estado

Negro Item1 100 85

Negro Item 2 100 95
Azul Item 1 50 35
Azul Item 2 60 40

El valor de presupuesto lo ingresa el usuario
Ojalá entiendan

Me urge una aclaración
Muchas Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Actualizar campo 'Estado' en tabla 'Tabla2' con suma de costos desde formulario

Publicado por Alejandro (4142 intervenciones) el 04/08/2023 18:29:28
Para realizar la suma de costos con dos campos de agrupación en la tabla "Tabla1" y luego actualizar la tabla "Tabla2" con el resultado, necesitas ajustar el código en el formulario. El problema con el código original es que la cláusula "AND" no se está aplicando correctamente para la agrupación.

Aquí está el código corregido:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub Form_Open(Cancel As Integer)
    Dim d As Database, r As Recordset, s As String, r2 As Recordset
    Set d = CurrentDb
    s = "SELECT Item, Tipo, SUM(Costo) AS suma FROM Tabla1 GROUP BY Item, Tipo"
    Set r = d.OpenRecordset(s)
    s = "SELECT * FROM Tabla2"
    Set r2 = d.OpenRecordset(s)
 
    Do Until r.EOF
        r2.FindFirst "Item='" & r!Item & "' AND Tipo='" & r!Tipo & "'"
        If Not r2.NoMatch Then
            r2.Edit
            r2!Estado = r2!Presupuesto - r!suma
            r2.Update
        End If
        r.MoveNext
    Loop
 
    r.Close
    r2.Close
    Set r = Nothing
    Set r2 = Nothing
    Set d = Nothing
End Sub

Las modificaciones realizadas fueron principalmente en la consulta SQL para la tabla "Tabla1". Se corrigió la cláusula "GROUP BY" para que agrupe por ambos campos "Item" y "Tipo". Además, se cerraron los recordsets y liberaron los objetos al final del código para evitar problemas de memoria.

Con estas correcciones, el código debería funcionar correctamente y actualizar el campo "Estado" en la tabla "Tabla2" con la suma de los costos correspondientes a los campos "Item" y "Tipo" en la tabla "Tabla1". Recuerda que el formulario debe estar vinculado a la tabla "Tabla2" para que el evento Form_Open se ejecute correctamente.

Espero que esta solución te sea útil y resuelva tu problema. ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar