إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

كيف يمكن الحصول على السجل السابق ؟؟؟


7 رد (ردود) على هذا الموضوع

#1 Delicate_Shadow

Delicate_Shadow

    مشترك

  • الأعضــاء
  • 172 مشاركة

تاريخ المشاركة 05 September 2005 - 04:47 PM

السلام عليكم
شباب أبغى اعرف كيف استعمل قيمة موجوده في السجل السابق للسجل اللي أنا فيه
يعني مثلاً اذا كانت القيمة الموجوده في الحقل السابق 100 فا اللي بعدة راح تكون 100+5 فرضاً
طبعاً الموضوع اللي عندي اعقد من كذا بكثير
و المشكلة الأكبر انها لازم تتم خلال select statement يعني ما اقدر استعمل جدول أو trigger
أو اذا ممكن استعملها في التقارير مع العلم ان الجملة عبارة عن 6 جمل مع union و المشكلة هذي في حالة وحدة بس من ال6 حالات
اتمنى اني شرحت المشكلة بشكل واضح
و ألف شكر على تعاونكم مقدماً
صورة

#2 Delicate_Shadow

Delicate_Shadow

    مشترك

  • الأعضــاء
  • 172 مشاركة

تاريخ المشاركة 05 September 2005 - 06:24 PM

شباب لقيت FUNCTION اسمها LAG

بس مشكلتها انها تجيب القيمة الموجودة في الجدول مو القيمة الموجودة في الاستعلام
فا أنا مازلت في انتظار اقتراحاتكم
صورة

#3 Delicate_Shadow

Delicate_Shadow

    مشترك

  • الأعضــاء
  • 172 مشاركة

تاريخ المشاركة 05 September 2005 - 06:27 PM

هذا شرح الـFUNCTION
http://www.adp-gmbh....ytical/lag.html
صورة

#4 SQL_STAR

SQL_STAR

    عضو

  • الأعضــاء
  • 5 مشاركة

تاريخ المشاركة 12 September 2005 - 03:08 AM

اشكرك اخي على هذا االشرح المبسط
وجزاك الله الف خير
ونحن في انتظار الدرس القادم
وشكرا

#5 MohamedAliSalim

MohamedAliSalim

    عضو

  • الأعضــاء
  • 3 مشاركة

تاريخ المشاركة 29 November 2008 - 11:18 AM

ياريت حد يقولي الدالة دي بتتنفذ ازاي مع السيكول سيرفر 2005
لأني لم استطيع ان اطبقها في السيكول سيرفر

#6 K a n d i L

K a n d i L

    عضو نشط

  • الأعضــاء
  • 205 مشاركة
  • الاسم الأول:M
  • اسم العائلة:K
  • البـلـد: Country Flag
  • المنصب الحالي:Oracle Applications Technical Consultant

تاريخ المشاركة 05 December 2008 - 10:09 PM

اخي بارك الله فيك ممكن تشرح المشكلة بتفصيل أكثر

قال رسول الله صلى الله عليه وسلم « من كان في حاجة أخيه كان الله في حاجته » صحيح البخاري

 

Mohammed Kandil
Oracle Applications Technical Consultant

 


#7 MMA

MMA

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,019 مشاركة
  • الاسم الأول:Mostapha
  • اسم العائلة:Abd El-Salam
  • البـلـد: Country Flag
  • المنصب الحالي:المؤسسة المصرية لتبسيط العلوم - عضو مؤسس - مستشار تقني

تاريخ المشاركة 06 December 2008 - 01:20 AM

ياريت حد يقولي الدالة دي بتتنفذ ازاي مع السيكول سيرفر 2005
لأني لم استطيع ان اطبقها في السيكول سيرفر


الأخ الكريم ، عليك دائماً أن تميز بين نوع ونوع من قواعد البيانات ... فالـ SQL-Server غير Oracle وغير Access وغير FoxPro وغير MySQL وغير DBase وغير DB2 و غير .......................... الي آخرة

فبدايتاً يجب أن تعلم أن هناك فرق بين سيكوال وأوراكل ، ونحن الآن في منتدي أوراكل وليس سيكوال !!!

عموماً أنا وجدت الأمر LAG داخل SQL-Server 2000 ولكنني لم أتعامل مع هذه الوظيفة من قبل ، حتي داخل أوراكل نفسها ، بس من الواضح أنها دالة لزيزة ونشكرك علية.

لكن كمبدئياً يمكنك إستخدام الكونسيبت الذي يمكننا تطبيقة علي أي نوع آخر من أنواع قواعد البيانات مثل السيكوال والأكسيس والأوراكل ، أنظر الكود :


CREATE TABLE EMPLOYEES
(
  EMPLOYEES_NO   NUMBER(10),
  EMPLOYEES_NAME VARCHAR2(30),
  CONSTRAINT PK_EMPLOYEES PRIMARY KEY(EMPLOYEES_NO),
  CONSTRAINT UQ_EMPLOYEES_NAME UNIQUE(EMPLOYEES_NAME)
)
/
INSERT INTO EMPLOYEES VALUES(1,'Ahmed');
INSERT INTO EMPLOYEES VALUES(2,'Mostapha');
INSERT INTO EMPLOYEES VALUES(3,'Sara');
COMMIT;

-- Next Record --
SELECT EMPLOYEES_NO, (SELECT MIN(E.EMPLOYEES_NO) 
					  FROM EMPLOYEES E 
					  WHERE E.EMPLOYEES_NO > EMPLOYEES.EMPLOYEES_NO) 
					  AS NEXT_EMPLOYEE 
FROM EMPLOYEES;

-- Back Record --
SELECT EMPLOYEES_NO, (SELECT MAX(E.EMPLOYEES_NO) 
					  FROM EMPLOYEES E 
					  WHERE E.EMPLOYEES_NO < EMPLOYEES.EMPLOYEES_NO) 
					  AS NEXT_EMPLOYEE 
FROM EMPLOYEES;


عموماً سأحاول علي قدر إستطاعتي البحث عن الأمر LAG داخل السيكوال وسأخبرك بمشيئة الله تعالي

أما بخصوص الأوراكل فيمكنك تطبيق المثال السابق ، أو تطبيقة علي الأوراكل كما يل :

select employees_no, (lag(employees_no,1) over (order by employees_no)) As Next_Employee from employees;

وأللي فهمتة من هذه الدالة أنها بتبسط عملية الجلب للسجل التالي بإستخدام تركيبة (lag(employees_no,1) over (order by employees_no)) ، حيث بدأ بالجملة lag وتم تحديد الحقل الذي سيجلب منه القيمة Employees_No ، وبعد كدة حددنا الخطوة ألي هيختوها ، والخطوة هو نقل قيمة حقل Employees_No الي السجل التالي ، لكن لو حبينا ننقلها للسجل بعد التالي ، يبقي هنغير قيمة الخطوة من 1 الي 2 .... وهكذا.

أما بخصوص over (order by employees_no) فدة علشان يعمل ترتيب تصاعدي للحقل المحدد ، علشان يجلب القيمة سواء تصلعدياً أو تنازلياً.


مفيش أحسن من شغل الكونسيبت !!!!



بالتوفيق

مهندس/ مصطفي محمود عبد السلام   
العضو المؤسس بالمؤسسة المصرية لتبسيط العلوم
والمستشار التقني

(برمجيات - نظم معلومات - شبكات)

.

 

( 01098570165 )

.

.

.

( MMA_Programmer@Yahoo.com )

 


#8 khaledmega

khaledmega

    عضو مميز

  • الأعضــاء
  • 838 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 08 December 2008 - 12:20 AM

السلام عليكم
بداية كل عام وانت بخير ؛ اولا هي دالة متميزة وقد اسعفتني من قبل فى اكثر من عمل وخاصة التقارير ؛ ولكن لو لاحظت انها فى عرضها للناتج تجد هناك عمودين الاول وهو الرقم الوظيفي مثلا وبه 14 بيان والحقل الثاني به 11 بيان هذا لو انك جعلت فى ALG 3 وعليه يقوم بعرض 3 اول حقول خالية اى NULL ؛ دعنا نعكس الامور ففرضا ان الناتج المرتجع به اول 3 حقول خالية NULL وانت تريد ان يقوم المؤشر على الفورم بالوقوف والقراءة على الريكورد الرابع الذى به قيمة ؛ هل جربتها من قبل ؟ :(
وشكرا
ميجا
مبرمج اوراكل بوزارة الانتاج الحربي
محاضر اوراكل بمركز الدراسات والبحوث

تم التعديل بواسطة khaledmega, 08 December 2008 - 12:21 AM.


من أهـم مواضــيعي :



نفسك تسطب اوراكل 10g وبالصور وتربط بين الداتابيز والديفولبر ؟


للأستفسار عن أى شيء يخص الأوراكل أبس أو اوراكل ديفولبر راسلنى على

e
ng-mega@hotmail.com

 

Oracle Apps Techno-Functional Consultant


Oracle Developer & Instructor

 

Instructor At Next Academy

 

محاضر معتمد لدي نكست أكاديمي

OCA - OCP

م / خالد الشاذلي