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

جداول مؤقته

مغلق
بدأه egyman في 23 أبريل 2005 · 7 رد · 1,046 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

يا خبراء الsql server

عندس سؤال واحد فقط لا غير................

-------------------

عندي قاعدة بيانات sql server

و بالطبع النظام موضوع على جهاز الsever داخل الشبكة

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

.......................

و لأن النظام يعمل على شبكة... فإن هذه الخطوة ستكون خطرة

فماذا تنصحوني..

هل أغلق التقرير للمستخدم حتى يتنهى المستخدم السابق له من استعمال التقارير (أى الجداول المؤقته)

أم عند انشاء المستخدمين أقم بإنشاء جدول لكل مستخدم يكون هو الجدول الإحتياطي الخاص به

و شكراًًًًًًًًًًًًًًًًًًًًًًًًًًاااااااااااااااااااااااااااااااااااااااااااااااااااااااااااا :o

سبحان الله و بحمده سبحان الله العظيم

أبو كريم و مازن و نور

vb.net - c# - asp.net - oracle - sql server

manager@tm-center.com

00966508268649

#2

فقط عندما يحتاج المستخدم لانشاء التقرير قم بانشاء جدول مؤقت

create table #TempTable
(
Col1 char(20)not null,
Col2 Int,
Col3 datetime
)

و إدخال البيانات

insert into #TempTable values('Mohammed','3','03/03/2005')

و لحذف الجدول المؤقت بعد الانتهاء من استخدامه

Truncate Table #TempTable

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#3

بسم الله الرحمن الرحيم

شكراً أخي طارق على ردك

و الذي اتضح منه انك توافق على الرأي الأخر

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

شكراً لك

..

و لكن ألا يضر كثرة الإلغاء و الإضافة قاعدة البيانات

...

كما أريد ان أسئلك هل يمكن عند غنشاء جدول جديد أن يكون الهيكل الخاص به هو نفس هيكل جدول موجود مسبقاً و شكراً لك

سبحان الله و بحمده سبحان الله العظيم

أبو كريم و مازن و نور

vb.net - c# - asp.net - oracle - sql server

manager@tm-center.com

00966508268649

#4

استخدم ال Views فهي مصممة لهذا خصيصا

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#5
اقتباس
هل أغلق التقرير للمستخدم حتى يتنهى المستخدم السابق له من استعمال التقارير (أى الجداول المؤقته)

أم عند انشاء المستخدمين أقم بإنشاء جدول لكل مستخدم يكون هو الجدول الإحتياطي الخاص به

الأخ egyman

طريقة أخرى:

ضع جملة الاستعلام الذي يظهر هذا التقرير ضمن transaction من نوع serializable، فحسب ما فهمته من سؤالك ، أن التقرير الذي تطلبه قد يعاني من مشكلة مايسمى phantom reads ، وهي السجلات التي قد تظهر "فجأة" نتيجة لإضافة مستخدم آخر بيانات إضافية في جدول يستعمله المستخدم الأول لاستخراج تقرير معين، فإذا كان الTransaction من نوع serializable فسيمنع المستخدم الثاني من إضافة البيانات للجدول طالما أن المستخدم الأول بدأ تنفيذ استعلام التقرير ضمن هذا الTransaction.

الطريقة: تبدأ الاستعلام بهذه الجمل:

begin transaction myTransaction
set transaction read only
set transaction isolation level serializable

حيث myTransaction هو اسم الtransaction ، والسطر الثاني يحدده ليكون readonly ، والسطر الثالث يحدد أن نوع الtransaction هو serializable.

ثم تضع جمل الاستعلام ، وتنهيه بهذا السطر:

commit myTransaction

بالتوفيق بإذن الله :)

تم تعديل هذه المشاركة بواسطة walcom في 26 أبريل 2005 في 03:24

فكر بطريقة أخرى

#6

ماشاء الله 3 حلول للان

الجداول المؤقته - ال Views (ارشح هذا الحل اكثر لمنطقيته و افضليته) - ال Transactions (لا افضل هذا الحل لصعوبة التحكم فى ال Transactions بالاضافة اننا سنحتاج لاكثر من Transaction لانشاء كل تقرير على حده حسب ما فهمت)

اتمنى ان نناقش كل طريقه على حده بعد ان يوضح لنا صاحب المشروع طبيعة مشروعه و طبيعة العمل المراد انجازه

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#7

بسم الله الرحمن الرحيم

أولاً : أشكر كل الأحزة الأعضاء الذين شاركوا ...

ثانياً : أسف للتأخير على الرد و لكن كان بسبب مرضي (و الحمد لله أصبحت أفضل)

...................................

المشروع بمنتهى البساطة هو نظام للحسابات

و به بالطبع جداول القيود تسجل فيها معاملات الحسابات

و جداول القيود هي :

qid : الجدول الأساسي

t_qid : جدول حركة القيود

...............

أريد مثلاُ :

أظهار تقرير ببيانات الحسابات التى لها حركة بين تاريخين و من رقم حساب إلى رقم حساب بشرط

أن يكون لهذه الحسابات حركات داخل هذه الفترة

و أن يكون ناتج هذه الحركات أكبر من الصفر

.................

مثال:

رقم القيد 1

تاريخ القيد 12/10/2004

رقم الحساب اسم الحساب مدين دائن مدين /عملة أجنبية دائن / عملة أجنبية

250 الشركة الوطنية 50

290 شركة الجيزة للكهرباء 350

رقم القيد 2

تاريخ القيد 15/10/2004

رقم الحساب اسم الحساب مدين دائن مدين /عملة أجنبية دائن / عملة أجنبية

250 الشركة الوطنية 50

290 شركة الجيزة للكهرباء 100

فإذا طلب المستخدم تقرير بالحسابات من رقم 200 إلى رقم 300

و من التاريخ 01/10/2004

إلي التاريخ 30/10/2004

من المفروض أن يظهر فقط الحساب رقم 290 شركة الجيزة للكهرباء لأن حسابها مدين 390

و هكذا ...

تصور أن تعطي لك قاعدة البيانات تقارير مثل

--- الحسابات المتوقفة (ليس عليها تعامل) من فترة لفترة و رصيدها أكبر من الصفر --(و ذلك لتحصيل الديون)

أرجوا ألا أكون قد أطلت عليكم

و شكراً لكم

سبحان الله و بحمده سبحان الله العظيم

أبو كريم و مازن و نور

vb.net - c# - asp.net - oracle - sql server

manager@tm-center.com

00966508268649

#8

حمداً لله على سلامتك ... طهور إن شاء الله

:) اعذرنى لانى لا املك اى نسخة SQL Server الان لاقوم بكتابة كود يوضح ما اقصده

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

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 28 أبريل 2005 في 08:58

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

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

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