تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] إستفسار عن إستدعاء متغير عام عن طريق الواجهات Interface
#1
السلام عليكم ورحمة الله وبركاته
أقوم حاليا بدراسة الموضوع التالي

إستخدام الواجهات Interface في إستدعاء الدوال و الروتينات من ملف Dll

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

الرابط

السؤال هو كيف أستدعي متغير عام موجود في كلاس في مشروع ال dll الثاني
الى المشروع الأول interface

sqlstr__
هو المتغير في هذة الحالة
كود :
public sqlstr__ as string
   Dim sqlcon As New OleDb.OleDbConnection

   Public Sub New()
       Dim Path_ = "C:\Users\asd\Documents\Visual Studio 2012\Projects\wininter\wininter\bin\Debug"
       sqlcon = New OleDb.OleDbConnection("provider=microsoft.ace.oledb.12.0;data source=" & Path_ & "\Myasd.DLL ;user id=admin;jet oledb:database password=1234567890")
   End Sub
   Public Sub open_con() Implements asd.Cls_Con_ACES.open_con
       If sqlcon.State = ConnectionState.Closed Then
           sqlcon.Open()
       End If
   End Sub
   Public Sub close_con() Implements asd.Cls_Con_ACES.close_con
       If sqlcon.State = ConnectionState.Open Then
           sqlcon.Close()
       End If
   End Sub



نص الأتصال دائما مع قواعد الأكسس نستخدم معه  Application.StartupPath &  لتحديد مسار البرنامج
إلا انه لا تنجح معي في هذة الحالة ولا اعلم لماذا 
فحاولت إنشاء متغير عام لجملة الأتصال حتى أستطيع وضع Application.StartupPath & 
فلم أستطع ان أصل لطريقة الاستخدام

وجزاكم الله خيرا
لا إله إلا الله وحده لا شريك له له الملك وله الحمد وهو على كل شئ قدير
سبحان الله وبحمده سبحان الله العظيم
سبحان الله والحمد لله ولا إله إلا الله والله أكبر ولا حول ولا قوة إلا بالله العلى العظيم
رب أغفر لي 
الرد
تم الشكر بواسطة:
#2
ضع المكتبة مع ملفات المشروع عند التجريب و استدعها من هناك .

سبحان الله وبحمده و الحمد لله ولا اله الا الله والله اكبر
الرد
تم الشكر بواسطة: rnmr , princelovelorn
#3
(06-10-18, 11:20 PM)asemshahen5 كتب : ضع المكتبة مع ملفات المشروع عند التجريب و استدعها من هناك .

مثل ما تقول حضرتك إذا وضعتها مع ملفات المشروع اي اضفتها في الرفرانس  سيتم ظهورها بجانب ملفات المشروع وسيتم الاستدعاء بدون اي مشكلة 
ولكن المكتبة مرفقة بالفعل مع المشروع ولكن من الريسورس وبخاصية Embedded Resource
وذلك الغرض الاساسي من الفكرة انها لا تظهر كملف مع ملفات المشروع
الفكرة مذكورة في هذا الموضوع للافادة ولكى أوضح لك ماأقصده أخي الفاضل
تشفير الملفات التنفيذية
لا إله إلا الله وحده لا شريك له له الملك وله الحمد وهو على كل شئ قدير
سبحان الله وبحمده سبحان الله العظيم
سبحان الله والحمد لله ولا إله إلا الله والله أكبر ولا حول ولا قوة إلا بالله العلى العظيم
رب أغفر لي 
الرد
تم الشكر بواسطة:
#4
جرب هذا بالكلاس :

كود :
Public Class ConnectionXT
   Dim sqlcon As New OleDb.OleDbConnection
   Public Sub ConnString(Path As String)
       sqlcon = New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Path & ";Jet OLEDB:Database Password=;")
       If sqlcon.State = ConnectionState.Closed Then
           sqlcon.Open()
       End If
   End Sub
End Class
و عند استدعائها بالكود التالي :
كود :
Dim StrConn As New ConnectionXT
StrConn.ConnString(Application.StartupPath & "\Database1.accdb")

سبحان الله وبحمده و الحمد لله ولا اله الا الله والله اكبر
الرد
تم الشكر بواسطة: rnmr
#5
(07-10-18, 12:07 AM)asemshahen5 كتب : جرب هذا بالكلاس :

كود :
Public Class ConnectionXT
   Dim sqlcon As New OleDb.OleDbConnection
   Public Sub ConnString(Path As String)
       sqlcon = New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Path & ";Jet OLEDB:Database Password=;")
       If sqlcon.State = ConnectionState.Closed Then
           sqlcon.Open()
       End If
   End Sub
End Class
و عند استدعائها بالكود التالي :
كود :
Dim StrConn As New ConnectionXT
StrConn.ConnString(Application.StartupPath & "\Database1.accdb")

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

وايضا اسلوب استدعاء الكلاسات من المكتبة باسلوب ال interface مختلف ولا تنفع معه هذا الاستدعاء
انظر لكود استددعاء كلاس كامل 

كود :
Module M_Con_SQL
   Dim buffer As Byte() = My.Resources.asdDll
   ' تحميل الملف
   Dim dll As System.Reflection.Assembly = System.Reflection.Assembly.Load(buffer)
   '--------------------------------------
   ' تعريف متغير يعبر عن اسم الكلاس في المشروع الثاني شاملا الاسم الخاص بفضاء الأسماء الموجود بها الكلاس
   Dim dllName As String = "asdDll.Cls_Con_SQL"
   Dim t As Type = dll.GetType(dllName)
   ' أخيرا نحصل علي الواجهة كالتالي
   Public mycls_SQL As Cls_Con_SQL = CType(Activator.CreateInstance(t), Cls_Con_SQL)
   ' اخيرا نستخدم الدالة الموجودة في الواجهة
   '-------------------------------------
End Module
كل كلاس يتم استدعائة من المكتبة عن طريق الكود السابق  ثم تجد كل الاجراءات والدوال تحت أمرك  بشرط ان تكون موجودة ومصرح عنها في مشروع ال interface
والحمد لله والفضل لله كل شئ يعمل تمام الا هذة المشكلة وهى نص الاتصال
فانا اريده كما اشرت سابقا عن طريق مسار البرنامج برمجيا 
وملحوظة لو وضعت المسار الفعلى نصيا يعمل الكود بدون اي مشكلة  ولكن لا يصلح ذلك عمليا  فنا اريد البرنامج حر التحرك وليس مقيد بمسار ثابت
لا إله إلا الله وحده لا شريك له له الملك وله الحمد وهو على كل شئ قدير
سبحان الله وبحمده سبحان الله العظيم
سبحان الله والحمد لله ولا إله إلا الله والله أكبر ولا حول ولا قوة إلا بالله العلى العظيم
رب أغفر لي 
الرد
تم الشكر بواسطة: rnmr
#6
جرب هذا :

كود :
   Public Sub New()
       Dim Path_ = My.Application.Info.DirectoryPath.ToString
       sqlcon = New OleDb.OleDbConnection("provider=microsoft.ace.oledb.12.0;data source=" & Path_ & "\Myasd.DLL;user id=admin;jet oledb:database password=1234567890")
   End Sub


أو هذا :

كود :
   Public Sub New()
       sqlcon = New OleDb.OleDbConnection("provider=microsoft.ace.oledb.12.0;data source=|datadirectory|\Myasd.DLL;user id=admin;jet oledb:database password=1234567890")
   End Sub

سبحان الله وبحمده و الحمد لله ولا اله الا الله والله اكبر
الرد
تم الشكر بواسطة: rnmr , rnmr , princelovelorn
#7
(07-10-18, 01:35 AM)asemshahen5 كتب : جرب هذا :

كود :
   Public Sub New()
       Dim Path_ = My.Application.Info.DirectoryPath.ToString
       sqlcon = New OleDb.OleDbConnection("provider=microsoft.ace.oledb.12.0;data source=" & Path_ & "\Myasd.DLL;user id=admin;jet oledb:database password=1234567890")
   End Sub


أو هذا :

كود :
   Public Sub New()
       sqlcon = New OleDb.OleDbConnection("provider=microsoft.ace.oledb.12.0;data source=|datadirectory|\Myasd.DLL;user id=admin;jet oledb:database password=1234567890")
   End Sub

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

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  سؤال بخصوص البحث باستخدام التاريخ عن طريق WebService masry4u 3 79 08-12-18, 08:36 PM
آخر رد: masry4u
Heart سؤال عن حساب السن (العمر) عن طريق تاريخ الميلاد ahmadpal 10 185 07-12-18, 04:52 PM
آخر رد: ahmadpal
  كيف اجعل الترتيب في امر select بواسطة متغير تناسيم 4 90 25-11-18, 02:23 PM
آخر رد: حريف برمجة
  التعامل مع برنامج الإكسل عن طريق الفيجول ستوديو +yassen+ 4 113 22-11-18, 06:17 PM
آخر رد: +yassen+
  مطلوب كود : تاكيد هوية شخص ما عن طريق الصوت pablon_pc 3 106 18-11-18, 12:57 PM
آخر رد: pablon_pc
  كيف اجعل visual basic يعمل مقارنة متغير مع عناطر الجدول MKSaeed 3 114 08-11-18, 12:27 PM
آخر رد: elgokr
  [سؤال] مشكلة في اظهار صورة عن طريق path Simo1991 4 111 06-11-18, 05:52 PM
آخر رد: Simo1991
  الرجاء المساعدة في كتابة كود اتصال عن طريق السيريال بورت moftah70 3 137 06-11-18, 03:20 PM
آخر رد: moftah70
  [VB.NET] سحب نص من رابط متغير XBOOBX 3 115 02-11-18, 09:28 PM
آخر رد: XBOOBX
  إضافة متغير داخل Settings sads 9 184 29-10-18, 07:04 PM
آخر رد: elgokr

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


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