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

هل من الضروري تكرار الاتصال بقاعدة البيانات بكل نموذج ؟

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

أعضاء المنتدى الكرام ....

لدي مشكلة بسيطة تتلخص في ضرورة وضع جمل الإتصال بقاعدة بيانات sql server 2000 بكل نموذج ( برنامج مصمم بـ VB6) حتى يعمل البرنامج بشكل صحيح لكن للأسف هناك بطئ بالبرنامج أثناء عملية الارتباط...

هل يمكنني التخلص من تكرار هذا البطئ ووضع جمل الاتصال بقاعدة البيانات مرة واحدة فقط بدلاً من تكرارها بكل form ؟؟؟

مشكروين مقدماً على سرعة الإستجابة ...

#2

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

المفروض عندما نقوم بالاتصال بقاعدة بياناتنا نتصل بها مرة واحدة بعمل متغير عام يعرف الاتصال

في معظم هذه البرامج من المستحسن التشغيل بال sub main ووضع جملة الاتصال فيها بعد تعريف متغير عام يحمل اسم الاتصال

Public CNN As ADODB.Connection

وبعدها يمكن تنفيذ أي استعلام باستخدام المتغير CNN الذي يمثل الاتصال المنشئ

RS.open CNN, sql

#3

الأخ الفاضل ...

يمكنك عمل Module ووضع خواص الإتصال به Public وفتح الاتصال قبل بدء البرنامج، ومن ثم استخدام الاتصال فى جميل الـ Forms داخل البرنامج، مثال لفتح قاعدة بيانات أكسس:

Public DB As New ADODB.Connection
Private Sub PoolConnection()
	If DB.State = adStateOpen Then DB.Close
	DB.Provider = "Microsoft.jet.oledb.4.0;"
	DB.Open App.Path & "\Data.mdb"
End Sub

Sub Main()
	Call PoolConnection
End Sub

راجع أيضاً المثال الموجود فى: /index.php?showtopic=125289

شكراً

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#4

الإخوة الكرام أعضاء المنتدى .... أشكر لكم سرعة الإجابة

لكن المشكلة مازالت قائمة !!!!

الكود التالي هو الذي أستخدمه

في الموديول :*

كود:

---------

Public Static Sub connectdatab()

On Error GoTo err:

If db.State = adStateOpen Then db.Close

Dim ServerName As String, DatabaseName As String

ServerName = ""

DatabaseName = ""

db.Provider = "sqloledb"

db.Properties("Data Source").Value = ServerName

db.Properties("Initial Catalog").Value = DatabaseName

db.Properties("Integrated Security").Value = "SSPI"

db.Open

err:

End Sub

---------

*و في الفورم :*

كود:

---------

Private Sub Form_Load()

connectdatab

End Sub

---------

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

هل من حل بحيث يكون الاتصال بقاعدة البيانات مرة واحدة فقط و بعدها يتم العمل بجميع النماذج دون الحاجةلكتابة للاتصال بقاعدة البيانات من جديد؟

#5

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

شاكرين للجميع حسن التعاون

#6

راجع فقط ماذكره الأخ أسامة في الرد السابق

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

#7

السادة الأفاضل مشرفين و أعضاء المنتدي ....

مرفق مثال بسيط الهدف منه الوصول لحل المشكلة

يتلخص المثال في الآتي: 3 نماذج و قاعدة بيانات sql server2000

النموذج الأول ... الشاشة الرئيسية و هي شاشة الدخول ... عند كتابة رقم المستخدم (1 أو 2 على سبيل المثال ) ستظهر بياناته

و عليه إدخال رقمه السري (1 للمستخدم الأول ..... 2 للمستخدم الثاني )

و فور ادخال رقم المسنخدم و كلمة المرور سيقوم البرنامج بفتح نموذج form1 بالنسبة للمستخدم الأول و form2 للمستخدم الثاني

و كل من form1 , form2 به قائمة بالأسماء الهدف الوحيد منها هو التأكد من أن قاعدة البيانات تعمل بشكل سليم و يمكننا التعامل معها.

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

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

30 نموذج !!!

طبعا قاعدة البيانات مرفقة ( اسمها ddd ) و موضوعة على سيرفر 10.10.10.10 و ممكن تغيير هذا العنوان من الكود

آمل سرعة التعديل و حل المشكلة ..... و يعطيكم العافية

testdb.rar

#8

السلام عليكم

بحاجة الى تعديل بسيط في condb وهو كمايلي

If db Is Nothing Then
Set db = New Connection
End If

If db.State = adStateClosed Then
ServerName = "10.10.10.10"
DatabaseName = "ddd"
db.Provider = "sqloledb"
db.Properties("Data Source").Value = ServerName
db.Properties("Initial Catalog").Value = DatabaseName
db.Properties("Integrated Security").Value = "SSPI"
db.Open
End If
#9

مشكور أخي الكريم ... tareqvb

سيتم تطبيق ملاحظتك و ابلاغك بالنتيجة

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

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

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

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

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

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