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

كيف يمكن تجميع البيانات إلى جهاز واحد

مغلق
بدأه hassaan100 في 14 يناير 2004 · 15 رد · 2,616 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اخواني الأعزاء .. السلام عليكم ..

لدي برنامج خاص بشئون الموظفين .. وهذا البرنامج نسخته على 3 أجهزة ، حتى يتمكن 3 موظفين من العمل عليه ..

الأجهزة بدون شبكة .

كيف يمكن أن أقوم بتجميع البيانات التي قام الموظفون بإدخالها من الأجهزة الثلاثة وأقوم بإدخالها في جهاز رابع بحيث يحتوي على جميع البيانات المدخلة في الثلاث الأجهزة ..

طبعاً الجهاز الرابع يحتوي أيضاً على نفس البرنامج ..

جزاكم الله خيرا ..

#2

الأخ العزيز

أفضل وابسط حل لمشكلتك هي استخدام مفهوم Replication

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

انصحك بقراءة متعمقة لمفهوم Replication وكيفية تطبيقه. سوف تجد كل ما تحتاجه من معلومات في ال Help الخاص بأكسس

مع تحياتي

أحمد فخري الهياجنة

أخصائي تقنية المعلومات

#3

أشكرك جزيل الشكر أخي العزيز ..

#4

UP

#5

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

80.gif

#6

شكرا أخي العزيز .. هل تقصد أستعلام إلحاق .. وكيف يمكن ذلك مشكوراً

#7

UP

#8

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

السؤال بطريقة أخرى

.. قمت بعمل برنامج مؤخر على نظام الأكسس XP ، هذا النظام عبارة عن قاعدة بيانات تشمل على جميع بيانات أعضاء هئية التدريس في الجامعة ..

... هذا البرنامج يعمل دون شبكة ، وحتى يستخدمه أكثر من مستخدم لعملية إدخال بيانات ، قمت بعمل نسخة أخرى من هذا البرنامج على كمبيوتر آخر ،

الآن أصبح لدي موظفان أثنان يقومان بإدخال البيانات ، وكلا منهما أتفقا على تقسيم العمل بأن يأخذ كلاً منهما رقم معين ويعمل حتى ينتهي منه ..

بمعنى آخر ، الموظف الأول بدأ من رقم 1001 وسينتهي برقم 1100 ، أي أنه سقوم بإدخال 100 سجل ، أما الموظف الآخر فإنه سيبدأ من رقم 1101 وينتهي

برقم 1200 .

... الآن أريد أن أقوم بالجمع بين البيانات السابقة في جهاز آخر وليكون الجهاز رقم ثلاثة وهو خاص بالمدير ، بحيث يقوم بإستعراض البيانات التي تم إدخالها من قبل الموظفين السابقين .. كيف يمكن أن أقوم بالجمع بين هذه البيانات ، هناك من نصحني أن أقوم يإستخدام أستعالام إلحاقي ، ولكني لم أفهم كيف يتم عمله ..

تم تعديل هذه المشاركة بواسطة hassaan100 في 31 يناير 2004 في 15:18

#9

أخي hassaan100 :

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

#10

حسب معلوماتي القديمة والضحلة ولكن يعضدها التجربة :

نزل الأخوة الأفاضل في المنتدى برنامج للنسخ الاحتياطي يمكنك من الاستفادة منه

وهو يعمل نسخة على هيئة مفكرة باستيراد وتصدير بعد أن تعمل صح في الخانات المراد نسخها التي هي عبارة عن جدول وسوف يستورد ويصدر كل البيانات المراد نسخها أو تصديرها في الجدول ما دام أن الرقم الأساسي الفهرسي ( مختلف ) أما إذا كان متفق فسوف يستبدله ولا يحذف السابق الموجود في القاعدة

ملاحظة : ليس هذا الكلام تعقباً على الأخوة إنما طرح للتجارب

وشكراً

#11

هذا ما توصلت إليه أخي حسان ..

جربه وأعطني رأيك ..

ملاحظة : إذا كانت الأجهزة مربوطة بشبكة بينهم فالحمد لله فما عليك إلا أن تحدد القواعد في الجهاز الآخر .. وإن لم تكن لديك شبكة كما ذكرت فانسخ القواعد إلى الجهاز الثالث ثم دونك البرنامج ..

إرفاق.zip

#12

أخي أحمد وأخي فهد ..

جزاكم الله خير الجزاء وبارك الله فيكم وكل عام والجميع بخير ..

سأجرب ما تفضلتم به ، أسأل الله العظيم أن يبارك فيكما ، وفي الجميع..

#13

ماشاء الله ماشاء الله ... الحمد لله ..

ما شاء الله عليك يا أخي أحمد ... والله لا أعرف كيف أشكرك ... الحمد لله رب العالمين

بفضل الله أزلت علي مشكلة عظيمة .. والله لا أعرف كيف أشكرك ..

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

برنامجي بدون شبكة ، والعملية نجحت 100% بفضل الله .. جزاك الله خير الجزاء ،

أخي العزيز هذه أداة رائعة ماهي آلية عملها بارك الله فيك ..

وفقك الله ،،،

#14

عيدكم مبارك.

عمل ممتاز جدا ما شاء الله.

#15

الحمد لله على انتهاء المشكلة أخي حسان

آمين .. اللهم استجب

وكل عام وأنتم بخير وتقبل الله صالح أعمالكم

----------

شرح للأداة :

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

بعد ذلك يتم تحديد الجدول المصدر والجدول الهدف

ثم يتم إرفاق البيانات بالجدول الهدف من الجدلو المصدر .

الكود :

كود (استعراض) فتح .. وتحديد قواعد البيانات .. وهذا الكود كان من نتاج هذا المنتدى المبارك منذ زمن ..

الكود التالي يعلن عن متغير من نوع Type يحمل قيم كثيرة لتحديد نوع الملفات المطلوبة

Private Type OPENFILENAME
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type

ثم يتم الإعلان عن دالة من دوال ويندوز وهي GetOpenFileName لتقوم بفتح مربع حوار فتح لنأخذه منه مسار القواعد .

Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

الكود التالي يقوم بفتح مربع حوار فتح استناداً على متغير Type بدالة ويندوز المبيتة GetOpenFileName بناء على القيم المحولة إليها هنا

Function FunPathDataBase() As String
On Error Resume Next
 Dim ofn As OPENFILENAME
    ofn.lStructSize = Len(ofn)
    'ofn.hwndOwner = Me.Hwnd
    'ofn.hInstance = App.hInstance
    ofn.lpstrFilter = "Mdb Files (*.mdb)" & "*.mdb" & "Mde Files (*.mde)" & "*.mde"
        ofn.lpstrFile = Space$(254)
        ofn.nMaxFile = 255
        ofn.lpstrFileTitle = Space$(254)
        ofn.nMaxFileTitle = 255
        ofn.lpstrInitialDir = CurDir
        ofn.lpstrTitle = " MT Software"
        ofn.flags = 0
        Dim a
        a = GetOpenFileName(ofn)
        If (a) Then
               FunPathDataBase = Trim$(ofn.lpstrFile)
        Else
                MsgBox "لم تحدد مسار القاعدة "
        End If
 End Function

إلى هنا من فوائد هذا المنتدى المبارك .

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

والباقي الآن من عملي بفضل الله تعالى :

الإجراء التالي يقوم بإدراج جداول قاعدة بيانات المصدر في القائمة comboListTableFrom باستخدام الأدلة ADOX

Sub allTablesInDataBaseFrom(PathDataBFrom As String)

Dim cat As New ADOX.Catalog
Dim tbl As ADOX.Table
Dim strconn As String

strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & PathDataBFrom
strconn = strconn & ";Persist Security Info=False"
cat.ActiveConnection = strconn
With cat
       Me.comboListTableFrom.RowSource = ""
       For Each tbl In cat.Tables
        Me.comboListTableFrom.RowSource = Me.comboListTableFrom.RowSource & tbl.Name & ";"
    Next
End With
End Sub

الإجراء التالي يقوم بإدراج جداول قاعدة بيانات الهدف في القائمة comboListTableTo

Sub allTablesInDataBaseTo(PathDataBTo As String)

Dim cat As New ADOX.Catalog
Dim tbl As ADOX.Table
Dim strconn As String

strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & PathDataBTo
strconn = strconn & ";Persist Security Info=False"
cat.ActiveConnection = strconn

With cat
        Me.comboListTableTo.RowSource = ""
    For Each tbl In cat.Tables
        Me.comboListTableTo.RowSource = Me.comboListTableTo.RowSource & tbl.Name & ";"
    Next
End With
End Sub

الكود التالي يقوم بالتأكد من اختيار الجدولين فإذا تم اختيارهما ذهب إلى إجراء EventAddData لتنفيذ عملية الإلحاق :

Private Sub cmdAdd_Click()
If IsNull(Me.Fromtable) Or IsNull(Me.Totable) Then
   MsgBox "يجب اختيار جدول المصدر وجدول الجهة من أجل استكمال عملية الإلحاق "

    Exit Sub
Else
    EventAddData
End If
End Sub

الكود التالي يقويم بتنفيذ عملية الإلحاق :

Sub EventAddData()

Dim sqAdd As String
aa = Len(Me.DataBaseToPath)
bb = Len(Me.DataBaseFromPath)
aaa = Left(Me.DataBaseToPath, aa - 1)
bbb = Left(Me.DataBaseFromPath, bb - 1)


sqAdd = "INSERT INTO " & Me.Totable
sqAdd = sqAdd & " IN " & "'" & aaa & "'"
sqAdd = sqAdd & " select * From " & Me.Fromtable
sqAdd = sqAdd & " IN " & "'" & bbb & "'"

DoCmd.SetWarnings False
 DoCmd.RunSQL sqAdd
MsgBox "تمت عملية الإلحاق "

End Sub

الكود التالي يقوم بإدراج مسار القاعدة في الحقل قاعدة المصدر ومن ثم يظهر جداول المصدر بعد تحويل مسار القاعدة إلى الدالة السابقة allTablesInDataBaseFrom

Private Sub cmdFrom_Click()
Me.DataBaseFromPath = ""
Me.DataBaseFromPath = Trim(FunPathDataBase)

If Not IsNull(Me.DataBaseFromPath) Then
    allTablesInDataBaseFrom (Me.DataBaseFromPath)
End If
End Sub

الكود التالي يقوم بإدراج مسار القاعدة في الحقل قاعدة الهدف ومن ثم يظهر جداول الهدف بعد تحويل مسار القاعدة إلى الدالة السابقة allTablesInDataBaseTo

Private Sub cmdTo_Click()
Me.DataBaseToPath = ""
Me.DataBaseToPath = Trim(FunPathDataBase)
If Not IsNull(Me.DataBaseToPath) Then
    allTablesInDataBaseTo (Me.DataBaseToPath)
End If

End Sub

الكود التالي يدرج اسم الجدول في الحقل (من الجدول)

Me.Fromtable = Me.comboListTableFrom.Value

الكود التالي يدرج اسم الجدول في الحقل (إلى الجدول)

Me.Totable = Me.comboListTableTo.Value

تم تعديل هذه المشاركة بواسطة أحمد الحربي في 1 فبراير 2004 في 21:12

#16

بارك الله فيك وجزاك الله خيرا على هذا الشرح

وفقك الله وسدد الله خطاك..

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

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

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

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

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

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