Se puede hacer de 2 formas
1. Forma con una consulta desde la cuadricula de Access
A - Seleccione de la cinta, Crear-->Diseño de consulta
Le aparece un formulario "Mostrar Tabla", haga clic en "Cerrar"
B - Haga clic con el botón derecho del mouse y clic en "Vista SQL"
c- Pegue el siguiente script
SELECT subquery.idempleado, subquery.empleado, subquery.sueldo
FROM (SELECT (SELECT COUNT(*) FROM tblempleados AS t2 WHERE t2.empleado <= tblempleados.empleado) AS fila_num, * FROM tblempleados) AS subquery
WHERE (((([fila_num]-1) Mod 2)=0) AND ((subquery.fila_num)>=1 And (subquery.fila_num)<=14))
ORDER BY subquery. Empleado;
Haga clic en la parte superior izquierda y clic en "Vista diseño". Obtendrá algo como.
RESULTADO DE LA CONSULTA
Puede cambiar el número de filas en la columna fila_num pero UNICAMENTE el segundo condicional, es decir <=14 puede cambiar a 10, 12 etc. La consulta tiene una pega, si cambia el primer condicional >=1 a 2 o 3 inicia es desde la fila siguiente. Si alguien lo puede solucionar le agradezco hacerlo saber.
2. Forma con código VBA y SQL
Observe el siguiente formulario
Ahora cambio fila final por 10 y hago clic en el botón Consultar. Obtengo:
CÓDIGO DEL BOTÓN CONSULTAR
Private Sub btnConsultar_Click()
Dim strSQL As String
Dim cantreg As Long
cantreg = DCount("*", "tblempleados")
If Me.cboIntervalo > 0 Then
If IsNumeric(Me.ctlInicio) And IsNumeric(Me.ctlFinal) And Not IsNull(Me.cboIntervalo) Then
'Vefico que el final no supere la cantidad de registros
If cantreg < Me.ctlFinal Then
MsgBox "El final supera los " & cantreg & " registros de la tabla", vbInformation, "Error.."
Me.ctlFinal.SetFocus
Exit Sub
End If
strSQL = "SELECT subquery.idempleado" & vbCrLf
strSQL = strSQL & " , subquery.empleado" & vbCrLf
strSQL = strSQL & " , subquery.sueldo" & vbCrLf
strSQL = strSQL & " FROM (SELECT (SELECT COUNT(*) " & vbCrLf
strSQL = strSQL & " FROM tblempleados AS t2 " & vbCrLf
strSQL = strSQL & " WHERE t2.empleado <= tblempleados.empleado) AS fila_num" & vbCrLf
strSQL = strSQL & " , * " & vbCrLf
strSQL = strSQL & " FROM tblempleados) AS subquery" & vbCrLf
strSQL = strSQL & " WHERE (((([fila_num]-1) Mod " & Me.cboIntervalo & ")=0) " & vbCrLf
strSQL = strSQL & " AND ((subquery.fila_num)>=" & Me.ctlInicio & vbCrLf
strSQL = strSQL & " AND (subquery.fila_num)<=" & Me.ctlFinal & "))" & vbCrLf
strSQL = strSQL & " ORDER BY subquery.empleado;"
End If
Else
Me.ctlInicio = Null
Me.ctlFinal = Null
strSQL = "SELECT idempleado,empleado,sueldo FROM tblempleados ORDER BY empleado;"
End If
Me.lstEmpleados.RowSource = strSQL
End Sub
Martha, si quiere el ejemplo lo puede solicitar a [email protected] Cómo usted utiliza en algunos casos PostgreSQL, le dejo el script
SELECT idempleado,empleado,sueldo
FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY empleado) as row_num
FROM tblempleados
) as subquery
WHERE MOD(row_num, 2) = 1 AND row_num >= 1 AND row_num <= 14
ORDER BY row_num;