Access - 2 últimas actualizaciones

 
Vista:
sin imagen de perfil

2 últimas actualizaciones

Publicado por Fco. Javier (4 intervenciones) el 03/11/2014 19:05:52
Hola.

Tengo un problema que no soy capaz de resolver. He intentado aplicar alguna que otra solución que he encontrado
por el foro pero no he sido capaz de resolverlo. El problema es el siguiente:

Tengo dos tablas en una BD Access, una es 'Contrato' y la otra es 'Actualizaciones'.

En la tabla 'Contrato' tengo todos los contratos de una empresa y la clave principal es IdContrato.
En la tabla 'Actualizaciones' tengo todas las actualizaciones economicas que se hacen para cada contrato.

Quiero hacer, si se puede, una consulta que saque las dos últimas actualizaciones de cada contrato.
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

2 últimas actualizaciones

Publicado por jose (830 intervenciones) el 04/11/2014 21:52:53
select top 2 from datos tablas .......... order by fecha-actualizaciones desc
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
sin imagen de perfil

2 últimas actualizaciones

Publicado por Fco. Javier (4 intervenciones) el 05/11/2014 12:03:19
Gracias por contestar.

Yo ya he intentado poner lo que me dices, pero me saca sólo 2 registros, en concreto los 2 últimos de la tabla 'Actualizaciones'. Yo lo que quiero es que me saque por cada IdContrato de la tabla 'Contrato' los 2 últimos registros actualizados.

PD: La tabla 'Actualizaciones' tiene también un campo IdContrato.
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
sin imagen de perfil

2 últimas actualizaciones

Publicado por Fco. Javier (4 intervenciones) el 12/11/2014 18:02:52
Gracias a todos por el interés mostrado.

Ya lo he resuelto por código VBA.
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
Imágen de perfil de xve
Val: 57
Ha disminuido su posición en 5 puestos en Access (en relación al último mes)
Gráfica de Access

2 últimas actualizaciones

Publicado por xve (126 intervenciones) el 12/11/2014 19:41:13
Hola Fco. Javier, podrías compartirnos como lo has resuelto?
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
sin imagen de perfil

2 últimas actualizaciones

Publicado por Fco. Javier (4 intervenciones) el 13/11/2014 09:15:48
Claro, sin ningún problema.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Dim SqlCont, SqlAct, SqlTemp, NumeroOrden As String
Dim RegCont, RegAct As Recordset
Dim NumRegCont, IndRegCont As Integer
Dim IdActTemp As Integer
Dim IdContTemp, NombActTemp As String
Dim FecActTemp As Date
Dim FCActTemp, CCActTemp, FNActTemp, CNActTemp As Single
Dim UActTemp, ActActTemp As Integer
 
SqlCont = "SELECT Contrato.IdContrato FROM Contrato"   'Consulta con todos los contratos
Set RegCont = CurrentDb.OpenRecordset(SqlCont)
RegCont.MoveLast
NumRegCont = RegCont.RecordCount
RegCont.MoveFirst
For IndRegCont = 1 To NumRegCont   'Recorre la consulta de contratos una a una
   NumeroOrden = RegCont.Fields("IdContrato")
   ' Consulta de las dos últimas actualizaciones de cada contrato
   SqlAct = "SELECT TOP 2 Actualizaciones.IdActualizacion, Actualizaciones.IdContrato, Actualizaciones.NombreActualizacion, Actualizaciones.FechaActualizacion, Actualizaciones.FacturableContrato, Actualizaciones.CosteContrato, Actualizaciones.FacturableNovela, Actualizaciones.CosteNovela, Actualizaciones.UTE, Actualizaciones.Actualizado FROM Actualizaciones WHERE ((Actualizaciones.IdContrato) = '" + NumeroOrden + "') ORDER BY Actualizaciones.IdContrato, Actualizaciones.UTE DESC, Actualizaciones.IdActualizacion DESC;"
   Set RegAct = CurrentDb.OpenRecordset(SqlAct)
   If Not RegAct.BOF Then
      RegAct.MoveLast
      While Not RegAct.BOF   'Inserta los 2 registros en la tabla 2UltAct
         IdActTemp = RegAct.Fields("IdActualizacion")
         IdContTemp = RegAct.Fields("IdContrato")
         NombActTemp = RegAct.Fields("NombreActualizacion")
         FecActTemp = RegAct.Fields("FechaActualizacion")
         FCActTemp = RegAct.Fields("FacturableContrato")
         CCActTemp = RegAct.Fields("CosteContrato")
         FNActTemp = RegAct.Fields("FacturableNovela")
         CNActTemp = RegAct.Fields("CosteNovela")
         UActTemp = RegAct.Fields("UTE")
         ActActTemp = RegAct.Fields("Actualizado")
         SqlTemp = "INSERT INTO 2UltAct (IdActualizacion, IdContrato, NombreActualizacion, FechaActualizacion, FacturableContrato, CosteContrato, FacturableNovela, CosteNovela, UTE, Actualizado) VALUES ('" & IdActTemp & "', '" & IdContTemp & "', '" & NombActTemp & "', '" & FecActTemp & "', '" & FCActTemp & "', '" & CCActTemp & "', '" & FNActTemp & "', '" & CNActTemp & "', '" & UActTemp & "', '" & ActActTemp & "');"
         CurrentDb.Execute SqlTemp
         RegAct.MovePrevious
      Wend
   End If
   RegAct.Close
   RegCont.MoveNext
Next IndRegCont
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
Imágen de perfil de xve
Val: 57
Ha disminuido su posición en 5 puestos en Access (en relación al último mes)
Gráfica de Access

2 últimas actualizaciones

Publicado por xve (126 intervenciones) el 13/11/2014 15:36:58
Gracias por compartirlo Fco. Javier!!!
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