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

سؤال في النظام الشبكي

مغلق
بدأه m_ageeb في 18 أبريل 2007 · 6 رد · 1,191 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السادة الأعضاء

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

اود ان أسألكم عن النظام الشبكي (مثل نظام شجرة العائلة)

بجدول باسم cust

Code : رقم الأبن

Name1 : اسم الأبن

Ab : رقم الأب

Mony : المبلغ الخاص بالأبن

بحيث يكون رقم الأبن مفتاح اساسي ولا يتكرر

ولكل اب مجموعة من الابناء

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

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

Public Function total(code As Double)
z = 0
Set rec = Nothing
Set rec = New Recordset
rec.Open "select * from cust where code=" & code, cnn, adOpenStatic, adLockOptimistic
If rec.EOF = False Then
i = 0
Do While Not rec.EOF
i = i + 1
ii = rec!code
With rec
   z = z + Val(!mony)
End With
Set hrec = Nothing
Set hrec = New Recordset
hrec.Open "select * from cust where ab=" & ii, cnn, adOpenStatic, adLockOptimistic
If hrec.EOF = False Then
hrec.MoveLast
ss = hrec.RecordCount
hrec.MoveFirst
For s = 1 To ss
With hrec
   z = z + Val(!mony)
End With


Set rs = Nothing
Set rs = New Recordset
rs.Open "select * from cust where ab=" & hrec!code, cnn, adOpenStatic, adLockOptimistic
If rs.EOF = False Then
rs.MoveLast
ll = rs.RecordCount
rs.MoveFirst
For l = 1 To ll

With rs
   z = z + Val(!mony)
End With


Set wrec = Nothing
Set wrec = New Recordset
wrec.Open "select * from cust where ab=" & rs!code, cnn, adOpenStatic, adLockOptimistic
If wrec.EOF = False Then
wrec.MoveLast
pp = wrec.RecordCount
wrec.MoveFirst
For pep = 1 To pp

  With wrec
   z = z + Val(!mony)
End With
Call tr(wrec!code)
wrec.MoveNext
Next
End If
rs.MoveNext
Next
End If
hrec.MoveNext
Next
End If
rec.MoveNext
Loop
Else


End If
total = Val(z)
End Function


Private Sub tr(tt As Double)
Set mycust1 = Nothing
Set mycust1 = New Recordset
mycust1.Open "select * from cust where ab=" & tt, cnn, adOpenStatic, adLockOptimistic
Do While Not mycust1.EOF
   z = z + Val(mycust2!mony)
Call tr2(mycust1!code)
mycust1.MoveNext
Loop
'End If
End Sub

Private Sub tr2(tt As Double)
Set mycust2 = Nothing
Set mycust2 = New Recordset
mycust2.Open "select * from cust where ab=" & tt, cnn, adOpenStatic, adLockOptimistic
Do While Not mycust2.EOF
z = z + Val(mycust2!mony)
Call tr(mycust2!code)
mycust2.MoveNext
Loop
End Sub

تم تعديل هذه المشاركة بواسطة walcom في 19 أبريل 2007 في 16:28 — السبب: وضع الأكواد بين علامتي [code] و [/code]

تعلم فليس المرء يولد عالما ولا اخو علم كمن هو جاهلو

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

~¤ô_ô¤~ AGEEB SOFT~¤ô_ô¤~

ageeb2000@hotmail.com

#2

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

اريد ان اضيف هذه ، إظهار كل الابناء لاب معين في استعلام

بحيث يظهر جميع الابناء وابناء الابناء ارجو من الاخوان المساعدة

تعلم فليس المرء يولد عالما ولا اخو علم كمن هو جاهلو

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

~¤ô_ô¤~ AGEEB SOFT~¤ô_ô¤~

ageeb2000@hotmail.com

#3

السلام عليكم

أخي ضع ملف العمل الذي لديك(يفضل)

لا عز نا إلا بالإسلام ومهما ابتغينا العزة بغيرة أذلنا الله (عمر بن الخطاب رضي الله عنه )

alfozan.jpg

#4

اخي الكريم الموضوع يحتوى على الدالة والإجراءات التابعة لها

تعلم فليس المرء يولد عالما ولا اخو علم كمن هو جاهلو

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

~¤ô_ô¤~ AGEEB SOFT~¤ô_ô¤~

ageeb2000@hotmail.com

#5

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

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

لنجزأ طلباتك حتى يتسنى لنا مساعدتك . ولكن وقبل أن أكمل أحب أن ألفت انتباهك إلى أمر ليس وارداً أبداً وهو :

أنك قمت بطلب المساعدة : البارحة مساء الساعة 11:21

وقمت بتكرار طلب المساعدة اليوم صباحاً الساعة 09:58

حبذا لو تصبر علينا قليلاً !!!

بالنسبة للجدول المطلوب إنشاؤه :

Create Table Calculates( 
	Code	BigInt Identity(1,1) ,
	Name	Nvarchar(100)	,
	Ab		BigInt ,
	Mony	Decimal(12,2)
 )

أما بالنسبة للمرور على سجلات الجدول فتحتاج إلى ما يسمى في الـ SQL Server بالمؤشرات

سأعطيك مثال على السريع :

لو فرضنا أن لديك في الجدول البيانات التالية :

Insert Calculates(Name, Ab, Mony)
	Select 'حساب أب'
	,Null ,0

Insert Calculates(Name, Ab, Mony)
	Select 'حساب ابن'
	,0, 500.5


Insert Calculates(Name, Ab, Mony)
	Select 'حساب حفيد'
	,1, 500.5


Declare @Code BigInt, @Name Nvarchar(100)

Declare C Cursor For Select Code, Name From Calculates Open C
Fetch Next From C Into @Code, @Name 

While @@Fetch_Status = 0
Begin Print 'Here you can use the params'
	Print @Code
	Print @Name
	Fetch Next From C Into @Code, @Name 
End
Close C
DeAllocate C

بالتوفيق ..

تم تعديل هذه المشاركة بواسطة walcom في 19 أبريل 2007 في 18:51 — السبب: استبدال العلامات code بsql

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#6

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

تعلم فليس المرء يولد عالما ولا اخو علم كمن هو جاهلو

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

~¤ô_ô¤~ AGEEB SOFT~¤ô_ô¤~

ageeb2000@hotmail.com

#7

السادة الاعضاء ، تحية طيب

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

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

ومناداة الإجراء ادناه تجده في الملف المرفق تحت السطر

------كود الإجراء

CREATE   PROCEDURE CODEE(@CODE DECIMAL(18,0))
AS
UPDATE ACT2 SET B_VAL=B_VAL+1 WHERE CODE=@CODE

FUNCTIONS.zip

تم تعديل هذه المشاركة بواسطة m_ageeb في 23 أبريل 2007 في 22:53

تعلم فليس المرء يولد عالما ولا اخو علم كمن هو جاهلو

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

~¤ô_ô¤~ AGEEB SOFT~¤ô_ô¤~

ageeb2000@hotmail.com

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

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