فهد الدوسري قام بنشر يونيو 3, 2004 قام بنشر يونيو 3, 2004 أعزائي .. السلام عليكم ورحمة الله لدي سؤالين وأتمنى أن أجد لديكم أجوبة لها مع الشكر مقدما . السؤال الأول : كيف أستطيع تغيير السجل الحالي في كل مرة أفتح فيها النموذج ؟عمل الاستاذ أبو حمود ( الله يذكره بالخير ) هذا الكود ولكن فيه عيب أنه يكرر سجل معين دائماً أجد النموذج يفتح عليه فهل يمكن أن أجد تعديل عليه ليعمل أفضل من ذلك والكود ( يوضع في حدث عند التحميل ) للنموذج . Dim رقم_السجل_المطلوب As Long Dim عدد_سجلات_النموذج عدد_سجلات_النموذج = DCount(Me.RecordsetClone.Fields(0).Name, Me.RecordSource) ' عمل حلقة تكرار لتحقيق شرط Do رقم_السجل_المطلوب = Int(Rnd * 15) ' أن يكون الرقم المتولد اكبر من الصفر وأن يكون أصغر أو يساوي عدد السجلات Loop While رقم_السجل_المطلوب <= 0 Or رقم_السجل_المطلوب > عدد_سجلات_النموذج DoCmd.GoToRecord acDataForm, Me.Name, acGoTo, رقم_السجل_المطلوب السؤال الثاني : كيف أستطيع تجاهل الهمزة والتاء المربوطة عند البحث مثلاً .عمل الاستاذ أبو هاجر ( الله يذكره بالخير ) هذه الوحدة النمطية ولكني لم استطع التعامل معه في برنامجي المرفق لكم فهل أجد لديكم المساعدة ؟ Function changesearch(Mytxt) As String Dim tempstr As String Dim tempend As String tempstr = Nz(Mytxt, "") If tempstr Like "*[أاآإ]*" Then For b = 1 To Len(tempstr) If Mid(tempstr, b, 1) = "ا" Or Mid(tempstr, b, 1) = "إ" Or Mid(tempstr, b, 1) = "أ" Or Mid(tempstr, b, 1) = "آ" Then tempend = tempend & "[أآاإ]" Else tempend = tempend & Mid(tempstr, b, 1) End If Next tempstr = tempend End If If tempstr Like "*[ةه]*" Then For b = 1 To Len(tempstr) If Mid(tempstr, b, 1) = "ة" Or Mid(tempstr, b, 1) = "ه" Then tempend = tempend & "[ةه]" Else tempend = tempend & Mid(tempstr, b, 1) End If Next tempstr = tempend End If If tempstr Like "*[ىي]*" Then For b = 1 To Len(tempstr) If Mid(tempstr, b, 1) = "ى" Or Mid(tempstr, b, 1) = "ي" Then tempend = tempend & "[ىي]" Else tempend = tempend & Mid(tempstr, b, 1) End If Next tempstr = tempend End If changesearch = tempstr End Function أرجو أن أجد الحل لديكم وللجميع تحياتي .
فهد الدوسري قام بنشر يونيو 4, 2004 الكاتب قام بنشر يونيو 4, 2004 قام أخي مهند بحل جميع الأسئلة جزاه الله ألف خير وبارك فيه . ولمن يريد الاطلاع .. فالحل على هذا الرابط ... http://www.arabteam2000-forum.com/index.ph...=0entry201952 تحياتي .. توضيح-مهند.rar
فهد الدوسري قام بنشر يونيو 4, 2004 الكاتب قام بنشر يونيو 4, 2004 يبدو أن السؤال الثاني يوجد فيه مشكلة ولا زلت أنتظر فزعتكم .
أبو هادي قام بنشر يونيو 4, 2004 قام بنشر يونيو 4, 2004 السلام عليكم يوجد في مشروع القرآن الكريم .. دالة شبيهة لدالة أبو هاجر ، قد تكون الحل الذي تنشده . تحياتي .
فهد الدوسري قام بنشر يونيو 5, 2004 الكاتب قام بنشر يونيو 5, 2004 شكرا لمرورك أستاذي أبو هادي . هل أطمع في كرمك بأن تقوم بتطبـيقها على البرنامج المرفق إذا كان وقتك يسمح بذلك ؟ تحياتي ..
محمد طاهر عرفه قام بنشر يونيو 5, 2004 قام بنشر يونيو 5, 2004 يبدو أن المشكلة ليست فى الدالة المطبقة في مشروع القرآن أو فى موضوع البحث هنا http://www.officena.net/ib/index.php?showtopic=1912 http://www.officena.net/ib/index.php?showtopic=857 و الامثلة يتم فيها فعلا تجاهل موضوع الهمزة ايضا المثال الذي أضافه الأخ مهند يعمل تماما جرب اعادة ترتيب المراجع الموجودة فى المثال عندك أيضا جرب استبدال الحروف العربية فى الكود ، بال asci code المناظر كما فى الموضوع المشار اليه عاليا فاحيانا مع بعض النسخ يحدث مشاكل مع وجود حروف عربية وسط الكود احيانا يفي اعادة الترتيب للمراجع فى الاكسيس بحل بعض مشاكل شبيه و لكن اذا كانت مشكلة مراجع ، فسيتوقف الكود عند الدالة المعنية اذا عملت Debug فجرب عمل debug أولا ثم اعادة الترتيب و اذا لم يتم عمل الكود بعد هذا كله فجرب تحميل فيجوال بيزيك الاصدار السادس علي الجهاز ، فأحيانا تكون بعض المكتبات فى حاجة الي تحديث و يقوم تحميل الفيجوال بيزيك الاصدار السادس بحل هذه المشاكل
أبو هادي قام بنشر يونيو 5, 2004 قام بنشر يونيو 5, 2004 السلام عليكم لقد جربت المثال وهو يعمل بدون مشاكل . يمكنك احتياطا تبديل هذا السطر : If Arabic_word Like changesearch(Arabic1) Then بهذا السطر : If changesearch(Trim(Arabic_word)) = changesearch(Trim(Arabic1)) Then تحياتي .
فهد الدوسري قام بنشر يونيو 5, 2004 الكاتب قام بنشر يونيو 5, 2004 شكرا أستاذي أبو هادي الآن بعد استبدال السطر أصبح يعمل على ما يرام تحياتي
أبو هادي قام بنشر يونيو 6, 2004 قام بنشر يونيو 6, 2004 السلام عليكم هذا آخر رد للأخ مهند مخاطبا الأخ فهد بعد أن عرض اقتراحي الأخير : أخي فهد .. استعمال الدالة Like هو أسرع من هذا الأسلوب إذا كان القصد البحث في قاعدة البيانات .. لذلك أرجع وأؤكد لك أنه توجد مشكلة في الأكسس في جهازكالشيء الثاني لا داعي لاستعمال Trim .. لأن الدالة changesearch تحتوي على Trim وبالتالي السطر هذا يكفي : f changesearch(Arabic_word) = changesearch(Arabic1) Then وقد اقتضى رده دفعي على كتابة هذه الملاحظات : 1 – دالة changesearch() لا تحتوي على دالة Trim() والأصح أن لا تحتويها . 2 – العلة ليست في أداة/عامل Like ولو استبدل الأخ فهد أداة = بأداة Like فسيعمل الكود ولكنك للآن لم تدرك الحل بعد . 3 – لقد قارنت بين أداة Like و (الأسلوب)!!! بدلا من المقارنة بين أداة Like و أداة = معللا أن أداة Like أسرع ونحن نقبل منك إذا دعمته بدليل إن أمكن . 4 – يوجد بالدالة الثانية دالة InStr() وكان بالإمكان استخدام أداة Like إلا إذا كانت InStr() أسرع ؟ ، آمل التوضيح . 5 – لو أردنا أن ندخل في مقارنات ونناقش الأسلوب والسرعة فالدالة التي بموضوع القرآن الكريم أسرع بثلاث مرات ولن أقول لك لماذا ، حاول أن تعرفها بنفسك . 6 – كذلك الدالة الأولى بها خطأ وسيكتشفه لاحقا الأخ فهد بعد تكرار المحاولات ولن أقول لك ما هو أيضا . 7 – لولا طلب الأخ فهد مني التدخل لما تدخلت لما رأيت منك سابقا من حساسية زائدة من تداخلات الآخرين . 8 – آمل ردي هذا أن لا يمنعك من مواصلة المساهمة في برنامج مشروع القرآن الكريم . تحياتي .
محمد طاهر عرفه قام بنشر يونيو 8, 2004 قام بنشر يونيو 8, 2004 السلام عليكم عذرا حدثت مشكلة ، و فقدنا بعد المواضيع المضافة حديثا ، و سأرفقها تباعا باذن الله ، و يرجي تنبيهي الي الردود الناقصة ، أو اضافتها ثانية مباشرة ان كانت متاحة
محمد طاهر عرفه قام بنشر يونيو 8, 2004 قام بنشر يونيو 8, 2004 رد للأخ مهند : في البداية أشكر أخي أبو هادي على متابعته الدؤوبة 1- اقتباس دالة changesearch() لا تحتوي على دالة Trim() : كلامك صحيح .. وأنا كنت غلطان وكنت أظن أني قد وضعتها 2- اقتباس العلة ليست في أداة/عامل Like ولو استبدل الأخ فهد أداة = بأداة Like فسيعمل الكود ولكنك للآن لم تدرك الحل بعد . أنا عندي عمل الكود بستعمال Like ... ولكن الأخ فهد أكد أن الكود باستعمال Like لم يعمل 3- اقتباس لقد قارنت بين أداة Like و (الأسلوب)!!! بدلا من المقارنة بين أداة Like و أداة = معللا أن أداة Like أسرع ونحن نقبل منك إذا دعمته بدليل إن أمكن أظن أن الموضوع لا يحتاج إلى مناقشات .. أي واحد يجرّب في قاعدة تحتوي على أكثر من 1000 سجل يجرب البحث بالأسلوبين ويرى فرق التوقيت 4- اقتباس يوجد بالدالة الثانية دالة InStr() وكان بالإمكان استخدام أداة Like إلا إذا كانت InStr() أسرع ؟ ، آمل التوضيح . التوضيح أني بالأساس مبرمج VB .. لذلك فإن ارتباطي بتعليمة InStr أكثر يعني متعوّد عليها ، كما أنه إذا سلّمنا بوجود مشكلة بعامل Like يغدو استعمال Instr أفضل في هذه الحالة 5- الدالة في القرآن الكريم لم أطّلع عليها بعد 6- بدون تعليق 7- اقتباس لولا طلب الأخ فهد مني التدخل لما تدخلت لما رأيت منك سابقا من حساسية زائدة من تداخلات الآخرين . أخي أبو هادي أنا آسف جداً إذا بدى من ردودي أنني متحسس من تدخلات الآخرين .. إذا كان هذا ما أحسست به فأرجو أن تقبل اعتذاري الشديد لأني - والله على ما أقوله وكيل - ليس عندي أي مشكلة من تدخلات تالآخرين ولا وجود لأي تحسس عندي من أي كان بالعكس فأنا أفرح عند تدخل الآخرين .. لأن كثرة الحوار بها الفائدة 8- اقتباس آمل ردي هذا أن لا يمنعك من مواصلة المساهمة في برنامج مشروع القرآن الكريم معاذ الله أخي أبو هادي أن أكون صغير التفكير .. وما كان أملي أن يكون ظنك فيّ هكذا !! تحياتي للجميع
محمد طاهر عرفه قام بنشر يونيو 8, 2004 قام بنشر يونيو 8, 2004 رد للأخ أبو هادي : السلام عليكم أشكر تفهمك وقبولك ملاحظاتي وأود أن أعقب بالتالي : اقتباس 2 - أنا عندي عمل الكود بستعمال Like ... ولكن الأخ فهد أكد أن الكود باستعمال Like لم يعمل المشكلة كانت تكمن في تجاهل الهمزة لأحد طرفي المقارنة مع ترك الآخر والذي من المحتمل أن يحتوي على همزات كذلك ، هذه المشكلة فقط . اقتباس 3 - أظن أن الموضوع لا يحتاج إلى مناقشات .. أي واحد يجرّب في قاعدة تحتوي على أكثر من 1000 سجل يجرب البحث بالأسلوبين ويرى فرق التوقيت يعني أن هذه النتيجة غير موثقة وإنما اكتسبتها من واقع التجربة ، فلذلك كان الموضوع يستحق المناقشة والتأكد ، فكم منا دعته الظروف أن يقوم بمقارنة بين العاملين لألف سجل . اقتباس 6- بدون تعليق الدالة تخرج القيمة صفر ومطلوب تفاديه . اقتباس 8 - معاذ الله أخي أبو هادي أن أكون صغير التفكير .. وما كان أملي أن يكون ظنك فيّ هكذا !! ظني بك خيرا إن شاء الله ولكن أنا أحتاط أن لا أخسرك وأن أبقي عليك معينا وعضيدا . تحياتي .
محمد طاهر عرفه قام بنشر يونيو 8, 2004 قام بنشر يونيو 8, 2004 رد للأخ مهند : أشكر الأخ أبو هادي على تفهمه لنواياي ومقاصدي اقتباس الدالة تخرج القيمة صفر ومطلوب تفاديه . Dim Rec2Go As Long DoCmd.GoToRecord , , acLast Randomize Rec2Go = Int(Rnd(-Timer) * Me.Recordset.RecordCount - 1) + 1 DoCmd.GoToRecord , , acGoTo, Rec2Go أنت ترى معي أخي أبو هادي أنني أجمع الرقم واحد إلى Rec2Go لكي أتفادى الصفر .. إلا إذا كان عدد السجلات بالأساس صفر .. وفي هذه الحالة لتلافي حدوث خطأ يجب أن نضع سطر On Error Resume Next
محمد طاهر عرفه قام بنشر يونيو 8, 2004 قام بنشر يونيو 8, 2004 رد للأخ فهد بارك الله في الجميع . أخي أبو هادي .. أخي مهند .. أظن أن الدالة لا تتعامل مع التاء المربوطة (ةه) فالرسالة تخرج ( الكلمة غير متطابقة ) إذا كتبت في الأعلى ( فاطمه) وفي الحقل الأسفل ( فاطمة) أما بالنسبة للياء ( ي ى ) فهي تعمل كما هو الحال مع الهمزة يعني مظبوطة . تحياتي ..
أبو هادي قام بنشر يونيو 8, 2004 قام بنشر يونيو 8, 2004 السلام عليكم أخي فهد .. لقد جربت المثال مرة أخرى ورأيت أن هناك فرق بين استخدام = و Like حيث اشتغل الكود مع عامل = ولكنه لم يعمل مع عامل Like !!!! . ومع ذلك أضفت لك دالة ReStr الموجودة بمشروع القرآن الكريم . جرب الآن واخبرنا بالنتيجة . تحياتي . توضيح.rar
فهد الدوسري قام بنشر يونيو 9, 2004 الكاتب قام بنشر يونيو 9, 2004 بارك الله فيك أستاذ أبو هادي .. قمت بتجربة الدالة وهي تعمل على ما يرام .
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.