مشكلة مع ال Filter ؟
#11
اخواني الكرام... حان وقت الفرح بنسبة لي Smile

فقد اقتربت كثيرا كثيرا من الحل ولله الحمد...

وجدت و استخدمت هذا الكود...
PHP كود :
Accept := Pos('adnanov2',dataset.FieldByName('UserName').AsString) = 1; 

في الحدث
PHP كود :
ADOTable1FilterRecord 

والنتيجة انه تم عمل الفلتر مشكل صحيح...

لكن عندي اسإلة حول هذا الحلّ...

ماذا تعني Pos؟
هذا اولا...

ثانيا...
رقم ال 1 في الأخير امره غريب...
وكأنه يعني false او true او ما شابه ذلك ... فهل هذا صحيح... ؟

لأني عندما وضعت بدل ال 1 رقم 0 ظهرت كل الأسماء...
عند وضعته كما هو يعني رقم 1 يعمل فلتر عادي يعني فلتر بشكل صحيح...
وان وضعت بدل من ال 1 رقم 2 يختفي الكل...

اذا ممكن توضيح بارك الله لكم...
والسلام عليكم ورحمة الله
الرد
#12
يمكنك ان تستنتج ما حدث + قم بعمل زيارة خفيفة ل Helpe_ Smile
الرد
#13
hanipino كتب :يمكنك ان تستنتج ما حدث + قم بعمل زيارة خفيفة ل Helpe_ Smile

نعم اخي لكن في الحقيقة لم افهم من help شئ...
بحثت عن
PHP كود :
Pos function 
لكن انجليزيّتي ليست قويّة...

يعني ما عرفت ما معناها...
لكن اشكرك على كل حال اخي هانيبينوا Smile
الرد
#14
السلام عليكم
بالفرنسية من Help
كود :
Renvoie la valeur d'indice du premier caractère dans une sous-chaîne spécifiée qui se trouve dans une chaîne. Unité System Catégorie routines de gestion des chaînes Syntaxe Delphi : functionPos(Substr:string;S:string):Integer; Description Dans Delphi,la fonction Pos recherche une sous-chaîne,Substr,àl'intérieur d'une chaîne S.Substr et S sont des expressions de type chaîne. Pos recherche Substr àl'intérieur de S et renvoie une valeur entière correspondant àl'indice du premier caractère de Substr àl'intérieur de S.Pos fait la distinction majuscules/minuscules.Si Substr est introuvable,Pos renvoie zéro. La fonction PosEx est similaire àPos,mais elle dispose de fonctionnalités supplémentaires et peut être utilisée dans le code C++.
والمثال :
كود :
var S:string; S :=' 1 23 .5 '; {Conversion des espaces en zéros } while Pos(' ',S) > 0 do S[Pos(' ',S)]:='0';
والشرح بالعربي:
تعيد دالة Pos قيمة موضع (ترتيب) حرف معين من سلسلة حرفية أخرى، فمثلا ( Pos('a',S تعيد موضع الحرف a من السلسلة S فإذا كان موضعه في الخانة الأولى فتعيد الدالة القيمة 1، وإذا كان موضعه في الخانة الثانية تعيد 2، وأعرف أن البقية يمكن أن تكملها وحدك Wink
أضف للمثال السابق السطر:
PHP كود :
ShowMessage(S); 
تفهم أكثر إن شاء الله.
.
الرد
#15
اخواني الكرام...
سلام الله عليكم ورحمة منه وبركاته...

نويت ان ارفق لكم المشروع الذي أخذ من واقتي الكثير والله المستعان...
حتى يستفيد الإخوة منه...

+ حتى استفيد انا منه Smile بلحسنات ان شاء الله...

تجدونه مرفق بئذن الله وبدآخله اييضى قاعدة البيانات مختصرة...

...

نعم... بلإضافة عندي سؤال لم اتمكن من ايجاد شئ عليه...
ولم تختر في بالي فكرة عنه ... لعل احد الإخوة لديه الجواب..

السؤال هو...
في المشروع مثلا...
لو كتبتم التالي..
PHP كود :
@d 

او كتبتم...
اي بدل حرف صغير ... تكتبون حرف كبير...
PHP كود :
@D 

فستلاحظون انه الفلتر سيكون مختلف...

وذلك يعود الى ان المشروع ليس كما يسمّى CaseSensetive او ما شابه ذلك...
فهل لدى احد منكم بارك الله به... طريقة لعمل ذلك؟؟
اي لعمل انه لو تم البحث عى حرف كبير او صغير... فسيكون الجواب انه البرنامج يجد الكبير و الصغير...
هذا اولا...

ثانيا...
السؤال هو عن نفس المشروع...
ولكن اذا رءا احد الإخوة من المشرفين ان يضعه في موضوع لوحده.... فنحن تحت امرته Cool
نعم ...برمجيّة...
كيف بمكن عمل Sort للأسماء في قاعدة البيانات ؟
هذه الخآصيّة اعتقد موجودة في ListBox عادي ولكن لم اجدها مع المكون DBLookUpListBox والله المستعان...

آخيرا,,,
المشروع يحتاج لمكون من TMS حتى تتمكنوا من مشاهدته...وهو...
AdvEdit1

اخي kachwahed
بارك الله فيك على التوضيح...
اشكرك كثيرا

بارك الله فيكم جميعا...
والسلام عليكم ورحمة الله


الملفات المرفقة
.rar   my_db.rar (الحجم : 21.23 ك ب / التحميلات : 63)
الرد
#16
كود :
function ha_FilterQuery(ADOQuery:TADOQuery;FieldName:string;SearchString:string):string; var RecordCount:string ; begin ADOQuery.Filtered := False; if( SearchString='') or (SearchString='0') then begin ADOQuery.filter := FieldName+' like '+QuotedStr(SearchString +'%'); // ADOQuery.Filter := FieldName + ' = ' + QuotedStr('%' + SearchString + '%'); // I also checked * instead of % but wasn't usefull . end else begin ADOQuery.Filter := FieldName + ' = ' + QuotedStr('' + SearchString +''); end; ADOQuery.Filtered := True; RecordCount:=IntToStr(ADOQuery.Recordset.RecordCount); // showmessage(RecordCount) ; Result :=' المجموع '+RecordCount; end;
الرد
#17
كود :
function ha_FilterQuery(ADOQuery:TADOQuery;FieldName:string;SearchString:string):string; var RecordCount:string ; begin ADOQuery.Filtered := False; if( SearchString='') or (SearchString='0') then begin ADOQuery.filter := FieldName+' like '+QuotedStr(SearchString +'%'); // ADOQuery.Filter := FieldName + ' = ' + QuotedStr('%' + SearchString + '%'); // I also checked instead of % but wasn't usefull . end else begin ADOQuery.Filter := FieldName + ' = ' + QuotedStr('' + SearchString +''); end; ADOQuery.Filtered := True; RecordCount:=IntToStr(ADOQuery.Recordset.RecordCount); // showmessage(RecordCount) ; Result :=' المجموع '+RecordCount; end; call RecordCount:= ha_FilterQuery(DataModule1.itname_ADOQuery,'ADOCTYP',ADOCTYPE);
الرد
#18
اخي الكريم... [COLOR="Red"]masrnet2006
[/COLOR]
هل ممكن توضيح مشاركاتك بارك الله بك؟
لم افهم ما المقصود منها...

وهل هذا حل آخر ام ماذا بارك الله لكم

والسلام عليكم ورحمة الله
الرد
#19
اخي الكريم... moh
هذا مثال لعمل فلتر باستخدام function
(ha_FilterQuery(ADOQuery1,'field_nam',edit1.text
1- ADOQuery1 اسم الجدول او الاستعلام
2- اسم الحق 'field_nam'
3- اسم البحث في الجدول edit1.text فلتر لعمل بحث عن محمد حسن في الحقل name
------------
ملحوظه هامة الفلتر هنا افضل من جملة SQL
والسبب هو : الجدول موجود بالكامل ويؤشر الى record only
اما SQL تظهر record only اي تظهر سجل واحد فقط في الجدول الذي به 100 سجل
اما فلتر تظهر سجل 100 في الجدول الذي به 100 سجل وتقف عند سجل البحث
الرد
#20
كود :
If you are using [url=javascript:void(0)]SQL[/url], just add an order by clause: select * from emp where tel=123456 order by column1, column2... --------------- sort with table 2- Table component, try the "IndexFieldNames" (name;tel;no) 3- DBLookUpListBox listfield (ADOCTYP;CODNAM;ADOCTYP_SUM)

سوف ارسل لك شغل عملي من الشركة قريب
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم