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

1 Respuesta

3.200 pts.
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