اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

[تطبيق] استخراج اسم سيرفر SQL وتحديد قاعدة بيانات للارتباط بها


محمد ايمن

الردود الموصى بها

السلام عليكم ورحمة الله و بركاته اصدقائي

هذا التطبيق هو تطوير لهذا الموضوع

في الموضوع السابق كان يجب علينا كتابة اسم السيرفر و اسم قاعدة البيانات ضمن الكود للارتباط بالجداول

في هذا التطبيق نستطيع عرض سيرفرات SQL الموجود على الجهاز و اختيار السيرفر و اختيار قاعدة البيانات واختيار نوع الاتصال للارتباط بالجداول

طبعا يجب اضافة المرجع SQLDMO.DLL الى البرنامج وهنا يتم اضافة المرجع برمجيا دون اي تدخل من المستخدم

الملف SQLDMO.DLL يجب ان يكون في نفس مسار قاعدة البيانات

Dim DB As Database
Dim RS As Recordset2
Dim TblName As String
Dim Td As TableDef

-------------------------------------------------------------------------------------------------------------------------------------------
Private Sub chk1_AfterUpdate()
If Me.chk1 = True Then
Me.TUserName.Enabled = False
Me.TPassWord.Enabled = False
Else
Me.TUserName.Enabled = True
Me.TPassWord.Enabled = True
End If
End Sub

-------------------------------------------------------------------------------------------------------------------------------------------
Private Sub Cm1_Click()
On Error GoTo ErrSub

If IsNull(Me.Comp1) Then
MsgBox "يرجى اختيار السيرفر", vbCritical
Exit Sub
End If


If IsNull(Me.Comp2) Then
MsgBox "يرجى اختيار اسم قاعدة البيانات", vbCritical
Exit Sub
End If


If Me.chk1 <> 1 And (IsNull(Me.TUserName) Or IsNull(Me.TPassWord)) Then
MsgBox "يرجى ادخال اسم المستخدم و كلمة المرور", vbCritical
Exit Sub
End If

For Each Td In CurrentDb.TableDefs
    If Len(Td.Connect) <> 0 Then
        CurrentDb.TableDefs.Delete Td.Name
    End If
Next

DoCmd.TransferDatabase acImport, "ODBC Database", "ODBC;Driver={SQL Server};Server=" & Me.Comp1 & ";Database=" & Me.Comp2 & ";Trusted_Connection=Yes", acTable, "INFORMATION_SCHEMA.TABLES", "INFORMATION_SCHEMA_TABLES"

Set DB = CurrentDb
Set RS = DB.OpenRecordset("INFORMATION_SCHEMA_TABLES", dbOpenTable)
RS.MoveFirst
Do While RS.EOF = False
TblName = RS.Fields(2)

If Me.chk1 = 1 Then
DoCmd.TransferDatabase acLink, "ODBC Database", "ODBC;Driver={SQL Server};Server=" & Me.Comp1 & ";Database=" & Me.Comp2 & ";Trusted_Connection=Yes", acTable, TblName, TblName

Else
DoCmd.TransferDatabase acLink, "ODBC Database", "ODBC;Driver={SQL Server};Server=" & Me.Comp1 & ";Database=" & Me.Comp2 & ";UID=" & Me.TUserName & ";PWD=" & Me.TPassWord, acTable, TblName, TblName
End If

RS.MoveNext
Loop
RS.Close
Me.Comp2.RowSource = ""
DoCmd.Close acTable, "sysdatabases"
DoCmd.DeleteObject acTable, "INFORMATION_SCHEMA_TABLES"
DoCmd.DeleteObject acTable, "sysdatabases"

MsgBox "تم الارتباط بكافة الجداول بنجاح", vbInformation


ErrSub:
If Err.Number <> 0 Then
MsgBox Err.Number & vbCrLf & Err.Description, vbCritical + vbMsgBoxRight
End If

End Sub

-------------------------------------------------------------------------------------------------------------------------------------------
Private Sub Cm2_Click()

Dim i As Integer
Dim oNames As SQLDMO.NameList
Dim oSQLApp As SQLDMO.Application
Dim SysServerCount As Integer

Set oSQLApp = New SQLDMO.Application
Set oNames = oSQLApp.ListAvailableSQLServers()
SysServerCount = oNames.Count
Me.Comp1.AllowValueListEdits = True
Me.Comp1.RowSourceType = "Value List"

If SysServerCount = 0 Then
    Me.Comp1.RowSource = "local"
Else
    For i = 1 To SysServerCount
        Me.Comp1.AddItem oNames.Item(i)
        Next i
        Me.Comp1.AllowValueListEdits = False
End If

Me.Comp1.SetFocus
Me.Comp1.Dropdown

End Sub

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

Private Sub Comp1_AfterUpdate()
On Error GoTo ErrSub
DoCmd.TransferDatabase acImport, "ODBC Database", "ODBC;Driver={SQL Server};Server=" & Me.Comp1.Value & ";Database=master;Trusted_Connection=Yes", acTable, "sys.databases", "sysdatabases"

Me.Comp2.RowSource = "SELECT sysdatabases.name, sysdatabases.is_auto_close_on FROM sysdatabases WHERE (((sysdatabases.is_auto_close_on)=-1))"
Me.Comp2.SetFocus
Me.Comp2.Dropdown

ErrSub:
If Err.Number <> 0 Then
End If
If Err.Number = 3059 Then
MsgBox "تاكد من تشغيل السيرفر", vbCritical + vbMsgBoxRight
End If

End Sub

-------------------------------------------------------------------------------------------------------------------------------------------
Private Sub Form_Close()

On Error Resume Next
DoCmd.DeleteObject acTable, "sysdatabases"
End Sub

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

Private Sub Form_Load()
On Error Resume Next
With Access.References
.AddFromFile CurrentProject.Path & "\SQLDMO.DLL"
End With
End Sub

 

1.jpg

Link All Table.rar

تم تعديل بواسطه محمد ايمن
  • Like 3
  • Haha 1
رابط هذا التعليق
شارك

الله الله الله.. انت حليت لي الغاز كثيرة ومعقدة 

وكنت المشكلة التي تؤرقني هي عندما اعطي اي برنامج للزبون  كان علي ان اشرح طرق معقدة لكي يتصل بها

بارك الله فيك.. وجاري التجربة.. والافادة

  • Like 1
رابط هذا التعليق
شارك

7 ساعات مضت, محمد سلامة said:

الله الله الله.. انت حليت لي الغاز كثيرة ومعقدة 

وكنت المشكلة التي تؤرقني هي عندما اعطي اي برنامج للزبون  كان علي ان اشرح طرق معقدة لكي يتصل بها

بارك الله فيك.. وجاري التجربة.. والافادة

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

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

 

7 ساعات مضت, ابوخليل said:

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

يستحق التثبيت

الحمدلله الذي هدانا لهذا و ما كنا لنهتدي لو لا ان هدانا الله

 

التطبيق القادم باذن الله انشاء قاعدة بيانات SQL وتصدير كافة الجداول لها بواسطة الكود (بدون استخدام معالج التكبير)

تم تعديل بواسطه محمد ايمن
  • Like 3
رابط هذا التعليق
شارك

3 ساعات مضت, محمد ايمن said:

التطبيق القادم باذن الله انشاء قاعدة بيانات SQL وتصدير كافة الجداول لها بواسطة الكود (بدون استخدام معالج التكبير)

الله الله انا لا اصدق. هل يمكن عمل ذلك ايضا

متابع معك باذن الله

واود ان اشكرك.. شكرا جزيلا.. وبارك الله فيك 

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

  • Like 2
رابط هذا التعليق
شارك

منذ ساعه, محمد سلامة said:

الله الله انا لا اصدق. هل يمكن عمل ذلك ايضا

متابع معك باذن الله

واود ان اشكرك.. شكرا جزيلا.. وبارك الله فيك 

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

نعم ممكن ذلك ان شاء الله

 

20 دقائق مضت, Elsayed Bn Gemy said:

اتابع ابداعك بصمت وفقك الله

نورت الموضوع اخي السيد جمال

وفقنا الله و اياكم جميعا

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم .. بعد التجربة الفعلية

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

ولكن لى ملحوظة يتم كتابة اسم السيرفر يدوياً ولا يظهر او يتم اختياره من مربع التحرير والسرد وايضا اسم القاعدة

تحياتى وبنتظار المثال هذا

في ١١‏/١٠‏/٢٠١٦ at 13:38, محمد ايمن said:

انشاء قاعدة بيانات SQL وتصدير كافة الجداول لها بواسطة الكود (بدون استخدام معالج التكبير)

 

رابط هذا التعليق
شارك

15 دقائق مضت, محمد سلامة said:

ولكن لى ملحوظة يتم كتابة اسم السيرفر يدوياً ولا يظهر او يتم اختياره من مربع التحرير والسرد وايضا اسم القاعدة

تحية طيبة اخي محمد

عند تشغيل البرنامج اضغط على زر (اختيار السيرفر)

ثم اضغط على القائمة المنسدلة الاولى عندها سيتم اظهار السيرفرات المتوفرة على جهازك

وبعد اختيار السيرفر مباشرة ستظهر قواعد البيانات المتوفرة على السيرفر في القائمة المنسدلة الثانية

( قواعد بيانات نظام SQL لن تظهر وهي master - model - msdb - tempdb )

اود التاكيد على ان نسخة SQL التي تم الاختبار عليها هي SQL Server 2005

اما نسخة 2000 فقد اكتشفت انها تعطي خطا واعمل على حلها

 

تم تعديل بواسطه محمد ايمن
  • Like 2
رابط هذا التعليق
شارك

11 دقائق مضت, محمد ايمن said:

تحية طيبة اخي محمد

عند تشغيل البرنامج اضغط على زر (اختيار السيرفر)

ثم اضغط على القائمة المنسدلة الاولى عندها سيتم اظهار السيرفرات المتوفرة على جهازك

وبعد اختيار السيرفر مباشرة ستظهر قواعد البيانات المتوفرة على السيرفر في القائمة المنسدلة الثانية ( قواعد بيانات نظام SQL لن تظهر وهي master - model - msdb - tempdb )

 

ولكن بعد التشغيل وعند الضغط على الزر (اختيار السيرفر) يظهر الخطأ التالى:-

Untitled.png

وهذا ما جعلنى اكتبه يدوياً فى المرة الاولى

مع العلم بان المرجع SQLDMO.DLL موجود بجوار القاعدة

تحياتى

  • Like 1
رابط هذا التعليق
شارك

تحية طيبة اخي محمد

جربت كل ماخطر ببالي من احتمالات لظهور هذا الخطا ولكن لم يظهر عندي

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

رابط هذا التعليق
شارك

في 10/12/2016 at 22:42, محمد سلامة said:

ولكن بعد التشغيل وعند الضغط على الزر (اختيار السيرفر) يظهر الخطأ التالى:-

Untitled.png

وهذا ما جعلنى اكتبه يدوياً فى المرة الاولى

مع العلم بان المرجع SQLDMO.DLL موجود بجوار القاعدة

تحياتى

اولا شكرا استاذ محمد ايمن ولي عودة حيث اعتقد يمكن سرد السيرفرات بواسطة api  او قراءة قائمة الخدمات والعملية عملية تخاطب مع الويندوز وهنا تم استخدام مكتبة وسيطية وهي sqldmo  ودائما استخدام المكتبات الخارجية كوسيط تجعلك مقيد مع هذه المكتبة بصلاحياتها ومدى استمراريتها لاصدارات حديثة مما يجعلك مقيد لمطور الوسيط الثالث 

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

الاخ محمد سلامة

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

بالتوفيق 

  • Like 1
رابط هذا التعليق
شارك

  • 10 months later...

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

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

  • Thanks 1
رابط هذا التعليق
شارك

في 26/08/2017 at 22:52, محمد ايمن said:

اخي سفيان ماهي نسخة ال Sql التي تستخدمها ؟؟

شكرا لردك استاذ بارك الله فيك جزاك الله خيرا 

شرف لنا  تردون علينا  يا استاذة المنتدى 

بخصوص sql :

انا أستعمل sql 2008

لدي قاعدة بيانات كبيرة حجم اريد تكبيرها  في sql

 بعدما اكبرها  اضعها في سيرفر شركة

 واعطي لكل مدينة نسخة لكي يعملو فيه ويدخلو بيانات

عدد مدن تابعة لشركة 8 يعني كلهم لديهم علاقة في ذالك سيرفر

 ياليت  استاذ تسوي لي فيديو عندما تكبرها 

 ماهو ملف  الي  اضعه في السيرفر , و ماهي النسخة التي اوزعها  للمدن لكي يعملو فيها,

ارجو منك يااستاذ لو تسوي لي  مراحل ذي ولله اتخلص من مشكل عويص عندي 3 اسابيع وانا  احاول  فهمها

انا افهم بطرق  ذي يعني فيديو اشاهد شئ عشان اتعلمه عندما  اشوف  موضوع ولله ماافهم فيه شئ لكن بفديو ولله روعة

  لكي  استفد  و اتعلم  و (منكم نتعلم)

واجرك على الله وان شاء الله  يرزقك جنة الفردوس  وكل امة المسلمة ان شاء الله

تم تعديل بواسطه sofiane05552
رابط هذا التعليق
شارك

اخي الكريم

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

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

امهلني بعض الوقت و سارفق لك شرح كامل عن الموضوع

  • Like 1
رابط هذا التعليق
شارك

5 ساعات مضت, محمد ايمن said:

اخي الكريم

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

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

امهلني بعض الوقت و سارفق لك شرح كامل عن الموضوع

لتوضيح فقط استاذ

1- في الشركة الي اعمل فيها لدينا  سيرفر يعني اذا وضعت فيه قاعدة بيانات تقدر تتواصل  منها قصدي اظن ميحتاج استضافة ولدينا سيرفر واذا انا مخطئ صحح لي معلومة استاذ و ايضا يجب ان اكبر حجم قاعدة بيانات في SQL لان ملايين المعلومات سيتم ادخلها في قاعدة بيانات

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

تم تعديل بواسطه sofiane05552
رابط هذا التعليق
شارك

2 ساعات مضت, محمد ايمن said:

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

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

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

1- بأن sql يقوم بتغطية هذه عيوب ويقوم بتكبير قاعدة بيانات علي اكسس 

2-  فقررت ان اسئلك يااستاذ اذا يمكن تكبير  قاعدة بيانات اكسس علي sql عشان حتي لو سجلت ملايير بيانات ماتعلق مايصير تشنج فيها 

3-اطلب منك مساعدتي في تكبيرها في sql + ماهو ملف  الي اضعه في سيرفر بعدما اكبرها في  sql 

4- و ماهو الملف المطلوب الي اوزعه فروع شركة  اتمنى ان اكون قد اصبت في شرح ان شاء الله

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

تم تعديل بواسطه sofiane05552
رابط هذا التعليق
شارك

5 ساعات مضت, محمد ايمن said:

هل يمكنك ارسال نسخة مصغرة عن قاعدة البيانات ؟؟

اول شئ عيدك مبارك وكل سنة وانت ب 1000 خير استاذ 

بخصوص قاعدة بيانات

عندما حاولت وضعها في منتدى جاتني رسالة تقول  حجمها كبير  يجب  علي  تقليل منها  وحذف  اشياء منها عشان تقدر تسوي لي  فيديو كيفية  تكبيرها في sql وماهو الملف الي اضعه في سيرفر تم وضعتها في   mediafire   عشان تقدر تحملها لان حجمها كبير   هاهو رابط   https://www.mediafire.com/file/ybxq0e3ll71huf1/my project sofzak11.accdb  اتمنى لو تسوي لي  فيديو  لكل  مراحل الي قلت لك عليها وانا اقلدك من فيديو استاذ عشان اتعلم 

رابط هذا التعليق
شارك

وانت بالف الف خير و اعاده الله على الجميع بالخير و البركة

جاري النظر بالموضوع اخي الكريم

ارجو منك مراسلتي على الخاص لاني حاولت ولم تكن رسائلي تصلك

تم تعديل بواسطه محمد ايمن
  • Like 1
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information