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

السؤال الذي عجز عن أجابة الكثير من المبرمجين

بدأه الشبكي88 في 9 فبراير 2012 · 8 رد · 732 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

عندي سؤال معطل مشروع التخرج بتاعي وسألت في الكثير من المبرمجين وما عرف أحد أجابتة وبحث كثيراً ولم أجد الجواب السؤال هو

عندي قاعدتين بيانات قاعدة رقم 1 وقاعدة رقم 2 وكل قاعددة فيها جدول فية نفس أسم الأعمدة ونفس النوع مربوطات ببرنامج فيجوال بيسك 6 السؤال هو كالتي

أريد كود يقوم بتحديث بيانات القاعد رقم 2 بالأعتماد على البيانات الموجودة في القاعدة رقم 1 ولا يشترط أن تكون أنياً أو لحظياً وأنما أعمل زر خاص عندما أضغط علية يقوم بالتحديث

والصورة التالية توضح أكثر ...

01328772257.jpg

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

#2

إذا كانوا كدولين في قاعدة بيانات واحدة وتريد إستبدال كل ما هو موجود بالجدول 2 بما هو موجود بالجدول 1 فيمكنك استعمال الإجراء

Delete From Table2
Insert Into Table2 Select * from Table1

حيث يقوم السطر الاول بحذف كل سجلات الجدول 2

ويقوم السطر الثاني بنسخ سجلات الجدول 1 الى الجدول 2

اما إذا كانوا قاعدتي بيانات منفصلتين وتريد إستبدال كل ما هو موجود بالقاعدة 2 بما هو موجود بالقاعدة 1

فلما لا تقوم بعمل Copy لملف القاعدة 1 وتغيير اسمه ليصبح هو القاعدة 2

اما إذا كنت تريد شئ آخر فأرجو التوضيح ..

تم تعديل هذه المشاركة بواسطة محمد مصطفي غريب في 9 فبراير 2012 في 14:11

It does not matter what they know about you, but what you can do, so let your work speak of you

mmghv VB6 Programmer

#3
محمد مصطفي غريب كتب:

إذا كانوا كدولين في قاعدة بيانات واحدة وتريد إستبدال كل ما هو موجود بالجدول 2 بما هو موجود بالجدول 1 فيمكنك استعمال الإجراء

Delete From Table2
Insert Into Table2 Select * from Table1

حيث يقوم السطر الاول بحذف كل سجلات الجدول 2

ويقوم السطر الثاني بنسخ سجلات الجدول 1 الى الجدول 2

اما إذا كانوا قاعدتي بيانات منفصلتين وتريد إستبدال كل ما هو موجود بالقاعدة 2 بما هو موجود بالقاعدة 1

فلما لا تقوم بعمل Copy لملف القاعدة 1 وتغيير اسمه ليصبح هو القاعدة 2

اما إذا كنت تريد شئ آخر فأرجو التوضيح ..

شكرا لك أخي ولكن سأوضح أكثر

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

#4

هذه طريقة غير عملية إطلاقاً للربط عبر الـ Network فمهما فعلت سيحدث اخطاء وتداخلات وفقد للبيانات , فماذا لو كنت تحاول تحديث البيانات وبدأت التحديث على قاعدة البيانات الرئيسية وقبل انتهاء التحديث قام مستخدم آخر بعمل تحديث على نفس القاعدة وانتهى قبل ان ينتهي التحديث الاول, فستفقد البيانات التى وضعها التحديث الثاني وهذا بتأثير التحديث الاول الذي انتهى بعده .

بإختصار مهما فعلت لن تكون قواعد البيانات متوافقة

الحل الافضل هو استخدام قاعدة بيانات رئيسية على السيرفر مثل SQL Server حيث تقوم الاجهزة الاخرة بالإتصال بها من خلال الشبكة لتحصل على البيانات مباشرة وتقوم بالتعديل ايضاً مباشرة على قاعدة البيانات في السيرفر وبهذا لن تفقد اي بيانات ولن يحدث تداخل في البيانات .

It does not matter what they know about you, but what you can do, so let your work speak of you

mmghv VB6 Programmer

#5
محمد مصطفي غريب كتب:

هذه طريقة غير عملية إطلاقاً للربط عبر الـ Network فمهما فعلت سيحدث اخطاء وتداخلات وفقد للبيانات , فماذا لو كنت تحاول تحديث البيانات وبدأت التحديث على قاعدة البيانات الرئيسية وقبل انتهاء التحديث قام مستخدم آخر بعمل تحديث على نفس القاعدة وانتهى قبل ان ينتهي التحديث الاول, فستفقد البيانات التى وضعها التحديث الثاني وهذا بتأثير التحديث الاول الذي انتهى بعده .

بإختصار مهما فعلت لن تكون قواعد البيانات متوافقة

الحل الافضل هو استخدام قاعدة بيانات رئيسية على السيرفر مثل SQL Server حيث تقوم الاجهزة الاخرة بالإتصال بها من خلال الشبكة لتحصل على البيانات مباشرة وتقوم بالتعديل ايضاً مباشرة على قاعدة البيانات في السيرفر وبهذا لن تفقد اي بيانات ولن يحدث تداخل في البيانات .

شكرا لردك اخي الكريم ولكن اريد ان اوضح مسألة

1- التعديل والتحديث يتم على القاعدة الرئيسية فقط وليس على باقي القواعد الموجودة على الشبكة القواعد الموجودة على الشبكة فقط تقوم بعرض البيانات

2- القواعد الموجودة على الحاسبات في الشبكة منفصلة اي هي قواعد وحدها .

وشكراً راجي منكم مساعدتي جعلة الله في ميزان حسناتكم

#6

حسناً .. ما هو نوع قاعدة البيانات وهل لديك إتصال من الاجهزة الخرى بالقاعدة الرئيسية ام تسأل ايضاً عن طريقة عمل إتصال بين الاجهزة وقاعدة البيانات الرئيسية ؟

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

تم تعديل هذه المشاركة بواسطة محمد مصطفي غريب في 9 فبراير 2012 في 22:41

It does not matter what they know about you, but what you can do, so let your work speak of you

mmghv VB6 Programmer

#7
محمد مصطفي غريب كتب:

حسناً .. ما هو نوع قاعدة البيانات وهل لديك إتصال من الاجهزة الخرى بالقاعدة الرئيسية ام تسأل ايضاً عن طريقة عمل إتصال بين الاجهزة وقاعدة البيانات الرئيسية ؟

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

ألف شكر أليك حبيبي الغالي لتفاعلك معاية بارك الله فيك ياغالي وأعطاك من خير الدنيا

توضيح

1- كل حاسوب في الشبكة فية البرنامج يحتوي على قاعدة بيانات منفصلة عن الرئيسية

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

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

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

,الف شكر لك حبيبي الغالي أرجو أن تجد لي الحل بارك الله فيك

الشبكي88 كتب:

ألف شكر أليك حبيبي الغالي لتفاعلك معاية بارك الله فيك ياغالي وأعطاك من خير الدنيا

توضيح

1- كل حاسوب في الشبكة فية البرنامج يحتوي على قاعدة بيانات منفصلة عن الرئيسية

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

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

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

,الف شكر لك حبيبي الغالي أرجو أن تجد لي الحل بارك الله فيك

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

#8

بالنسبة لطريقة الإتصال للأكسس على الـ Network فقم بالبحث عنها لأني لم اجربها قبل ذلك لاني استخدم بدلاً منها SQL Server

وبالنسبة لطريقة التحديث , اولاً في قاعدة البيانات المحلية تقوم بتفريغ حقول جدولها بتنفيذ الإجراء

Delete From MyTable

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

ولتنفيذ الإجراءات تقوم بالتعريف عن متغير DB

Dim DB As New ADODB.Connection

وتربطه بالقاعدة المحلية بكود DB.Open ثم الـ ConnectionString الخاص بالإتصال

وبفرد ان rsClient هو الإتصال بالجدول في قاعدة البيانات المحلية

و rsServer هو الإتصال بقاعدة البيانات في السرفر

يكون الكود مشابهاً لهذا :

DB.Execute "Delete From MyTable"

Do Until rsServer.EOF
	DB.Execute "Insert Into MyTable (Field1,Field2) Values('" & rsServer.Fields("Field1") & "','" & rsServer.Fields("Field2") & "')"
	rsServer.MoveNext
Loop

في هذا المثال افترضنا ان الجدول الذي نريد عمل تحديث له هو MyTable وان به حقلين Field1 و Field2

طبعاً انت مبرمج انا اخبرتك بالطريقة واعطيتك مثال وعليك بتنفيذها حسب ما تريد ...

1

It does not matter what they know about you, but what you can do, so let your work speak of you

mmghv VB6 Programmer

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

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

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

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

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