هل هناك طريقة لتعيين إعدادات البحث عن MS Office (2003) للاشتراكات غير الإنجليزية
-
21-09-2019 - |
سؤال
لنفترض أن هناك جدول بيانات أو جدول في MS Access يحتوي على أحرف غير إنجليزية (Dicritics) مثل à, á, â, ã, ä, å, æ, ç, è, é, ê, ë
نظرًا لأن هذا النظام يتم استخدامه من قبل مكبرات الصوت الإنجليزية ، لا يمكن للمستخدم النهائي ، عند البحث عن القيم ، تخمين ما إذا كان قد تم إدخال كلمات أو أسماء معينة في الإصدار الإنجليزية أو في الإصدار الأصلي.
إنه، días
قد يتم إدخالها في الأصل في البيانات días
أو dias
. coñac
قد يتم إدخال coñac
أو conac
. في الواقع في بعض الأحيان يتم إدخال البيانات بهذه الطريقة وأحيانًا في الاتجاه الآخر.
والسؤال هو ما إذا كانت هناك طريقة لتعيين خيارات البحث هذه ، لذلك ستجد آلية البحث المكتبية المدمجة (CTRL+F) días
متى dias
تم توفيره.
إذا لم يكن هناك ، أود أن أسمع ما هو نهجك لحل هذه المشكلة.
المحلول
لا يمكن تخصيص سلوك حوار البحث عن واجهة المستخدم الرسومية في تطبيقات Office. ولكن إذا كنت في حذائك ، فإليك كيف سأحل المشكلة:
أولاً ، ستحتاج إلى بعض كود .NET الذي يؤدي عمليات البحث غير الحساسة للهجة. اعتمادًا على اللغة التي تحبها بشكل أفضل ، إليك عينة VB و C#. جوهر هذا هو استخدام CompareInfo.IndexOf
الطريقة باستخدام معلمة CompareOptions. CompareOptions.IgnoreNonSpace
. هذا هو بحث غير حساس لهجة.
بعد ذلك ، ستحتاج إلى الاتصال بهذا الرمز من تطبيق Office. تختلف كيفية توصيل الرمز في التطبيق حسب التطبيق- على سبيل المثال ، إليك منشورات مدونة توضح كيفية القيام بذلك من Excel و التمكن من.
ثم ستحتاج إلى لف تلك المكالمات حول الكود وواجهة المستخدم التي تحاكي البحث والاستبدال. هذا مرة أخرى سيكون مختلفا في كل تطبيق. على سبيل المثال ، في Excel ستحلق جميع الخلايا في ورقة العمل الحالية وتبحث عن المباريات باستخدام الكود الخاص بك.
أخيرًا ، تريد تعيين هذا الرمز إلى زر شريط الأدوات أو طريقة أخرى للحصول على الكود الخاص بك.
على أي حال ، آمل أن تكون هذه معلومات كافية لمساعدتك في البدء. إليك رمز .NET الأساسي في إما VB أو C# للقيام بمباريات غير حساسة للهجة:
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
ج#
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);
}
}