Ordenación de bbdd

¿Cómo puedo hacer para que una bbdd de ms-access, use un campo en orden ascendente-descendente pero no lo haga de A-Z o Z-A, sino inciando desde otra letra que no sea la primera o la última del abecedario, incluyendo el resto de caracteres?

1 Respuesta

Respuesta
-1
Esta solución que te propongo funciona como si el alfabeto no fuera el que
es sino como tú quieras definirlo.
Podrías crear una tabla "Orden" con los siguientes campos
AlfabetoTradicional: Texto 1
AlfabetoArbitrario: Texto 1 (indexado)
En el campo AlfabetoTradicional pondrías todos los caracteres en el orden
tradicional y el el campo AlfabetoArbitrario podrías los caracteres en el
nuevo orden
En un módulo estándar tendríamos esta función:
Function Transformar( Cadena as String ) As String
Dim rst As DAO.Recordset
Dim Transformada As String
Dim Car As String*1
Dim i As Integer
set rst = CurrentDB.OpenRecordset("Orden")
rst.Index = "AlfabetoArbitrario"
For i = 1 To Len( Cadena )
Car = Mid(Cadena, i, 1 )
rst.Seek "=", car
If rst.NoMatch then
Transformada = Transformada & car
Else
Transformada = Transformada & rst("AlfabetoTradicional")
End If
Next
rst.Close
Transformar = Transformada
End Function
Luego podrías utilizar la función por ejemplo de la siguiente manera:
SELECT Nombre FROM Contactos ORDER BY Transformar(Nombre)
Y sale ordenado según el alfabeto arbitrario.
se puede rellenar la tabla orden mediante:
Sub Rellenar()
Dim i As Integer
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("Orden")
For i = Asc("a") To Asc("z")
rst.AddNew
rst(0) = Chr(i)
rst(1) = Chr(i)
Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas