سؤالي كي نستطيع ان نعبئ اسماء المستخمين (Users) المضافون في قاعدة البيانات Sql في List Bog في الفيجوال وكيف نستطيع ان نعرف User Index من خلال الكود
تعبئة Users في List Box
هل السؤال غير واضح او ان الامر ليس له حل ام لا احد يعرف ؟؟ نريد رد واحد على الموضوع
حتى نحصل على أسماء الحواسب الموجودة على الشبكة والمجهزة بنظام إدارة قواعد البيانات SQL Serverيجب علينا أن نسأل أنفسنا ما يلي :
عندما نعمل على الـ SQL Server Enterprise Manager يوفر لنا هذا النظام من استعراض جميع الحواسب الموجودة على الشبكة وحيث أنه منتج لمايكروسوفت , فبإمكانك
وباستخدام لغات برمجتها من أن تروض أي منتج لها كما تروض الـ Word أو Excel أو .........
ولذلك عليك أن تعلم أنه لا بد أن يكون هناك ملف DLL (يمثل مكتبة من مكتبات التي تدير البنية الداخلية لعمليات الـ SQL Server ) يوفر لنا إمكانية إنجاز عملية جلب أسماء
الحواسب الموجودة على الشبكة والمحملة بنظام الـ SQL Server وبالفعل اسم هذا الملف هو SQLDMO.DLL
وصدقوني بمعرفتكم للبنية الداخلية لهذا الملف تستطيعوا أن تفعلوا ماتريدوا بنظام الـ SQL Server من إنشاء قاعدة بيانات أو عمل نسخ احتياطي لها أو ربط لها أن كانت خارج
الخدمة أو حذفها أو تشغيل محرك قواعد بيانات الـ SQL Server أو إيقافه عن العمل أو إطفاؤه أو أو أو ..............
على كل مايهمنا هنا هو كيف نحصل على أسماء الحواسب الموجودة على الشبكة والمجهزة بنظام الـ SQL Server :
اعذروني لأن الكود الذي سأكتبه هنا هو بلغة الـ VB6 وليس بلغة الـ VB.NET وذلك لأن بعض الأمور الذي سأستخدمها من مكتبة الـ SQLDMO.DLL مبنية على أساس واجهات
بلغة الـ C++ وليست مؤمنة على أساس توابع أو إجرائيات تستطيع التعامل معها مباشرةً (أرجوا أن يكون كلامي مفهوم) وبما أننا لا نملك الكود الأساسي لهذه المكتبة لكي
نعدله فيجب علينا أن نلتف على الموضوع : بكل بساطة الكود الذي سأقدمه يعمل على الـ VB6 بدون أي مشاكل , أما على الـ VB.NET فلن يعمل معك , لذلك قم ببناء مكتبة
DLL تحتوي على تابع يقوم بهذه المهمة واستدعي هذه المكتبة من الـ VB.NET :
سأعيدكم الآن الى معشوقكم القديم الـ VB6 :
افتح مشروع جديد في الـ VB6 وأضف إليه زراً وصندوق لائحة ComboBox
قم بإضافة مرجع الى مكتبة الـ SQLDMO.DLL من القائمة Project\Add Reference
اكتب الكود التالي في حدث النقر على الزر:
Code : vbnet Private Sub Command1_Click() ' Define SQL Server Application Dim oSQLServerApp As SQLDMO.Application Dim i As Integer 'Use the SQL DMO Application Object to find the available SQL Servers Set oSQLServerApp = New SQLDMO.Application ' Define Name List witch will be contain all available sql server Dim namX As NameList Set namX = oSQLServerApp.ListAvailableSQLServers ' Begin fill comboBox with available sql server on network Combo1.AddItem "(local)" For i = 1 To namX.Count Combo1.AddItem namX.Item(i) Next 'Show top server Combo1.ListIndex = 0 Set oSQLServerApp = Nothing End Sub
منقووووووووووووووووول من Parmaja_com
يا اخ Fmr4vb اطال الله فى عمرك و لا ترك لك موضوع بدون ردود ... موضوعك طرح يوم 10 و تريد له حل يوم 11 اصبر ما زلنا نبحث
و قد لا نستطيع معرفة الحل كل على حسب علمه
وكما قال mn_902 ال SQL-DMO رائعه بالفعل و يمكنك رؤية مواضيع فى منتدى الفيجوال بيسك دوت نيت استخدمنا فيها ال SQL-DMO اظنه موضوع واحد فقط لمعرفة ال SQL -SERVER الموجوده فى الشبكه
تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 12 ديسمبر 2004 في 20:04
Technical Lead Developer
اللهم قنى شر الجهل و الجهلاء
( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}
استخدم الاجراء المخزن sp_helpuser ثم قم بعمل دواره لملئ ال combo box
مرفق مثال بالفيجوال بيسك دوت نيت من نوع ال console
Technical Lead Developer
اللهم قنى شر الجهل و الجهلاء
( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}
شكراً لك اخي mn_902 على على هذا الرد الرائع وقد كنت سألت عن تعبئة اسماء المستخدمين في ListBox او ComboBox وليس اسماء الكوبيوترات الموجودة على الشبكة ولكن هذا الكود من الامور المهمة جداً بالنسبة لي وايضاً لكل من يستخدم الشبكة و Sql بشكل او بآخر ,,
وشكري ايضاً لك يا استاذ طارق على ردك واعذريني اذا كان ردي السابق قد ازعجك ولكن اهتمامي ب SQL وحرصي الشديد على معرفة كل صغيرة وكبيرة فيه يجعلني أكون مستعجلاً في معرفة الحلول وهذا لكوني عندي خبرة جيدة في الفيجوال بيسك وقواعد البيانات الاكسس ولكن Sql هي المرحلة الحالية بالنسبة لي وإن شاء الله سوف ترى نتائج اسئلتي الكثيرة تعود على خدمة هذا المنتدى الرائع وخدمة كل مرتادية بإذن الله والله يكتب لنا ولكم الاجر في علمنا هذا .
واخيراً ارجو ان تقبل اعتذاري مره اخرى
نسيت ان اقول يا اخ طارق انني استخدم VB6 ولا استخدم VB.Net فاذا امكن وضع الكود فقط على المنتدى او وضعه في ملف نصي مرفق لردك إن شاء الله .
للاسف لن يمكنك تطبيق الكود فى الفيجوال بيسك 6
Imports System.Data Imports System.Data.SqlClient Imports System.Data.SqlClient.SqlConnection Imports System.Data.SqlClient.SqlDataReader Module Module1 Sub Main() Dim cn As New SqlConnection() cn.ConnectionString = "data source=(local);initial catalog = test;integrated security = true;" 'command object properties Dim cmd As New SqlCommand() With cmd .Connection = cn .CommandType = CommandType.Text .CommandText = "exec sp_helpuser" End With cn.Open() 'open connection Dim i As Integer 'counter for the users Dim dr As SqlDataReader 'declare a reader dr = cmd.ExecuteReader 'instantiate the reader Do While dr.Read Console.Write(dr.Item(i)) Console.ReadLine() Loop cn.Close() 'close connection End Sub End Module
Technical Lead Developer
اللهم قنى شر الجهل و الجهلاء
( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}
هذا الموضوع مغلق.