بتاريخ: 10 فبراير 200917 سنة comment_148896 اخواني الكرام السلام عليكم ورحمة الله وبركاتة اخواني انا عامل برنامج لمستوصف وفيه جدوال لملفات المرضى وعند الاستعلام عن بيانات المريض باستخدام الاسم يحصل بط شديد جدا علما بان عدد الملفاتحدود 35000 ملف ارجو منك الافادة لانه هذا مشكلة كبيره توجهنا ولم اصل الى حل علما اننا استخدم في الاستعلام default_whereوكما هناك سئل اخر انا عملت lov واريد التحكم بعدد السجلات المسترجعه ولم استطيع رغم اننا حدت record group fetch size =20 سجلالا انا السجلات تظهر كامل من قاعدة البيانات يعني يسترجع 35000 الف ملف ارجو الافادة من الخبراء وجزاكم الله خير الجزاء وزادكم في العلم تقديم بلاغ
بتاريخ: 10 فبراير 200917 سنة comment_148906 اولا بالنسبة لجعل الاستعلام سريع قم بعمل index على الحقل الذى سوف تستخدمة فى الاستعلامcreate index index_nameon table_name (column_name اما بالنسبة قم بفتح خصائص ال lov سوف تجد خاصية اسمها filter before desplay قم بتغير قيمتها الى yes تقديم بلاغ
بتاريخ: 10 فبراير 200917 سنة كاتب الموضوع comment_148911 اخي العزيز الف شكر لك على الرد اسريع وجزاك الله الف خير اخي عملت index لكن لم اجد اي تغيرفماذا تراه الف شكر لك مره اخرى تقديم بلاغ
بتاريخ: 10 فبراير 200917 سنة comment_148917 السلام عليكم ورحمة الله و بركاتهاخي تأكد من ان كرت الشاشة لديك سليم , ربما يحتاج الى اعادة تعريفاخوك مراد جانم تقديم بلاغ
بتاريخ: 10 فبراير 200917 سنة comment_148923 السلام عليكماخي محمد ممكن توضح اكتر فكرة index ?بالتوفيق تقديم بلاغ
بتاريخ: 11 فبراير 200917 سنة comment_148937 عطفا على كلام اخونا محمد ابو العلا جزاه الله خيرا ...ال index يعمل ترتيب لقيم الحقل مما يسرع فى عمليات الاستعلام و استرجاع البيانات مثال : CREATE INDEX INDX_NAME ON TABLE_NAME (COL_NAME); واذا كنت فى ال QUERY تستعلم باكثر من حقل و ليكن 3 حقول فمن الافضل عمل INDEX واحد للثلاث حقول مثال CREATE INDEX INDX_NAME ON TABLE_NAME (COL1,COL2,COL3); و الفارق مع وجود الINDEX كبير فى الاداء و السرعة تم تعديل 11 فبراير 200917 سنة بواسطة egyhamada تقديم بلاغ
بتاريخ: 11 فبراير 200917 سنة comment_148944 1- اتأكد من ان كل العلاقات الخارجية إذا كان الإستعلام من اكثر من جدول موجودة داخل Where2- زيادة مساحة Tablespace الخاصىة باليوزر الموجود داخلة الجدول3- زيادة مساحة Tablespace الخاصىة UNDOTBS01 ، TEMP تقديم بلاغ
بتاريخ: 11 فبراير 200917 سنة كاتب الموضوع comment_148992 اخواني الكرام الف شكر لكم على التفاعلوارجو التوضيح كيف استطيع زيادة حجم table spaceوعلى فكره انا عملت البرنامج بديل لبرنامج مصمم بالفيجوال والاكسس وذالك لاسباب البط واخاف ان يكون البرنامج هذا ابطى واقع في احراج كبيرارجو التوضيح بجميع الحلول وعلما اننا استخدم في الاستعلام execute_query تقديم بلاغ
بتاريخ: 11 فبراير 200917 سنة comment_148995 السلام عليكماخي الكريم حتي لاتضيع وقتك فنصيحتي لك هي اللجوء لمتخصص ADMINISTRATION فهناك استعلامات قد يراها الديفولبر انها عادية او سليمة ولكن الادمن يطلق عليها HARD CODE وهي التى تسبب البطئ فى الاستعلامات ؛ اعرض الامر على ادمن افضلوشكراميجا تقديم بلاغ
بتاريخ: 11 فبراير 200917 سنة comment_149008 السلام عليكم اكتب لنا امر البحث .... وهل البحث مركب اى ان امر البحث يتم بالاسم وايضا عناصر اخرى ام ان البحث بالاسم فقط او ان امكن ارفق الفورم فقط تقديم بلاغ
بتاريخ: 14 فبراير 200917 سنة كاتب الموضوع comment_149158 الف شكر لك المتفاعلين معي وجزاكم الله اف خير اخواني هذا الكود المستخدام وهو بحث باكثر من قيمة---------------------------------- ------------- -PROCEDURE search IS x varchar(200); i int; begin if :search.f_no is null then x:='1=1'; else x:='f_no='||:search.f_no; end if; ----------------------------------------------------- if :search.name1 is null then x:=x||' and 1=1'; else X:=X||' and name1 like ''%'||:search.name1||'%'''; end if; ---------------------------------------------------- if :search.name2 is null then x:=x||' and 1=1'; else X:=X||' and name2 like ''%'||:search.name2||'%'''; end if; --------------------------------------------------- if :search.name3 is null then x:=x||' and 1=1'; else X:=X||' and name3 like ''%'||:search.name3||'%'''; end if; ----------------------------------------------------- if :search.name4 is null then x:=x||' and 1=1'; else X:=X||' and name4 like ''%'||:search.name4||'%'''; end if; ------------------------------------------------------ if :search.day_date is null then x:=x||' and 1=1'; else X:=x||' and f_date =:search.day_date '; end if; ------------------------------------------------------ if :search.compony is null then x:=x||' and 1=1'; else X:=x||' and c_name like ''%'||:search.COMPONY||'%''' ; end if; ------------------------------------------------------ if :search.nation is null then x:=x||' and 1=1'; else X:=x||' and n_no ='||:search.nation ; end if; -------------------------------------------------------- if :search.sex is null then x:=x||' and 1=1'; else X:=x||' and sex ='||:search.sex ; end if; -------------------------------------------------------- if :search.f_type is null then x:=x||' and 1=1'; else X:=x||' and f_type ='||:search.f_type ; end if; ----------------------------------------------------- if :search.addrese is null then x:=x||' and 1=1'; else X:=x||' and addres =:search.addrese '; end if; ----------------------------------------------------- if :search.TALAPHON is null then x:=x||' and 1=1'; else X:=x||' and TALAPHON =:search.TALAPHON '; end if; ----------------------------------------------------- if :search.date1 is null or :search.date2 is null then x:=x||' and 1=1'; else X:=x||' and f_date between :search.date1 and :search.date2 '; end if; ----------------------------------------------------- set_block_property('files1',default_where,x); go_block('files1'); clear_block(no_validate); execute_query; ------------------------------------------------------------------------------------------------------------- go_block('files1'); last_record; i:=:system.cursor_record; first_record; for x in 1..i loop :name:=:files1.name1||' '||:files1.name2||' '||:files1.name3||' '||:files1.name4; next_record; end loop; ---------------------------------------------------------------------------------------------------------------- go_block('files1'); last_record; i:=:system.cursor_record; first_record; for x in 1..i loop if :files1.f_type=1 then :files1.f_type1:='ÚÜÇÏí'; elsif:files1.f_type=2 then :files1.f_type1:='ÔÜÑßÉ'; elsif :files1.f_type=3 then :files1.f_type1:='ÚÜÇÆáí'; end if; next_record; end loop; ------------------------------------------------------------------------------------------------------------------- go_block('files1'); last_record; i:=:system.cursor_record; first_record; for x in 1..i loop if :files1.n_no is null then :files1.n_no1:=null; else select n_name into :files1.n_no1 from nation where n_no=:files1.n_no; end if; next_record; end loop; first_record; END; --------------------- تم تعديل 14 فبراير 200917 سنة بواسطة Amgad تقديم بلاغ
بتاريخ: 14 فبراير 200917 سنة comment_149189 السلام عليكم اخى الفاضل .. للاسف لن استطيع ان اقدم لك جديد .. و لاكن اريد منك الجديد .. اذا امكن .. شرح بعض النقط بالكود و اطون شاكر لذلك جدا .. 1- كـود PHP if :search.TALAPHON is null thenx:=x||' and 1=1';elseX:=x||' and TALAPHON ='||:search.TALAPHON ;end if; و بالاخص السطر الثانى ..فما الفكرة التى مكتوبه هنا ؟اخى عندى ايضا استفسار .. و اعتقد انه ممكن يكون سبب فى البط .. مع انه المفروض لا يخرج بيانات اصلا و لاكن دعونا نرى :اخى انت قمت بعمل متغير اسمه x و قمت باستخدامه اكثر من مرة .. و اعتقد ان هذا .. سوف يقوم بعمل بطئ طبيعى جدا حيث ان قيمه المتغيرمتغيرة شكلا و موضوعا كل مرة . .. والله اعلم شكرا تقديم بلاغ
بتاريخ: 14 فبراير 200917 سنة كاتب الموضوع comment_149196 اخي انت لو كتبت هذا الاستعلام في sqlselect ename from emp where empno=1=1 and deptno=1=1;لايكون هناك اي تاثير بالبيانات بسبب الشرطفانا هنا اقول له اذاكان خانة رقم التلفون فاضى خلي x=1=1والا اعطي x:=050505050بما ان الاستعلام باكثر من قيمة سوف تتكون معي سلسلة من الشرط select ename from emp where x;ارجو ان تكون وصلت الفكره وهذه الطريقة جيده حيث تعطيك بيانت دقيقة ومظبوطة وتسمى الاستعلام المتقدم تقديم بلاغ
بتاريخ: 14 فبراير 200917 سنة comment_149200 السلام عليكمحركة اللوب LOOP فى الداتا بيز عندك لازم هتاخد وقت لانك بتنفذ الاستعلام باللوب ثم تتحقق من الشروط ؛ المقصود من كلامي ان الكود بتاعك بينفذ اللوب حتي لو لم يتحقق الشرط وقد تسال لما تنفذ اللوب حتى عندما لا يتحقق الشرط ؟ وذلك لان سيان BASIC LOOP - OR - FOR I IN كلاهما ينفذ اللوب ثم يتحقق من الشرط وحتى لا اطيل عليك فى الكلام فانصحك باستخدام while LOOP وسوف توفر لك ثلث الوقت على الاقل جرب وابلغناوشكراميجا تقديم بلاغ
بتاريخ: 15 فبراير 200917 سنة comment_149257 ابتعد عن استخدام Loop والـ PROCEDUREواستخدم FUNCTION مثل هذه FUNCTION Get_Cond RETURN VARCHAR2 IS Cond Varchar2(2000) := ' (1=1) '; BEGIN If :acc_num.w_yer is not null Then Cond:=Cond || ' And mtlb_yer = :acc_num.w_yer'; End if; If :acc_num.w_num is not null Then Cond:=Cond || ' And mtlb_num = :acc_num.w_num'; End if; Return ('where ' || cond); END; ثم عند الاستعلام استخدم SET_BLOCK_PROPERTY('****',DEFAULT_WHERE,get_cond); execute_query; SET_BLOCK_PROPERTY('****',DEFAULT_WHERE,'1=1'); تقديم بلاغ
بتاريخ: 15 فبراير 200917 سنة كاتب الموضوع comment_149285 اخواني وصات الى حل وهوعند البحث بالاسم انا عامل في الكود ان يحتوى حقل الاسم عل هذا الكلمة في البحثوهذا ياخذ وقت طويل select ename from emp where ename like '%'||:ename||'%'; والان عملت ان يبدا بالكلمة وطلع اسرع وتمام select ename from emp where ename :ename ||'%'; ----------------------------------------ارجو ان تكون اتضخت الفكره حتى يستفيد الجميع تقديم بلاغ
بتاريخ: 15 فبراير 200917 سنة comment_149291 السلام عليكم الحمد لله انك توصلت للحل قكرة الأخ / Mr_CoBoL فكرة ممتازه والكثير يستخدمها اقترح عليك استخدام الاسلوبين معا داخل البرنامج ... حسب اختيار المستخدم اقترح عليك ان تضيف على الشاشة ... اختيار للمستخدم مثل radio Button البحث فى حالة ان الاسم يبدأ ب .......... أوالبحث فى حالة ان الاسم يحتوى على ........... شكرا لك تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.