المشاركات : 2
المواضيع 1
:
: 0
الإنتساب : Jan 2009
سلام علیکم یا اخونی
هذا کد للبحث فی Database :
كود :
ADOQuery1.close;
ADOQuery1.sql.clear;
ADOQuery1.sql.add ('select * from mytable where Book);
ADOQuery1.sql.add ('Like ''%' + Edit1.text + '%''');
ADOQuery1.open;
لکن هذا الکد لیس ینتج هذه الکلمات : أعلم / إنشاء / سریعة
اذا اورد : اعلم / انشاء / سریعه
لان (ا) یفارق ( آ أ إ ) و (ه) یفارق ( ة)
کیف تجاهل الفروق بین الهمزه و نظائرها فی عمل البحث فی Database ؟
المشاركات : 2,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
وعليكم السلام.
هذا الكود لدالة تحول الحروف ä â ê ë ÿ û ü ô ö... الى الحروف A E Y U O ... وبنفس المبدأ حاول الاستفادة منه لتحويل آ ا ى ... إلى أ ي...
PHP كود :
function MajusculTou( const Texte: string ): string;
var x,y : integer;
begin
Result:= Texte;
for x:= 1 to length(Texte) do begin
y:= Ord( Result[ x ]);
case y of
97..122 : Result[ x ]:= Chr( y - 32 );
224..229 : Result[ x ]:= 'A';
231 : Result[ x ]:= 'C';
232..235 : Result[ x ]:= 'E';
236..239 : Result[ x ]:= 'I';
241 : Result[ x ]:= 'N';
242..246 : Result[ x ]:= 'O';
249..252 : Result[ x ]:= 'U';
253, 255 : Result[ x ]:= 'Y';
end;
end;
end;
المشاركات : 2
المواضيع 1
:
: 0
الإنتساب : Jan 2009
هذا الکود یحول کل الف ای ( آ ) او ( أ )
ای یتحول اانزل الی آآنزل او أأنزل او إإنزل لکن کیف یتحول الی أآنزل ..؟
المشاركات : 2,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
عذرا أخي لم أفهم شيئا مما كتبت
المشاركات : 32
المواضيع 3
:
: 0
الإنتساب : Dec 2008
مشكلة حقيقية فعلا
إذا تم البحث عن كلمة انزل و هي في قاعدة البيانات آنزل فلا يمكن إيجادها إلا إذا كانت موجودة في قاعدة البيانات بالشكل انزل
سننتظر دخول أحد الأخوة الخبراء علهم يفيدونا بشيئ
المشاركات : 1
المواضيع 0
:
: 0
الإنتساب : Dec 2013
السلام عليكم و رحمة الله إخوتي أنا الآن أعمل على برنامج لتسيير مكتبة و واجهتني مشكلة حول كيف أبحث في dbgrid مع تجاهل الهمزة و نضائرها
المشاركات : 56
المواضيع 4
:
: 0
الإنتساب : Jan 2011
هل هناك ما يمنع من إستخدام
StringReplace
المشاركات : 232
المواضيع 98
:
: 0
الإنتساب : Oct 2011
لدي فكرة لا اعلم اذا كانت ستفلح معك ما رأيك لو قمنا بالأتي :
PHP كود :
Var S : String;
S := Edit1.text ;
for I := 0 to 3 do Begin
If I = 0 Then S:= StringReplace(S, 'أ' , 'ا', [rfReplaceAll, rfIgnoreCase]);
If I = 1 Then S:= StringReplace(S, 'آ' , 'ا', [rfReplaceAll, rfIgnoreCase]);
If I = 2 Then S:= StringReplace(S, 'إ' , 'ا', [rfReplaceAll, rfIgnoreCase]);
If I = 3 Then S:= StringReplace(S, 'ا' , 'ا', [rfReplaceAll, rfIgnoreCase]);
// بأمكانك وضع الاحرف الذي تحتاج وبهذه العملية تكون قد بحثت عن كل الاحرف بشكل عام
if ADOQuery1.Active then ADOQuery1.sql.clear ;
ADOQuery1.sql.add ('select * from mytable where Book);
ADOQuery1.sql.add ('Like ''%' + S+ '%''');
if Not ADOQuery1.Active then ADOQuery1.open;
End;
ان شاء الله تكون تجدي نفعاً معك
اللهمّ إنّي ظلمت نفسي ظلماً كثيراً ولا يغفر الذّنوب إلا أنت
فاغفر لي مغفرة من عندك وارحمني إنّك أنت الغفور الرّحيم
المشاركات : 61
المواضيع 25
:
: 3
الإنتساب : Sep 2010
يتوجب انشاء تابع في قاعدة البيانات يعيد نفس نتيجة التابع الموجود أعلاه كي يتحقق الشرط
فتقول
where databasefunc(book) like '%'''+ delphiFunc(edtbook.text) + '%'''
المشاركات : 119
المواضيع 0
:
: 0
الإنتساب : Sep 2012
السلام عليكم...
كلٌ من SQL Server و Access يدعمان استعمال المجموعات (Sets) و النطاقات (Ranges) مع العامل LIKE.
المجموعة (Set) هي مجموعة من الحروف أو الرموز ضمن قوسين مربعين، مثلاً [acegj] . أما النطاق (Range) فيتحد بتعيين بداية النطاق و نهاية النطاق و بينهما شرطة، أيضاً ضمن قوسين مربعين، مثلاً [A-M] للحروف من A إلى M.
يمكن تطبيق ذلك مع الهمزات و ذلك بتحويل أي ألف (بصرف النظر عن همزته) إلى مجموعة من الألفات. مثلاً كلمة أخرج تصبح [اأإآ]خرج، و كلمة جاء تصبح ج[اأإآ]ء، و كلمة أأنزل تصبح [اأإآ][اأإآ]نزل... إلخ.
الكود التالي يحتوي على دالة تقوم بذلك لتعيد string يمكن استعماله في جملة SELECT. مع افتراض أن نص البحث مكتوب في Edit1:
كود :
function ReplaceAlif(SrcStr: string): string;
var
Idx: Integer;
begin
if Trim(SrcStr) = '' then
Result := SrcStr
else begin
Result := '';
Idx := 1;
for Idx := 1 to Length(SrcStr) do begin
if (SrcStr[Idx] = 'ا') or (SrcStr[Idx] = 'أ')
or (SrcStr[Idx] = 'إ') or (SrcStr[Idx] = 'آ') then
Result := Result + '[اأإآ]'
//else if (SrcStr[Idx] = 'ه') or (SrcStr[Idx] = 'ة') then
// Result := Result + '[هة]'
else
Result := Result + SrcStr[Idx];
end;
end;
end;
' ثم في زر البحث
var
SearchTxt, SqlStr: string;
begin
SearchTxt := Trim(Edit1.Text);
if SearchTxt <> '' then begin
SearchTxt := ReplaceAlif(SearchTxt);
SqlStr := 'SELECT ... WHERE (field_name LIKE %' + SearchTxt + '%';
ebd;
end;
نرجو الاستفادة و السلام.