Código para una consulta

Necesito de tu ayuda para construir el código para lo siguiente:
Resulta que tengo dos tablas:
1.Calificación
Con los campos
RangoInferior, RangoSuperior, Valor
0 5 1
5 10 2
10 20 3
20 50 4
50 100 5
Y otra varios campos entre ellos un valor.
Lo que pretendo es crear una consulta que califique el valor de la segunda tabla con los datos de la primera dependiendo en el rango que se encuentre.
La razón de ser de la primera tabla es que el usuario pueda cambiar los valores.
Respuesta
1
No me queda del todo claro, por favor envía el nombre de las dos tablas, los nombres de los campos involucrados e indica como se relacionarían los datos en las dos tablas.
Gajimenb
La base de datos es de access se llama
(Valoración)
Tiene dos tablas
1.(Calificación) con los
campos= RangoInferior,RangoSuperior,Valor
2.Registros
campos=Registro
La idea es que de acuerdo a los rangos de la tabla 1 se puedan calificar los registros de la tabla dos, se debe hacer con código pues una consulta normal no nos sirve.
Espero haberte aclarado el asunto
Gracias
Imagino que lo que necesitas es lo siguiente: en una consulta relacionar, los rangos que están en la tabla1 e incluirlos en algún campo o campos que existen en la tabla2; no me dices a través de que campo se relacionan las dos tablas pero intentaré explicarte que podrías hacer:
1. ¿Conoces las consultas de actualización? Realizas una consulta normal, ingresas al menú "Consulta" y escoges la opción "consulta de actualiación", luego bajas a la consulta los campos de la tabla2 que quieres actualizar y en la fila nueva que aparece abajo en el diseño de la consulta llamada "Actualizar a" indicas[Tabla1].[Nombrecampo] Es decir el campo de la tabla uno que quieres incluir en la tabla2.
2. Para hacerlo por código el asunto es más o menos así
Sub actualiza()
Dim Bd As Database
Dim SQL As String
Dim RsTabla1 As Recordset
Dim RsTabla2 As Recordset
Dim Valor, Relacion
Set Bd = CurrentDb
SQL = "Select * From Tabla1"
Set RsTabla1 = Bd.OpenRecordset(SQL, dbOpenDynaset)
RsTabla1.MoveFirst
While Not RsTabla2.EOF
Valor = RsTabla1![CampoOrigen] 'Es decir el nombre del campo que quieres poner en la tabla2
Relacion = RsTabla1![CampoRelacion] 'Es decir el nombre del campo que relaciona la tabla1 con la tabla2
SQL = "Select [CampoDestino] From Tabla2 where Tabla2.CampoRelacion = '" & Relacion & "'"
Set RsTabla2 = Bd.OpenRecordset(SQL, dbOpenDynaset)
RsTabla2.MoveFirst
While Not RsTabla2.EOF
With RsTabla2
.Edit
![CampoDestino] = Valor
.Update
End With
RsTabla2. MoveNext
Wend
RsTabla1. MoveNext
Wend
end sub
Lo que hace este procedimiento es almacenar la tabla1 en una variable y luego empezar a recorrer esa variable tomando el valor que se quiere almacenar en la tabla2 y el campo que relaciona las dos tablas, luego almacena la tabla 2 en otra variable y coloca el valor a actualizar en la tabla2 tantas veces como coincida el campo de relación.

1 respuesta más de otro experto

Respuesta
1
Lo más fácil seria establecer una Relación entre las dos tablas, de esta forma se puede hacer una consulta de selección con las dos tablas y añadir uno o varios parámetros en la celda Criterios del campo que nos interese. P.E.: [Introduzca un valor que sea 0 5 ó 1]
También puedes poner directamente un Criterio: Como 0 Or 5 Or 1 para el campo RangoInferior y Como 5 Or 10 Or 2 para el campo RangoSuperior.
NOTA: si no se encuentran valores en la consulta que coincidan con el/los parámetro/s que introduzcamos, la consulta no devolverá filas y no mostrará ningún mensaje de error. Podemos volver a aplicar el parámetro desde esta vista de la consulta usando el menu Registros>Quitar filtro u orden

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas