الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أبحث عن جملة إستعلام للحصول على سجلات من جدول

مغلق
بدأه abulyaman في 11 مايو 2005 · 18 رد · 2,352 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

إخوانى وأساتذتى الأفاضل

رغم أن عنوان المشاركة بسيط لكن تعبنى جدا

الفكرة من البداية:

عندى جدول Trans يتم فيه تسجيل العمليات مصنفة لأنواع JornalType وهذه العمليات تكون مدينة DTR أو دائنة CTR لتعكس العمليات مع العميل Cust_No المدين منها والدائن

وفى الغالب وهو الافتراضى أن يكون العميل مدين طبعا

والعميل عندما يسدد لا يحدد لى أى فواتير يسددها - فقط يعطينى مبلغ ويقول لى خصما من حسابنا

أريد عمل استعلام يعطى الفواتير Doc_No التى لم يتم تحصيلها بالكامل أو تم تحصيلها جزئيا والتى لم يتم تحصيلها

ولو كانوا ثلاث استعلامات لا بأس

هل الفكرة واضحة؟

أعانكم الله على مساعدتى

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

#2

السلام عليكم ورحمة الله وبركاته

إخوتى الأفاضل

ممكن يكون عندكم أفكار حتى وليس حل كامل

ياريت من لديه فكرة يشارك - والثواب من الله مضمون بإذن الله

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

#3

السلام عليكم و رحمة الله و بركاته

أخي العزيز / أيمن

اقتباس
ياريت من لديه فكرة يشارك - والثواب من الله مضمون بإذن الله

أتمنى أن يكون كذلك بإذن الله

أخي الكريم

أنت تتكلم عن ALLOCATED RECEIPTS و LUMP SUM RECEIPTS و هذا في حالة العملاء أما في حالة الموردون سيتغير التعبير إلى ALLOCATED PAYMENTS و LUMP SUM PAYMENT و هي تعبيرات عن الدفعات المحدد تفاصيلها و الدفعات على الحساب .

حقيقة أن هذه الميزة توجد في كثيراً من الحلول المالية و أنا أعتبرها مقياساً من المقاييس التي يجب أن تتواجد في كلاً من ACCOUNTS RECEIVABLE MODULE و ACCOUNTS PAYABLE MODULE الخاصين بالحل المالي و لو أردنا أن نترجم هذه الأفكار إلى واقع ملموس في قواعد البيانات فيجب علينا أن نوفر المقومات التي سوف تساعدنا على ذلك و منها

** يجب أن تعرف نوع القيد من حيث أنه INVOICE أو CREDIT NOTE أو DEBIT NOTE أو GOODS RETURN ، فهذه هي أنواع المستندات التي تعكس أنواع القيود التي يحتويها حساب مثل حساب المورد أو حساب العميل و التي سوف تخصص لها دفعة من عميل أو دفعة لمورد

** يجب عليك أن تدرج حقل يمكنك تسميته أياً شئت فليكن مثلاً AllocatedPayment في حالة المورد و حقل يمكن تسميته AllocatedReceipt في حالة العميل و تكون وظيفة الحقل هي تحديد الدفعة التي تم دفعها مقابل الفاتورة المعنية و يتم وضع هذا الحقل في الجداول التي تختص بإدخال الفواتير و أيضاً الأشعارات الدائنة و أيضاً الأشعارات المدينة و أيضاً سندات إرتجاع البضائع

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

رصيد العميل = الرصيد الأفتتاحي + الفواتير + الأشعارات المدينة - الأشعارات الدائنة - سندات أرتجاع البضائع - الدفعات المدفوعة الغير محددة الفواتير - الدفعات المدفوعة المحددة الفواتير

هذا هو الأمر

أما كيفية التلاعب و الوصول للغاية فهذا يعتمد على بنية قواعد البيانات التي بنيتها و على فكرك أنت و أبداعك و لا يسعني هنا في قليل من السطور شرحها لك لأنني عندما اتكلم عن الرقابة على العملاء و الرقابة على الموردون فيجب أن أتكلم عن الرقابة عن المخزون و يجب علي أن أتكلم عن الرقابة على أوامر الشراء ، فهي سلسة أخي الكريم و حلقة يجب أن تغلق بإحكام .

هذه هي بعض الخيوط التي أتمنى أن تنتفع بها

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

و أشكرك

و السلام عليكم و رحمة الله و بركاته

itasmallbanner.png
#4

السلام عليكم

اولا تعليق بسيط ( الثواب مضمون كلمة من الممكن استبدالها بدعا لأننا ندعو والثواب على الله)

ثانيا لم افهم المسالة تماما ولكن ممكن ان تعمل مايلي

ان تعمل حقلين احدهما مدين والأخر دفع الحساب

وتعمل select يقوم بايجاد الفارق بين الأثنين فان كانت القيمة تساوي قيمة المدين فهذ يعني ان الشخص لم يسدد اي فاتورة

او تخزن حساب الفواتير في جدول اخر يتكون من رقم الزبون ومبلغ التسديد,وليكن(x1) وتاريخ التسديد وتقوم بعمل

select يربط بين الجدولين ويختبر ارقام الزبون الذي لم يظهر في الجدول الثاني

اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#5

السلام عليكم ورحمة الله وبركاته

أخى الفاضل khwlani

اقتباس
اولا تعليق بسيط ( الثواب مضمون كلمة من الممكن استبدالها بدعا لأننا ندعو والثواب على الله)

بارك الله فيك وجزاك خيرا عن نيتك الطيبة

عندما كتبت ما سبق كان فى بالى كلام المصطفى صلى الله عليه وسلم فى الحديث

اقتباس
عن ابي هريرة - رضى الله عنه - قال: قال رسول - الله صلى الله عليه وسلم -

من ستر اخاه المسلم في الدنيا ستره الله في الاخرة ومن نفس عن اخيه كربة من كرب الدنيا نفس الله عنه كربة يوم القيامة والله في عون العبد ما كان العبد في عون اخيه (رواه الإمام أحمد فى مسنده)

وهو من لا ينطق عن الهوى

وآسف لو كان أسلوبها إستفذاذى بعض الشئ

أما بخصوص ثانيا

اقتباس
ثانيا لم افهم المسالة تماما ولكن ممكن ان تعمل مايلي

ان تعمل حقلين احدهما مدين والأخر دفع الحساب

وتعمل select يقوم بايجاد الفارق بين الأثنين فان كانت القيمة تساوي قيمة المدين فهذ يعني ان الشخص لم يسدد اي فاتورة

او تخزن حساب الفواتير في جدول اخر يتكون من رقم الزبون ومبلغ التسديد

فكلامك صحيح وهو المطبق فى ما لدى من بيانات

وهو ليس ما أسأل عنه - جزاك الله كل خير

فأنا أسأل عن السجلات سطر بسطر وليس الفرق بين المبالغ

لو تكرمت ورجعت للمشاركة لعرفت قصدى

أريد أن أستخرج من كل الفواتير - الفواتير التى لم تغطى بالمبالغ المحصلة

سأعيد مثالا قد يفسر كلامى

افترض أنك عميل عندنا - ودا شرف كبير لينا طبعا-

وعلى مدار الثلاث أشهر الماضية بعنا لك بضاعة بمبالغ 50 و 65 و 48 و 72 و 65 أى ما يساوى 300

وتفضلت وأرسلت لنا شيك بمبلغ 200

بالفعل تم تسجيل الفواتير فى الجانب المدين بمبالغ مجموعها 300

وتم تسجيل تحصيلك دائن بمبلغ 200

لكنى أريد أن أعرف ما هى الفواتير التى لم يتم تحصيلها بالكامل مثل آخر 65 ، والتى تم تحصيلها جزئيا مثل 72 والمتبقى منها

والتى تم تحصيلها مثل الـ 50 و 65 و 48

يمكن هذا المثال يكون وضح قصدى؟

أما ردى على الأستاذ الكبير حميد (PATCH DEVELOPER)

كلامك جميل وممتاذ

ولكن مشكلتى أنى وجدت البيانات بشكلها الذى أصفه لحضراتكم وهى ليست من تصميمى

ونحن بصدد نقل هذه البيانات لبرنامج آخر يتطلب إدخال الفواتير بطريقة قريبة جدا لطريقتك ويحدد ما تم تحصيله ما لم يتم

وهذه بيانات يعمل عليها قسم المحاسبة هنا من أكثر من عشر سنوات بالطريقة سالفة الذكر Lum Sum كما تفضلت وعرفتها

وطبعا التدخل بالإلغاء سجل بسجل يدويا سيستهلك وقتا طويلا وينطوى على العديد من المخاطر - تصل لحد المجازفة -

ولا أدرى لماذا أشعر أنى أستطيع الوصول لهذه النتيجة بصورة أدق وأسرع مادمت أملك البيانات فى سيكول سيرفر

- لعلى لست متفائلا زيادة عن اللزوم -

أليس هناك طرق باستخدام Sub Query - مثلا - تعطينى الفواتير مرتبة عكسيا حسب التاريخ بحيث قيمتها أقل من فرق الرصيد المدين و الدائن مجمعة بكود العميل ؟

ولقد حاولت إعطاء أسماء الحقول فى المشاركة السابقة لتسهيل المثال على من يتطوع به

ومع تحوير هذا الكويرى نحصل على المسدد والغير مسدد والفرق بينهما يكون المسدد جزئيا؟

هل خيالى فى هذا الصدد واقعى أم شطحت؟

حقا أعذرونى لأنى بدأت مع السيكول سيرفر من وقت قريب جدا وخبرتى به ضحلة فى تقييمى الشخصى

بارك الله لكم تفاعلكم معى ورزقكم من علمه الواسع وبارك فى ذرياتكم وأصلح لكم أعمالكم ونياتكم

ربنا لا سهل إلا ما جعلته سهلا وأنت تجعل الحزن إن شئت سبحانك سهلا

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

#6

السلام عليكم و رحمة الله و بركاته

أخي العزيز / أيمن

اقتباس
ولا أدرى لماذا أشعر أنى أستطيع الوصول لهذه النتيجة بصورة أدق وأسرع مادمت أملك البيانات فى سيكول سيرفر

- لعلى لست متفائلا زيادة عن اللزوم -

أحساسك صدق بإذن الله و أكثر مما أنت تتخيله ، فأخي الكريم مادمت نويت نقل بياناتك على أس كيو أل سيرفر فأنت بإذن الله في الجانب الرابح ، فسوف تفوز بقدرة عجيبة على تحوير البيانات و التعامل معها بليونة و يسر فوق ما تتصور بالأدوات العظيمة في أس كيو أل سيرفر

هل تتخيل أدخال مليون صف بطريقة مبرمجة ؟

و هذا طبعاً لغرض أختبارات الأداء على أجهزة السيرفر و الكلاينت ، طبقتها و قد أخذت مني 7 دقائق و بعض الثواني على شبكة تركب كروت 10/100

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

أخينا الكريم أيمن

أمددنا بمخطط بسيط يوضح المشكلة على شكل مثال بحيث يحتوى على تركيب الجداول القديمة و الجداول الجديدة التي سوف يتم نقل البيانات لها حتى يتسنى لنا أن نصف لك الحل بوضوح

رغم أنه من أسألتك و مقالاتك السابقة أعرف أنك كنت تنوي الدمج بين قاعدتي بيانات منفصلتين و لا أعلم إلى أي مرحلة وصلت في الأستعلامات المبنية على أكثر من قاعدة بيانات و لكن أن كنت قد تعديت هذه المرحلة ووصلت لعدم جدواها ، فسوف تجدنا إن شاء الله بجانبك حتى تنجح في الأقلاع بقواعد بياناتك المبنية على أسس جديدة

أما بالنسبة للعرض البسيط للمشكلة الخاصة بك و الذي أوجزته كما يلي

اقتباس
وعلى مدار الثلاث أشهر الماضية بعنا لك بضاعة بمبالغ 50 و 65 و 48 و 72 و 65 أى ما يساوى 300

وتفضلت وأرسلت لنا شيك بمبلغ 200

بالفعل تم تسجيل الفواتير فى الجانب المدين بمبالغ مجموعها 300

وتم تسجيل تحصيلك دائن بمبلغ 200

لكنى أريد أن أعرف ما هى الفواتير التى لم يتم تحصيلها بالكامل مثل آخر 65 ، والتى تم تحصيلها جزئيا مثل 72 والمتبقى منها

والتى تم تحصيلها مثل الـ 50 و 65 و 48

يمكن هذا المثال يكون وضح قصدى؟

فإن الحل ببساطة شديدة يتم عن طريق إجراء مخزن عادي جداً و الفكرة ببساطة وضع مجموع الجانب المدين في متغير ثم فتح مؤشر يتحرك عبر الصفوف لأستعلام كل حركات الجانب الدائن مرتباً بشكل تصاعدي ثم البدء في خصم قيمة القيد من قيمة المتغير الموضوع فيه المجموع و يتم تعديل قيمة الصف إلى صفر و يتم الأنتقال إلى الصف الثاني طالما أن قيمة المتغير الموضوع فيه المجموع لم تصل إلى صفر

و النتيجة ببساطة هي القيود أو مجموعة الفواتير التي لم يتم دفعها و هذا إن إردنا أن يتم خصم الفواتير القديمة أولا من مجموع الدفعات ثم الأحدث فالأحدث

*** ملحوظة : يفضل أن تضع كل القيود المدينة في جدول مؤقت عمومي أو محلي منفصل و تضع القيود الدائنة في جدول مؤقت عمومي أو محلي منفصل إيضاً

و أنت عليك يا أبا اليمن أن تترجم ما قلته عملياً

و بالتوفيق

تم تعديل هذه المشاركة بواسطة PATCH DEVELOPER في 14 مايو 2005 في 17:09

itasmallbanner.png
#7

السلام عليكم

اؤيد كلام الاستاذ حميد ولكن بافتراض ان الادخال في النظام متوقف و مطلوب عمل المقارنة وتوزيع المبالغ لمرة واحدة فقط

والا فيجب اخي الكريم اضافة مؤشر لجدول الفواتير يبين انه تم التسديد او اضافة جدول خاص بالتسديدات يوضع فيه رقم الفاتورة والمبلغ الاجمالي ورقم قيد التسديد والمبلغ المسدد

وتستخدم نفس الالية التي تكلم عنها الاستاذ حميد للاضافة للجدول و الاستعلام منه عن الفواتير التي يكون الفارق بين اجمالي الفاتورة و المبلغ المسدد لايساوي الصفر لمعرفة الفواتير الغير مسدده والمسدد جزء منها

يمكن الشرح غير دقيق لكن اظن الفكرة واضحة

و دمتم

#8

السلام عليكم ورحمة الله وبركاته

أخوانى وأساتذتى الأفاضل

بارك الله فيكم وفى اجتماعكم على مساعدتى

والحمد لله أن جعلكم فى طريقى - وبإذن الله سيعيننا على حل مسألتى

بخصوص البيانات فهذه هى السكريبت الذى صمم الجدول المراد العمل عليه

CREATE TABLE [dbo].[TRANS] (
	[CUS_NO] [float] NULL ,
	[DR] [float] NULL ,
	[CR] [float] NULL ,
	[RE_NO] [float] NULL ,
	[RE_DAT] [smalldatetime] NULL ,
	[RE_TYP] [float] NULL ,
	[DISC] [nvarchar] (255) COLLATE Arabic_CI_AS NULL ,
	[CHICK] [float] NULL 
) ON [PRIMARY]
GO

وعندما أردت الحصول على الفواتير التى لم تسدد كتبت هذا الاستعلام

   Select T.cus_no,T.Re_NO,T.Re_DAT,T.DR  From trans T 
	Where T.DR >0 And T.Cus_No IN 
	(Select T.cus_no
	From trans T 
	Group by T.cus_no
	Having sum(DR) > sum(CR) 
	) 
	Order By T.Re_DAT Asc

ولكنه خطأ وهو ليس ما أريده

فهو يعطى كل الفواتير للعملاء المدينين

وليس المتبقى منها فقط

بخصوص رأى الأستاذ حميد

اقتباس
و الفكرة ببساطة وضع مجموع الجانب المدين في متغير ثم فتح مؤشر يتحرك عبر الصفوف لأستعلام كل حركات الجانب الدائن مرتباً بشكل تصاعدي ثم البدء في خصم قيمة القيد من قيمة المتغير الموضوع فيه المجموع و يتم تعديل قيمة الصف إلى صفر و يتم الأنتقال إلى الصف الثاني طالما أن قيمة المتغير الموضوع فيه المجموع لم تصل إلى صفر

و النتيجة ببساطة هي القيود أو مجموعة الفواتير التي لم يتم دفعها و هذا إن إردنا أن يتم خصم الفواتير القديمة أولا من مجموع الدفعات ثم الأحدث فالأحدث

معلش أخوك مش بالمستوى ده أنى أقدر أعمل مؤشرات - أنا بسمع عنها بس

وكمان مؤيد فكرة أخونا NASH1 الله يبارك له

اقتباس
او اضافة جدول خاص بالتسديدات يوضع فيه رقم الفاتورة والمبلغ الاجمالي ورقم قيد التسديد والمبلغ المسدد

ولكن أنا أحاول التعامل مع وضع قائم بالفعل ولا أعيد تصميم البرنامج

ولكن من كلامك خطر لى أن أتجنب فكرة إلغاء الفواتير ولكن بدلا من ذلك أعطيها Flag يبين حالة السداد مثلا 0 = مسدده ، 1= مستحقة ، و2 = مسدده جزئيا ممكن هذا يكون أفضل فى فرزها حسب حالتها

لكى لا أطيل عليكم - أعانكم الله

يا ريت يا أخى PATCH DEVELOPER

تكتب لى الكود اللى بيعمل المؤشرات على هذا الجدول ويكتب فى حقل جديد سأضيفه للجدول Trans قيمة من القيم التى عرضتها مثل 0،1،2 حسب حالته من السداد

أو أى اقتراح بديل

**** ملحوظه ****

أرفقت ملف إكسل فيه عينه من البيانات الحقيقية واستعلام بيعرض نتيجة استعلام بالعملاء اللى عليهم مديونية

Customer Invoices.zip

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

#9

السلام عليكم و رحمة الله و بركاته

و الله جميل جداً

VERY NICE

السلام عليكم و رحمة الله و بركاته

تابع موضوعك و سوف يصلك الحل بإذن الله يا أبو البل؟ ، أنت عارف طبعاً

itasmallbanner.png
#10

السلام عليكم ورحمة الله وبركاته

دعواتك والله يا أستاذنا

لو تعرف أنى بدأت مع السيكول من كام شهر بس

والشهر الماضى نجحت فى 70229 بعون الله مش شطارة منى

بس موضوع المؤشرات دا ماخدناهوش فى الكورسات 2071 ولا 2073 اللى درستهم

مع أنه ورد فى الامتحان

تم تعديل هذه المشاركة بواسطة abulyaman في 15 مايو 2005 في 14:07

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

#11

حاول مع هذا الكود وان شا الله يكون صح

Select T.cus_no,T.Re_NO,T.Re_DAT,T.DR  From trans T 
Where T.DR >0 And ( T.CR < T.DR)

Order By T.Re_DAT desc

ولكن ياخي هناك ثغرة في تركيب الجدول

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

كما ان الجدول لا يحتوي علىPrimary key ومن الصعب ان تقوم بالتعديل في سطر معين

الفكرة السابقةتدل على ان CR متعلقة فقط في هذه الفاتورة وليست متعلقة بكل الفواتير

ويمكن عند تسديد مبلغ من الحساب ان تعدل كل قيم ال CR بحيث تساوي في حد اقصاهDR

تم تعديل هذه المشاركة بواسطة khwlani في 17 مايو 2005 في 00:24

اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#12

السلام عليكم ورحمة الله وبركاته

أخى الفاضل khwlani

أشكر لك محاولة مساعدتى - وأسأل الله عز وجل أن يهدينا سواء السبيل

لو رجعت لملف الإكسل المرفق أعلاه - لوجدت أن السجل الواحد يسجل العملية المدينة أو الدائنة

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

الحركة إما تكون مدينة أو دائنة - إلا إن كنت تقصد شيئا لم أفهمه

وبناء على ذلك فالاستعلام الذى ذكرته لن يعطى أى دائن لأن CR<DR سوف تعنى CR<0

وفى باقى الاستعلام لن يفصل لى الفواتير المحصلة وغير المحصلة والمحصلة جزئيا - وهو محور سؤالى

حقيقة أنا متوقع خيرا من فكرة أخونا PatchDeveloper بخصوص المؤشرات فهى تشير على الطريق الذى أسأل عنه

ولكن مازلت لا أعرف كيف أعملها

ما زال الموضوع مفتوح

وكلى أمل فى الله يهدينا للحل المناسب

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

#13

السلام عليكم و رحمة الله و بركاته

أخي الكريم أبو اليماني

إن شاء الله سوف أرفع الأجراء المخزن و أرجوا منك المعذرة في تأخري فأنا فعلا مشغول جداً هذه الأيام

و السلام عليكم و رحمة الله و بركاته

itasmallbanner.png
#14

السلام عليكم و رحمة الله و بركاته

أخي الكريم أبو الياماني

هذا هو الكود الذي وعدتك به ، فأرجوا أن يكون به مثال واضح لكل قراء هذا الموضوع عن كيفية توظيف أدوات أس كيو أل سيرفر في خدمة التحليلات المالية

و أرجوا لك التوفيق في حياتك المهنية و لكل قراء المنتدى

و هذا هو الكود

/* we have to make sure that the stored procedure did't exist on our database */

if exists ( select name from sysobjects where name = 'Statement' and type = 'p')
drop procedure Statement

go

/* THIS IS THE FIRST STEP OF CREATING THE STORED PROCEDURE*/

create procedure Statement @CustNo float,@ClosingDate smalldatetime 
as set nocount on /* DECLARATION OF THE VARIABLES THAT I WILL USE ON THE DATA PROGRAMMING */

declare @totalcr as decimal ,@totalcrqury as decimal , @totaldr as decimal , @drval as decimal , @adv as varchar(200)
declare @cus_noVal as float,@crVal as decimal,@re_noVal as float ,@re_datVal as smalldatetime ,@re_typVal as float , @DiscVal as nvarchar(255) 
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ContainerDr]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[ContainerDr]
/* YOU CAN CHANGE THE NEXT STEP OF BUILDING THE TABLES WITH MAKING TEMPORARY TABLE */

CREATE TABLE [dbo].[ContainerDr] (
	[SerialNO] [int] IDENTITY (1, 1) NOT NULL primary key clustered ,
	[Cus_No] [float] NULL ,
	[DR] [decimal](18, 2) NULL ,
	[CR] [decimal](18, 2) NULL ,
	[Re_No] [float] NULL ,
	[Re_DAT] [smalldatetime] NULL ,
	[Re_Typ] [float] NULL ,
	[DISC] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL 
) ON [PRIMARY]






if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ContainerCr]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[ContainerCr]


CREATE TABLE [dbo].[ContainerCr] (
	[SeriolNO] [int] IDENTITY (1, 1) NOT NULL primary key clustered ,
	[Cus_No] [float] NULL ,
	[DR] [decimal](18, 2) NULL ,
	[CR] [decimal](18, 2) NULL ,
	[Re_No] [float] NULL ,
	[Re_DAT] [smalldatetime] NULL ,
	[Re_Typ] [float] NULL ,
	[DISC] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL 
) ON [PRIMARY]



if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AdvanceZeroBalances]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[AdvanceZeroBalances]


CREATE TABLE [dbo].[AdvanceZeroBalances] (
	[SerialNo] [int] IDENTITY (1, 1) NOT NULL primary key clustered ,
	[Cus_no] [float] NULL ,
	[Dr] [decimal](18, 2) NULL ,
	[Cr] [decimal](18, 2) NULL ,
	[Balance] [decimal](18, 0) NULL 
) ON [PRIMARY]


/* THIS THE STAGE OF FEEDING THE DATA INTO OUR TABLES TO MANIPULATING MY DATA ON IT */

insert into ContainerDR select cus_no,dr,cr,re_no,re_dat,re_typ,disc from CustDetails where dr <>0 and Cus_no = @CustNo and Re_dat <= @ClosingDate order by re_dat
insert into ContainerCR select cus_no,dr,cr,re_no,re_dat,re_typ,disc from custdetails where cr <>0 and Cus_no = @CustNo and Re_dat <= @ClosingDate
select @totalcr = isnull(sum(cr),0) from ContainerCR select @totalcrqury = isnull(sum(cr),0) from ContainerCR select @totaldr = isnull(sum(dr),0) from containerdr set @adv = convert(varchar,@totalcr-@totaldr)

/* HERE WE ARE ON THE STAGE OF CONDITIONING THAT IF TOTAL OF CREDIT SIDE GREATER THAN OR EQUAL THE VALUE OF DEBIT SIDE THEN 
YOU HAVE TO FILL THE TOTALS OF CREDIT AND DEBIT SIDES ON THE TABLE ADVANCEZEROBALLANCES */

if @totalcr >= @totaldr 
insert into advancezerobalances (cus_no,dr,cr,balance) values (@custno,@totaldr,@totalcr,(@totaldr-@totalcr))

/* AND IF THE TOTAL OF DEBIT SIDE IS GREATER THE CREDIT SIDE THEN START THE CURSOR TO MOVE THROUGH OVER THE ROWS OF THE CONTAINERDR */ 
else 
if @totalcr < @totaldr
begin declare TempoA cursor 
scroll
for select cus_no,dr,cr,re_no,re_dat,re_typ,disc from containerdr open tempoa
fetch next from tempoa into @cus_noval,@drval,@crval,@re_noval,@re_datval,@re_typval,@discval while @totalcr > @drval
			begin set @totalcr = @totalcr - @drval
			update containerdr set dr = 0 where current of tempoa
			fetch next from tempoa into @cus_noval,@drval,@crval,@re_noval,@re_datval,@re_typval,@discval end
			update containerdr set dr = @drval-@totalcr where current of tempoa

close tempoa
deallocate tempoa
insert into advancezerobalances (Cus_no,dr,cr) select Cus_no,dr,cr from containerdr where dr <>0

end
select * from advancezerobalances /* THANKS FOR EVERYBODY */

/* THIS CODE GENERATED BY PATCH DEVELOPER AND IF THERE IS ANY REMARKS PLEASE DON'T HESITATE TO CONTACT ME*/

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

فيجب عليكم أخواني أستيراد البيانات من ملف الأكسل المرفق في المشاركة السابقة للأخ أبو اليماني

و إن كان بهذا الكود إي ملاحظات فأرجوا من الأخوة تصحيحي

و أشكركم

و السلام عليكم و رحمة الله و بركاته

CustomerStat.zip

itasmallbanner.png
#15

السلام عليكم ورحمة الله وبركاته

بصراحة أستاذ وعملاق كبير

مش عاوز أجاملك لأنى عارفك متواضع وما بتحبش كده

أنا بذاكر فى الكود من الصبح

بس كان بيعترض على custdetails هل تقصد بيها الجدول Trans اللى ذكرته أنا فى مشاركتى ولا إيه؟

ولسه ما كملتش مذاكرته وهجربه وبإذن الله هينفع

دعواتى لك لوجه الله خالصه لن أذكرها هنا

وهو سبحانه يجيب المضطر إذا دعاه

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

#16

السلام عليكم و رحمة الله و بركاته

شكرا على كلامك

أخي الكريم الجدول CUSTDETAILS هو الجدول الخاص بتفاصيل القيود التي وضعتها في ملف الأكسل و عددها تقريباً 10000 صف

و قد صممت الجدول CUSTDETAILS و لم أدرج به حقل لرقم الشيك كما وضعت أنت فإعذرني لذلك و لكن القضية الأساسية هنا وهي تفاصيل الفواتير بعد خصم إجمالي الدفعات من الفواتير القديمة بحيث ان الرصيد المتبقي يكون مجموعة من الفواتير تعبر عن الرصيد النهائي للعميل

و في حالة تساوي مجموع الجانب المدين و مجموع الجانب الدائي تكون النتيجة صفر أيضاً تعرض

و في حالة أن يكون هناك دفعات مقدمة من العميل إيضاً تعرض كأنها رقم سالب

و قد وضعت هنا الأجراء المخزن بحيث أن تقبل باراميتر و هو تاريخ الأقفال أو أخر تاريخ للحركات المدخلة في الجدول CUSTDETAILS و الباراميتر الأخر هو لإدخال كود العميل

فأرجوا أن يكون هذا هو مطلبك ، و لك أن تعدل فيه كما تشاء

و شكراً

و السلام عليكم ورحمة الله و بركاته

itasmallbanner.png
#17

السلام عليكم ورحمة الله وبركاته

والله مش عارف أشكرك إزاى يا أخ حميد

ولكن ربنا يجزاك خير على قدر ما تابعت موضوعى وأسهمت فيه بقوة وكل الأخوة الأفاضل الماشركين

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

وحليت المسألة بالفيجوال بيزك 6

ولكنه ينفذ ما اتفقنا عليه فى هذا الموضوع

وسأرفقه هنا لتعم الفائدة لمن قد يواجه مثل تلك المشكلة

وربنا يعينكم على كل أموركم كما أعنتمونى

وربنا يرضا عنكم وعن ذرياتكم ويطرح البركة فيهم ليوم الدين

Accounts_Invoices.zip

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

#18

السلام عليكم و رحمة الله و بركاته

أخونا أبو اليمان

حقيقة المجهود المبذول في حلك و تطبيقك بإستخدام فيجوال بيسك 6 ممتاز و جميل و قد بذل فيه الكثير من المجهود و به كثيرا من الأكواد الموضوعة بواسطة مبرمج متمرس ، و أنا أحييك عليه

و أشكرك على أهتمامك ووضع الكود لنا مفتوح

و اسأل الله أن أصل لمستواك في برمجة الفيجوال بيسك و لكن دوت نت

و أسأل الله أن يعطيك من علم برمجة قواعد البيانات بأستخدام أس كيو إل سيرفر الكثير و أن تطور نفسك على الدوام

و أتمنى لك التوفيق

و السلام عليكم و رحمة الله و بركاته

itasmallbanner.png
#19

السلام عليكم ورحمة الله وبركاته

والله أخجلتنى يا أستاذنا

عموما ربنا يزيدنا من علمه الواسع ويزيدنا تقوى فهى خير زاد

لكن لعلمك الكود ده إتعمل فى حوالى ساعتين تلاته

لأن كل حاجة جاهزة معايا بس قص ولصق

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

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…