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

مشكلة في MDI form و Activeform

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

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

برنامج في الفيجوال بيسك يفتح ملف قاعدة بيانات Access باستخدام CommonDialog و يتم عرض هذه البيانات بيانيا باستخدام MSChart

و الفورم عبارة عن MDI form و فيه الكود الاتي

هذا الكود يقوم بفتح ملف لاختيار قاعدة البيانات ثم يتم تمثيل البيانات في الـMSChart في Activeform

    CommonDialog1.CancelError = True
    On Error GoTo CancelOpen
    CommonDialog1.Flags = cdlOFNHideReadOnly
    CommonDialog1.DialogTitle = "Open MDB file"
    CommonDialog1.Filter = "MDB Files|*.mdb|All Files|*.*"
    CommonDialog1.ShowOpen

    If CommonDialog1.FileName = "" Then
        Exit Sub
    Else
        strProvider = "Microsoft.Jet.OLEDB.3.51"
        strDataSource = CommonDialog1.FileName
        strSQL = "SELECT * FROM numbers"
        '
        cnn.Open "provider=" & strProvider & ";Data Source=" & _
        strDataSource
        rst.Open strSQL, cnn, adOpenStatic
        '
        With Me.ActiveForm.MSChart1
             Set .DataSource = rst
                 .ShowLegend = True
                 .chartType = VtChChartType3dLine
        End With
     End If
CancelOpen:
   Exit Sub
     '
     cnn.Close
     rst.Close
     '

المشكلة انه عند عرض البيانات في الـActiveform و لنقل انه form1 تعرض بشكل طبيعي لكن عندما افتح form2 و احاول فتح ملف البيانات مرة اخرى لا يظهر لي شيء

اعرف ان المشكلة تكمن في هذا السطر من الكود

   With Me.ActiveForm.MSChart1

لاني جعلت MSChart1 في كل form . و لم اجعل مثلا MSChart1 في form1 و MSChart2 في form2 و هكذا

فهل اجد حلا عندكم؟؟؟

اختكم في الله مَيمنة...

#2

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

بما انه لم يجب احد .. فسأحاول التوضيح اكثر

البرنامج غرضه عرض اكثر من جدول بيانات مع الـchart الخاصة به على ان يظهر جدول واحد مع chart واحد في الصفحة.. فاذا كانت الـmenu تحتوي على صفحة 1 و صفحة 2 و...الخ فالمستخدم عندما يختار صفحة 1 يظهر له جدول 1 مع chart1 .. و قد جعلت الصفحة الواحدة form اي ان صفحة 1 تمثل form1 و صفحة 2 تمثل form2 و هكذا و يوجد في كل form جدول و chart

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

اسأل الله ان اكون اوضحت اكثر و ان شاء الله اجد عندكم الجواب الشافي

اختكم في الله ميمنة

#3

جربي أن تغيري السطور الأربعة الأخيرة من

CancelOpen:
Exit Sub
cnn.Close
rst.Close

إلي

rst.Close
cnn.Close
CancelOpen:

وستعمل بإذن الله

:)

#4

جزاك الله خيرا .. فعلا هنا كانت المشكلة و انحلت بفضله تعالى

و معذرة على تأخر الرد لكني اردت ان اسأل سؤال اخر

في هذه الفقرة

       With Me.ActiveForm.MSChart1
            Set .DataSource = rst
                .ShowLegend = True
                .chartType = VtChChartType3dLine
       End With

اريد ان اجعل لكل form جدول خاص به , اي لـform1 يكون MSChart1 و form2 يكون MSChart2 و هكذا

فرأيت ان اضع الكود في الاعلى في loop و قمت بتغيير MSChart1 الى MSChart(i) بهذا الكود

Dim i As Integer
         For i = 1 To 2
        With Me.ActiveForm.MSChart(i)
             Set .DataSource = rst
                 .ShowLegend = True
                 .chartType = VtChChartType3dLine
        End With
        Next i

لكن بعد التشغيل لم تعرض البيانات على الـchart ؟؟

#5

up :rolleyes:

#6

السلام عليكم ...

الأخت/الأخ ميمنة ....

أعتقد بأن الخطأ هو في الجزء الملون ...

Dim i As Integer
        For i = 1 To 2
       With Me.ActiveForm.MSChart(i)
            Set .DataSource = rst
                .ShowLegend = True
                .chartType = VtChChartType3dLine
       End With
       Next i

حيث لايمكن تغيير أسم النموذج form بإستخدام المتغير i ... يجب أن تكون النماذج forms في مصفوفة من نوع form لتطبيق الكود السابق ...

الحل - إذا لم يتغب في عمل ذلك - أن تكرر الكود بعدد النماذج الموجودة مع تغيير الأسم باليد .. ولكن ..

إذا كان عدد النماذج كبير أو أنه غير ثابت ... فأنا أنصح بالخيار الأول ...

تحياتي ...

#7

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

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

2-نحن لا نعرف أسماء الجداول فلا يمكن أن نكتبها بأنفسنا في ال Provider

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

:rolleyes:

EX.ZIP

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

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