Est-il un moyen de définir les paramètres de recherche MS Office (2003) pour charectars non anglais
-
21-09-2019 - |
Question
Dire qu'il ya une feuille de calcul ou d'une table dans MS Access qui contient des caractères non anglais (de diacritiques) tels que à, á, â, ã, ä, å, æ, ç, è, é, ê, ë
Étant donné que ce système est utilisé par les anglophones, l'utilisateur final, lorsque vous recherchez des valeurs ne peut pas deviner si oui ou non certains mots ou noms ont été saisis dans la version anglaise ou dans la version originale.
C'est, días
pourrait être à l'origine est entré dans la databse comme días
ou dias
. coñac
peut être entré comme coñac
ou conac
. En fait, parfois les données sont saisies de cette façon et parfois l'inverse.
La question est de savoir s'il y a un moyen de définir cette option de recherche, donc intégré dans le mécanisme de recherche de bureau (Ctrl + f) trouverait días
quand dias
est fourni.
S'il n'y a pas, je voudrais savoir ce que serait votre approche pour résoudre ce problème.
La solution
GUI comportement correspondant de dialogue de recherche dans les applications Office n'est pas personnalisable. Mais si je dans vos chaussures, voici comment je résoudre le problème:
D'abord, vous aurez besoin d'un code .NET qui effectue des recherches insensible accent. En fonction de la langue que vous aimez le plus, voici un échantillon à la fois VB et C #. Le noyau de ce procédé utilise le CompareInfo.IndexOf
à l'aide d'un jeu de paramètres CompareOptions CompareOptions.IgnoreNonSpace
. Ceci est une recherche insensible accent.
Ensuite, vous devrez appeler ce code de l'application Office. Comment vous branchez code varie selon app-- par exemple, voici les messages de blog montrant comment faire Excel et accès .
Ensuite, vous aurez besoin d'envelopper les appels autour du code et l'interface utilisateur qui simulent une recherche et remplacer. Ce nouveau sera différent dans chaque application. Par exemple, dans Excel vous boucle à travers toutes les cellules de la feuille de calcul et rechercher les correspondances en utilisant votre code.
Enfin, vous voulez mapper ce code à un bouton de barre d'outils ou d'une autre façon d'obtenir votre code invoqué.
Quoi qu'il en soit, espérons que cela est assez d'informations pour vous aider à démarrer. Voici le code .NET de base dans les deux VB ou C # pour faire matchs insensible accent:
VB
Module Module1
Sub Main()
' returns: 3
Dim pos As Integer = FindIgnoreDiacritics("àcçëñt-énäblêd", "en")
End Sub
Function FindIgnoreDiacritics(ByVal lookIn As String, ByVal lookFor As String) As Integer
FindIgnoreDiacritics = System.Globalization.CultureInfo.InvariantCulture.CompareInfo.IndexOf(lookIn, lookFor, System.Globalization.CompareOptions.IgnoreNonSpace Or System.Globalization.CompareOptions.IgnoreCase)
End Function
End Module
C #
class Program
{
static void Main(string[] args)
{
// returns: 3
int pos = FindIgnoreDiacritics("àcçëñt-énäblêd", "en");
}
static int FindIgnoreDiacritics(string lookIn, string lookFor)
{
return System.Globalization.CultureInfo.InvariantCulture.CompareInfo.IndexOf(lookIn, lookFor,
System.Globalization.CompareOptions.IgnoreNonSpace | System.Globalization.CompareOptions.IgnoreCase);
}
}