Resolver problema con consulta en access 2003

Trabajo con una BD en Access 2003. No he podido avanzar porque tengo un problema que trataré de explicar en detalle. Disculpen por lo tedioso pero me es muy importante resolverlo.
En unas tablas Rgxxxx se definen para cada rango de valores una puntuación (campos: Pinferior, Psuperior, Pptos, Cinferior, Csuperior, Cptos, Ctinferior, Ctsuperior, Ptptos).
En una consulta "Productividad Total Club ST", además de otros campos se calculan los campos "Product", "Capa" y "Capote"
Lo que quiero es que con el resultado de estos cálculos se vaya a la tabla Rgxxxx correspondiente, se busque el rango adecuado y devuelva a la consulta el valor de puntuación (Pptos, Cptos, Ptptos). Ya sea en la misma consulta o en un informe quiero MOSTRAR TODOS LOS DATOS Y ADEMAS los puntos obtenidos.
Ejemplo: Al efectuar la consulta se obtienen para los tres primeros registros:
Registro1 (Product=555; Capa=630; Capote=633)
Registro2 (Product=1439; Capa=695; Capote=569)
Registro3 (Product=1749; Capa=738; Capote=484)      
En la tabla de rangos Rgxxx los datos son:
Registro 1:
Pinferior=1 ;Psuperior=1000;Pptos=10; 
Cinferior=1 ;CSuperior=500 ;Cptos=10;
Ctinferior=1;Ctsuperior=500;Ctptos=20;
Registro 2:
Pinf=1001 ;Psup=1500;Pptos=12; 
Cinf=501  ;CSup=1000;Cptos=20;
Ctinf=501 ;Ctsup=600;Ctptos=25;
Registro 3:
Pinferior=1501 ;Psuperior=1900;Pptos=15; 
Cinferior=1001 ;CSuperior=2000;Cptos=25;
Ctinferior=601 ;Ctsuperior=800;Ctptos=30
Por tanto en la consulta o en el informe debería aparecer (además del resto de los campos de la consulta):
Registro1: Product=555;Pptos=10;Capa=630;Cptos=20;Capote=633;Ctptos=20;
Registro2: Product=1439;Pptos=12;Capa=695;Cptos=20;Capote=569;Ctptos=25;
Registro3: Product=1749;Pptos=15;Capa=1738;Cptos=25;Capote=484;Ctptos=20;
Generalmente realizo todas las operaciones de la BD mediante consultas y al final genero los informes para mostrarlos a los usuarios e imprimirlos.
No se si es imposible hacer lo que quiero mediante consultas de access2003 y tendría que hacerlo mediante otro lenguaje, como por ejemplo Visual Basic, si es así tendría que ponerme a estudiar porque no lo domino.
Gracias de nuevo por la ayuda

1 respuesta

Respuesta
1
No es fácil por consulta
Te entendí bien, aunque en los resultados creo que algunos puntos están mal
bueno, te recomiendo que en la tabla principal Rgxxxx abras los campos para poner los puntos así la reportar solo la abres y ya
la programación seria
un botón de comando con lo siguiente
   Dim p As Recordset, rg As Recordset
   Set p = CurrentDb.OpenRecordset("Select * From product")
   Set rg = CurrentDb.OpenRecordset("Select * From Rgxxxx")
   If p.RecordCount > 0 And rg.RecordCount > 0 Then
      p.MoveLast
      p.MoveFirst
      For a = 1 To p.RecordCount
         '  between
         rg.FindFirst ("Pinferior<=" & p!Product & " and PSuperior>=" & p!Product)
         If rg.NoMatch = False Then
            p.Edit
            p!PPuntos = rg!PPtos
            p.Update
         End If
         rg.FindFirst ("Cinferior<=" & p!Capa & " and CSuperior>=" & p!Capa)
         If rg.NoMatch = False Then
            p.Edit
            p!CPuntos = rg!CPtos
            p.Update
         End If
         rg.FindFirst ("Ctinferior<=" & p!Capote & " and CtSuperior>=" & p!Capote)
         If rg.NoMatch = False Then
            p.Edit
            p!CtPuntos = rg!CtPtos
            p.Update
         End If
         p.MoveNext
      Next
   End If
También tengo el formulario hecho como ejemplo, si lo quieres dame tu email
[email protected]
Muchas gracias por tu apoyo. Ya he podido probar tus recomendaciones y me van bien. Te envíe correo para que me mandes el formulario. Te vuelvo a agradecer tu ayuda porque estaba llegando al borde de la impaciencia. Con personas como tu la vida se hace mejor. Mil gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas