تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
الغزل مع SQL Server
#11
بســـم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته
نستكمل ما تبقى من مشروعنا باذن الله.
اليوم نبحث في موضوع الاستفادة من السكربتات التي يقدمها SqlServer .
السكربت:هو ملف نصي يحتوي مجموعة من جمل Sql المعيارية يفصل بينها بالكلمة GO في غالب الاحيان لتنفيذ الجمل واحدة تلو الاخرى.
يستخدم السكربت لامور كثيرة في الغالب لانشاء وحذف الكائنات (قواعد-جداول-استعلامات-اجراءات-مفاتيح...).
كما وتستخدم في عمليات معالجة البيانات (الاضافة-التعديل-الحذف-كذلك البحث..) باختصار كل ما يخطر ببالك طالما انها جمل
Sql
تدعم كل قواعد البيانات العمل مع السكربتات طالما انها مكتوبة باللغة المعيارية.

ساحاول اليوم إن شاء الله شرح طريقة التعامل مع السكربتات (Script) من خلال VB.Net .

العمل مع السكربتات من خلال VB.Net

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

سنحتاج الى مجموعة من الادوات لتطبيق المثال , فضلت تجميعها في عنصر GroupBox و كذلك تجميع الازرار في عنصر ToolStrip
لاضفاء نوع من الترتيب و الجمالية , الصورة التالية توضح المطلوب.


الادوات المطلوبة:

  1. ToolStrip  نسميها  ToolStrip1  نستخدمها لتجميع الازرار.
  2. Button  نسميه  ToolStripLoadScript  نستخدمه لفتح ملفات السكربت و تحميلها في مربع النص.
  3. Button  نسميه  ToolStripSaveScript  نستخدمه لتخزين نص السكربت الى ملف خارجي.
  4. Button  نسميه  ToolStripShowScript  نستخدمه لعرض السكربت الخاص بالكائن المحدد.
  5. Button  نسميه  ToolStripBatchScript  نستخدمه لتنفيذ السكربت المعروض لدينا.
  6. ComboBox  نسميه  ToolStripCmbScriptLed نستخدمه لعرض محتويات الكائن المحدد (سيتم شرحه).
  7. RadioButton  نسميه  RadioButton1  (في حال كان العنصر المحدد قاعدة سيتم تفعيله).
  8. RadioButton  نسنيه  RadioButton2  (في حال كان العنصر المحدد جدول سيتم تفعيله).
  9. RadioButton  نسنيه  RadioButton3  (في حال كان العنصر المحدد إستعلام سيتم تفعيله).
  10. RadioButton  نسنيه  RadioButton4  (في حال كان العنصر المحدد إجراء سيتم تفعيله).
  11. TextBox  نسميه  txtScriptInfo  نستخدمه لاعطاء وصف للعنصر المحدد.
  12. TextBox  نسميه  TxtTst  نستخدمه لعرض السكربت (مع تفعيل خاصية MultiLine).
  13. TextBox  نسميه TxtLength  نسيتخدمه لعرض طول نص السكربت.
  14. TextBox  نسميه  TxtLines  نستخدمه لعرض عدد الاسطر.
  15. TextBox  نسميه  TxtPath  نستخدمه لعرض المسار.




الان نعالج الحدث
ToolStripLoadScript .
الفكرة هي فتح ملف نصي و عرضه في مربع النص ,للاسف هناك مشكلة بسيطة متعلقة بكلمة
GO  و كلمة USE الموجودتان ضمن ملف السكربت
اذ ان تنفيذ السكربت عن طريق
SqlSmo  يجب ان يتم دفعة واحدة و ليس جملة جملة كما هو الحال مع SqlServer لذا وجب حذف
كلمة
GO على امتداد الملف و كذلك كلمة Use في حال وجودها.
انا لن اشرح طريقة التعامل مع الملفات و المجلدات و فتحها المفروض انك ملم بذلك.
الكود التالي يوضح عملية فتح ملف سكربت و ملف نصي ضمن الامتداد الذي تحدده , و كذلك حذف كلمة
GO و كلمة Use على متداد النص.
و عرضه في مربع النص

كود :
Private Sub ToolStripLoadScript_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripLoadScript.Click
       'فتح ملف سكربت خارجي
       Dim OpenFd As New OpenFileDialog
       Dim sql1 As String = Nothing
       Dim mystrem As StreamReader = Nothing
       Dim f1 As FileInfo
       '-------------------------------------------------------------
       OpenFd.Filter = "Txt Files (*.txt)|*.txt| Sql Files (*.sql)|*.sql"
       OpenFd.FilterIndex = 2
       OpenFd.RestoreDirectory = True
       '-------------------------------------------------------------
       If OpenFd.ShowDialog = Windows.Forms.DialogResult.OK Then
           '------------------
           f1 = New FileInfo(OpenFd.FileName)
           '-----------------
           Try
               '-----------------------------------------
               TxtPath.Text = OpenFd.FileName
               
               mystrem = New StreamReader(f1.OpenRead)
               '-----------------------------------------
               While mystrem.Peek <> -1
                   sql1 = (mystrem.ReadToEnd)
                   sql1 += vbLf & "GO"
               End While
               '------------------------------
               TxtTst.Clear()
               '------------------------------
               For Each line As String In sql1.Split(New String(1) {vbLf, vbCr}, StringSplitOptions.RemoveEmptyEntries)
                   '------------------------------------------------------------
                   If Not (line.ToUpperInvariant.Trim) = "GO" Then
                       If Not (line.Contains("USE")) Then
                           TxtTst.AppendText(line + System.Environment.NewLine)
                       End If

                   End If
                   '------------------------------------------------------------
               Next
               '--------------------------------------------------------------------------------------------------------------


           Catch ex As Exception

           End Try

       End If

   End Sub



الان اصبح لدينا نص السكربت معروض في مربع النص
TxtTst .
بعد ذلك سنعالج الحدث
ToolStripSaveScript الخاص بتخزين النص الى ملف خارجي من النوع Sql او Txt او اي امتداد تفضله.
ان كنت تعاملت مع طرق تخزين الملفات فالعملية سهلة كما في الكود التالي.

كود :
Private Sub ToolStripSaveScript_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripSaveScript.Click
       'حفظ السكربت الى ملف خارجي
       If TxtTst.TextLength > 0 Then
           Dim SaveDg As New SaveFileDialog()
           SaveDg.Filter = "Txt Files (*.txt)| *.txt| Sql Files (*.sql)|*.sql"
           SaveDg.FilterIndex = 2
           SaveDg.RestoreDirectory = True

           If SaveDg.ShowDialog() = DialogResult.OK Then
               IO.File.WriteAllText(SaveDg.FileName, TxtTst.Text)
           End If
       End If

   End Sub



الان سنعالج الزر الخاص بعرض بنية السكربت الخاص بالعناصر المعروضة لدينا (قاعدة-جدول إستعلام-إجراء).
سبق لنا و تعرفنا الى طرق عرضها , ماذا لو احببت ان اخزن السكربتات الخاصة بها او ان انفذ سكربت انشاء جدول من قاعدة الى قاعدة
او حتى انشاء القاعدة على سيرفر اخر موجود لدي و غيرها من الامور.

لكي لا نقع في اخطاء فضلت التعامل مع كل عنصر على حده عندما أضفت عناصر
RadioButtons  .
فعند تحديد قاعدة بيانات مثلا سيكون لدي في
ComboBox المسمى ToolStripCmbScriptLed السيرفرات المثبتة في الجهاز
لان تنفيذ سكربت انشاء القاعدة سيكون على السيرفر.
اما عند تحديد جدول فسيتم عرض قواعد البيانات في  
ToolStripCmbScriptLed , و هكذا مع الاستعلامات و الاجراءات.
لا عليك فقط تابع و سترى المطلوب.
نعود للقائمة الخاصة بعرض قواعد البيانات (
ListBox2) و نضيف لها السطر التالي .

كود :
RadioButton1.Checked = True


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

قائمة الجداول نضيف الكود التالي.

كود :
RadioButton2.Checked = True



قائمة الاستعلامات

كود :
RadioButton3.Checked = True



قائمة الاجراءات

كود :
RadioButton4.Checked = True



بعد ذلك ناتي الى حدث
ToolStripShowScript .
اولا بعض الرسائل للحرص و التاكد ان هناك سيرفرات و قواعد مثبتة كما يلي.

كود :
If LstSrv.Items.Count <= 0 Then
           MessageBox.Show("لا يوجد سيرفرات مثبتة على الجهاز", "فحص السيرفرات", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
           Exit Sub
       End If

       If LstDbs.Items.Count <= 0 Then
           MessageBox.Show("لا يوجد قواعد حاول الاتصال بالسيرفر", "فحص القواعد", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
           Exit Sub
       ElseIf LstDbs.SelectedIndex = -1 Then
           MessageBox.Show("حدد قاعدة البيانات اولا", "فحص القواعد", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
           Exit Sub
       End If


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

كود :
       TxtTst.Clear()
       txtScriptInfo.Clear()
       ToolStripCmbScriptLed.Items.Clear()


بعد هذا سنكون جاهزين للتعامل مع السكربت , و لكن قبل ذلك سنضبط بعض الخيارات للسكربت بعد انشاء كائن
ScriptingOptions و بعد ذلك اسناده للسكربت
كما يلي.

كود :
Dim options As ScriptingOptions = New ScriptingOptions()
       options.IncludeIfNotExists = True
       options.ClusteredIndexes = True
       options.Default = True
       options.DriAll = True
       options.Indexes = True
       options.IncludeHeaders = False


الجيد في الامر ان السكربت الخاص بكل كائن هو عبارة عن ملف نصي لذا علينا التعامل معه وفق ذلك.
سنعرف
Stringcollection يخزن معلومات السكربت و من ثم نمر على كل نص داخله و نعرضه في TxtTst.

كود :
Dim Dbs As Database = srv.Databases(LstDbs.SelectedItem.ToString)
       Dim coll As StringCollection
       Dim str As String = ""


الان اصبحت الامور جاهزة الان سنعالج الكائن المحدد كما يلي:

في حال قاعدة البيانات

كود :
       'قاعدة
       If RadioButton1.Checked = True Then
           If LstDbs.Items.Count > 0 And LstDbs.SelectedIndex <> -1 Then
               coll = Dbs.Script(options)
               For Each str In coll
                   TxtTst.AppendText(str + System.Environment.NewLine)
               Next
               txtScriptInfo.Text = "سكربت قاعدة بيانات" + " - " + Dbs.Name
               For Each ItemName As String In LstSrv.Items
                   ToolStripCmbScriptLed.Items.Add(ItemName)
               Next
           End If

       End If




في حال جدول

كود :
'جدول
       If RadioButton2.Checked = True Then
           If LstTable.Items.Count > 0 And LstTable.SelectedIndex <> -1 Then
               Dim tbl As Table = Dbs.Tables(LstTable.SelectedItem.ToString)
               coll = Dbs.Tables(tbl.Name).Script(options)
               For Each str In coll
                   TxtTst.AppendText(str + System.Environment.NewLine)
               Next
               txtScriptInfo.Text = "سكربت الجدول" + " - " + Dbs.Name + "/" + tbl.Name
               For Each ItemName As String In LstDbs.Items
                   ToolStripCmbScriptLed.Items.Add(ItemName)
               Next
           End If
       End If




في حال إستعلام

كود :
'إستعلام
       If RadioButton3.Checked = True Then
           If LstViews.Items.Count > 0 And LstViews.SelectedIndex <> -1 Then
               Dim view1 As View = Dbs.Views(LstViews.SelectedItem.ToString)
               coll = Dbs.Views(view1.Name).Script(options)
               For Each str In coll
                   TxtTst.AppendText(str + System.Environment.NewLine)
               Next
               txtScriptInfo.Text = "سكربت الإستعلام" + " - " + Dbs.Name + "/" + view1.Name
               For Each ItemName As String In LstDbs.Items
                   ToolStripCmbScriptLed.Items.Add(ItemName)
               Next

           End If
       End If




في حال إجراء مخزن

كود :
'إجراء
       If RadioButton4.Checked = True Then
           If LstStoredPro.Items.Count > 0 And LstStoredPro.SelectedIndex <> -1 Then
               Dim Stored1 As StoredProcedure = Dbs.StoredProcedures(LstStoredPro.SelectedItem.ToString)
               coll = Dbs.StoredProcedures(Stored1.Name).Script(options)
               For Each str In coll
                   TxtTst.AppendText(str + System.Environment.NewLine)
               Next
               txtScriptInfo.Text = "سكربت الإجراء" + " - " + Dbs.Name + "/" + Stored1.Name
               For Each ItemName As String In LstDbs.Items
                   ToolStripCmbScriptLed.Items.Add(ItemName)
               Next
           End If
       End If


الان اصبحنا قادرين على عرض اي سكربت لاي كائن نحدده الكود الكامل لهذا الزر كما يلي:

كود :
If LstSrv.Items.Count <= 0 Then
           MessageBox.Show("لا يوجد سيرفرات مثبتة على الجهاز", "فحص السيرفرات", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
           Exit Sub
       End If

       If LstDbs.Items.Count <= 0 Then
           MessageBox.Show("لا يوجد قواعد حاول الاتصال بالسيرفر", "فحص القواعد", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
           Exit Sub
       ElseIf LstDbs.SelectedIndex = -1 Then
           MessageBox.Show("حدد قاعدة البيانات اولا", "فحص القواعد", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
           Exit Sub
       End If


       TxtTst.Clear()
       txtScriptInfo.Clear()
       ToolStripCmbScriptLed.Items.Clear()
       Dim options As ScriptingOptions = New ScriptingOptions()
       options.IncludeIfNotExists = True
       options.ClusteredIndexes = True
       options.Default = True
       options.DriAll = True
       options.Indexes = True
       options.IncludeHeaders = False
       Dim Dbs As Database = srv.Databases(LstDbs.SelectedItem.ToString)
       Dim coll As StringCollection
       Dim str As String = ""




       'قاعدة
       If RadioButton1.Checked = True Then
           If LstDbs.Items.Count > 0 And LstDbs.SelectedIndex <> -1 Then
               coll = Dbs.Script(options)
               For Each str In coll
                   TxtTst.AppendText(str + System.Environment.NewLine)
               Next
               txtScriptInfo.Text = "سكربت قاعدة بيانات" + " - " + Dbs.Name
               For Each ItemName As String In LstSrv.Items
                   ToolStripCmbScriptLed.Items.Add(ItemName)
               Next
           End If

       End If

       'جدول
       If RadioButton2.Checked = True Then
           If LstTable.Items.Count > 0 And LstTable.SelectedIndex <> -1 Then
               Dim tbl As Table = Dbs.Tables(LstTable.SelectedItem.ToString)
               coll = Dbs.Tables(tbl.Name).Script(options)
               For Each str In coll
                   TxtTst.AppendText(str + System.Environment.NewLine)
               Next
               txtScriptInfo.Text = "سكربت الجدول" + " - " + Dbs.Name + "/" + tbl.Name
               For Each ItemName As String In LstDbs.Items
                   ToolStripCmbScriptLed.Items.Add(ItemName)
               Next
           End If
       End If

       'إستعلام
       If RadioButton3.Checked = True Then
           If LstViews.Items.Count > 0 And LstViews.SelectedIndex <> -1 Then
               Dim view1 As View = Dbs.Views(LstViews.SelectedItem.ToString)
               coll = Dbs.Views(view1.Name).Script(options)
               For Each str In coll
                   TxtTst.AppendText(str + System.Environment.NewLine)
               Next
               txtScriptInfo.Text = "سكربت الإستعلام" + " - " + Dbs.Name + "/" + view1.Name
               For Each ItemName As String In LstDbs.Items
                   ToolStripCmbScriptLed.Items.Add(ItemName)
               Next

           End If
       End If


       'إجراء
       If RadioButton4.Checked = True Then
           If LstStoredPro.Items.Count > 0 And LstStoredPro.SelectedIndex <> -1 Then
               Dim Stored1 As StoredProcedure = Dbs.StoredProcedures(LstStoredPro.SelectedItem.ToString)
               coll = Dbs.StoredProcedures(Stored1.Name).Script(options)
               For Each str In coll
                   TxtTst.AppendText(str + System.Environment.NewLine)
               Next
               txtScriptInfo.Text = "سكربت الإجراء" + " - " + Dbs.Name + "/" + Stored1.Name
               For Each ItemName As String In LstDbs.Items
                   ToolStripCmbScriptLed.Items.Add(ItemName)
               Next
           End If
       End If



و اخيرا بقي تنفيذ السكربت المعروض لدينا .

ملاحظة هامة:السكربتات الخاصة بالاستعلامات و الاجراءات هي كما نعلم ترتكز على كائن موجود (الجدول) لذلك عند تنفيذ
سكربت لاجراء او استعلام تاكد من الجدول الذي يرتكز عليه هذا الكائن.


ان تنفيذ السكربت سهل للغاية فهو كتنفيذ جمل Sql في كائن ADO.Net .
كما هو معلوم لدينا اننا نستخدم كائنات
Command لتنفيذ جملنا اثناء التعامل مع قواعد البيانات و تحديدا باستدعاء الطريقة
التابعة لهذا العنصر (
ExecuteNonQuery).

سنفرق بين امرين هنا إنشاء قاعدة البيانات و إنشاء باقي العناصر المشمولة في قاعدة البيانات كما يلي:

إنشاء قاعدة البيانات

كود :
'انشاء القاعدة على سيرفر اخر
       If RadioButton1.Checked = True And ToolStripCmbScriptLed.Text <> "" Then
           If ToolStripCmbScriptLed.Text.Equals(LstSrv.SelectedItem.ToString) Then
               MessageBox.Show("لا يمكن انشاء قاعدة البيانات على نفس السيرفر", "تنفيذ السكربت", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
               Exit Sub

           Else
               Try
                   srv = New Server(ToolStripCmbScriptLed.Text)
                   srv.ConnectionContext.ExecuteNonQuery(TxtTst.Text)

               Catch ox As SmoException
                   MsgBox(ox.Message.ToString)
               Catch ex As Exception
                   MsgBox(ex.Message.ToString)

               End Try


           End If


       End If


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

كود :
options.IncludeIfNotExists = True


على اي حال نكمل مع باقي عناصر القاعدة (جدول-استعلام-اجراء)
تم شمل هذه العناصر بكود واحد لان القاعدة المحددة واحدة.
الكود كما يلي:

كود :
       'انشاءالجدول و الاستعلامات و الاجراءات
       If RadioButton2.Checked = True Or RadioButton3.Checked = True Or RadioButton4.Checked = True Then

           If ToolStripCmbScriptLed.Text <> "" Then
               Try
                   srv = New Server(LstSrv.SelectedItem.ToString)
                   Dim Dbase As Database = srv.Databases(ToolStripCmbScriptLed.Text)
                   Dbase.ExecuteWithResults(TxtTst.Text)
               Catch ox As SmoException
                   MsgBox(ox.Message.ToString)
               Catch ex As Exception
                   MsgBox(ex.Message.ToString)

               End Try
           Else
               MessageBox.Show("يرجى تحديد قاعدة البيانات اولا", "تنفيذ السكربت", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
               ToolStripCmbScriptLed.Focus()
               Exit Sub

           End If


       End If



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

كود :
Private Sub ToolStripBatchScript_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripBatchScript.Click

       'انشاء القاعدة على سيرفر اخر
       If RadioButton1.Checked = True And ToolStripCmbScriptLed.Text <> "" Then
           If ToolStripCmbScriptLed.Text.Equals(LstSrv.SelectedItem.ToString) Then
               MessageBox.Show("لا يمكن انشاء قاعدة البيانات على نفس السيرفر", "تنفيذ السكربت", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
               Exit Sub

           Else
               Try
                   srv = New Server(ToolStripCmbScriptLed.Text)
                   srv.ConnectionContext.ExecuteNonQuery(TxtTst.Text)

               Catch ox As SmoException
                   MsgBox(ox.Message.ToString)
               Catch ex As Exception
                   MsgBox(ex.Message.ToString)

               End Try


           End If


       End If



       'انشاءالجدول و الاستعلامات و الاجراءات
       If RadioButton2.Checked = True Or RadioButton3.Checked = True Or RadioButton4.Checked = True Then

           If ToolStripCmbScriptLed.Text <> "" Then
               Try
                   srv = New Server(LstSrv.SelectedItem.ToString)
                   Dim Dbase As Database = srv.Databases(ToolStripCmbScriptLed.Text)
                   Dbase.ExecuteWithResults(TxtTst.Text)
               Catch ox As SmoException
                   MsgBox(ox.Message.ToString)
               Catch ex As Exception
                   MsgBox(ex.Message.ToString)

               End Try
           Else
               MessageBox.Show("يرجى تحديد قاعدة البيانات اولا", "تنفيذ السكربت", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
               ToolStripCmbScriptLed.Focus()
               Exit Sub

           End If


       End If

   End Sub


بقي كود طول النص و عدد الاسطر كما يلي:

كود :
Private Sub TxtTst_TextChanged(sender As System.Object, e As System.EventArgs) Handles TxtTst.TextChanged
       If TxtTst.TextLength <= 0 Then
           ToolStripBatchScript.Enabled = False
       Else
           ToolStripBatchScript.Enabled = True
       End If

       TxtLength.Text = TxtTst.TextLength.ToString
       TxtLines.Text = TxtTst.Lines.Count
   End Sub



اصبح لدينا كل ما نحتاجه و اصبح المثال كاملا.
تم بحمد الله و فضله.
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}
#12
تحياتي وتقديري
أخي الكريم على هذا المقال الرائع والمفيد جداً جداً
جزاك الله كل خير ، وجعله في ميزان حسناتك
وتقبل خالص الشكر والعرفان
الرد }}}
تم الشكر بواسطة: ابو ليلى
#13
اسف للتاخر في رفع المثال
VS 2010


الملفات المرفقة
.rar   SQLPpro.rar (الحجم : 166.03 ك ب / التحميلات : 263)
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}
#14
جزاك الله كل خير فعلاً مقال جميل جداً بكل ما تحمله الكلمة
تم التقييم Wink

تحياتي لك
اللَّهُمَّ أَنْتَ رَبِّي ، لا إِلَه إِلاَّ أَنْتَ خَلَقْتَني وأَنَا عَبْدُكَ ، وأَنَا على عهْدِكَ ووعْدِكَ ما اسْتَطَعْتُ ، أَعُوذُ بِكَ مِنْ شَرِّ ما صنَعْتُ ، أَبوءُ لَكَ بِنِعْمتِكَ علَيَ ، وأَبُوءُ بذَنْبي فَاغْفِرْ لي ، فَإِنَّهُ لا يغْفِرُ الذُّنُوبِ إِلاَّ أَنْتَ .
الرد }}}
تم الشكر بواسطة: ابو ليلى , ابو ليلى
#15
كانت هناك مشكلة في كود جلب السيرفرات المنصبة بالحاسوب .
وكانت هناك رسالة خطأ تظهر لدي


تم إستبداله بـ :

كود :
Private Sub GetServerList()

        Dim Server As String = String.Empty
        Dim instance As SqlDataSourceEnumerator = SqlDataSourceEnumerator.Instance
        Dim table As System.Data.DataTable = instance.GetDataSources()

        For Each row As System.Data.DataRow In table.Rows
            Server = String.Empty
            Server = row("ServerName")
            If row("InstanceName").ToString.Length > 0 Then
                Server = Server & "\" & row("InstanceName")
            End If
            LstSrv.Items.Add(Server)
        Next

        LstSrv.SelectedIndex = LstSrv.FindStringExact(Environment.MachineName)


    End Sub
اللَّهُمَّ أَنْتَ رَبِّي ، لا إِلَه إِلاَّ أَنْتَ خَلَقْتَني وأَنَا عَبْدُكَ ، وأَنَا على عهْدِكَ ووعْدِكَ ما اسْتَطَعْتُ ، أَعُوذُ بِكَ مِنْ شَرِّ ما صنَعْتُ ، أَبوءُ لَكَ بِنِعْمتِكَ علَيَ ، وأَبُوءُ بذَنْبي فَاغْفِرْ لي ، فَإِنَّهُ لا يغْفِرُ الذُّنُوبِ إِلاَّ أَنْتَ .
الرد }}}
تم الشكر بواسطة: ابو ليلى , حريف برمجة
#16
بارك الله فيك وجزاك الله عنا الف خير
الرد }}}
تم الشكر بواسطة:
#17
عند اختيار او الضغط علي اسم اي قاعدة في اللستة يظهر هذا الحطأ البسيط
ولكن لم اتوصل الي اين اضع new
شكرا

اتمني الرد علي مشكلتي
الرد }}}
تم الشكر بواسطة: elgokr
#18
قم باعدة قراءة الشرح مجدداً اخى الفاضل
وكذلك مراجعة الردود كاملاً حتى اخر رد

وستتمكن من معالجة الامر تماماً


تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: ابو ليلى
#19
والله قرات مرة واثنين وحاولت بطرق كثيرة.  اتمني تعديل المثال او اين اضع ،، new
الرد }}}
تم الشكر بواسطة: ابو ليلى
#20
السلام عليكم و رحمة الله و بركاته
الموضوع قديم اخي الفاضل و انا حملت المثال و هو يعمل معي
بالنسبة لطلبك في هذه النقطة تاكد من استيراد المراجع الصحيحية .
اذا كانت الغاية تطبيق المثال كامل فعليك مراجعة الشرح و التركيز على كافة النقاط
اما اذا كان طلبك يرتكز على هدف محدد فاطرح سؤالك في النقطة التي تريدها لان هناك طرق اخرى للحل.
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم