منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] تحويل نص فى Data Reader إلى كود - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [VB.NET] تحويل نص فى Data Reader إلى كود (/showthread.php?tid=34735)



تحويل نص فى Data Reader إلى كود - Doctor GME - 13-05-20

هذه هى واجهة البرنامج:



وهذا هو تصميم قاعدة البيانات:



عند تنفيذ الكود الخاص با CmbInfoType يتحول النص الذى يخرج من Data Reader إلى كود
يجعل ملف ال word الموجود فى my resources يفتح محتوياته فى rich textbox
ولكن البرنامج يعطى خطأ:
Failed to Compile Script

وهذا هو كود البرنامج:

كود :
Imports System.CodeDom.Compiler
Imports System.Data.OleDb
Imports System.Reflection
Public Class Form1

   Dim cnn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Informations.accdb")
   Dim da As OleDbDataAdapter
   Dim dr As OleDbDataReader

   Public Function GenerateScript(code As String) As IScript
       Using provider As New VBCodeProvider()
           Dim parameters As New CompilerParameters()
           parameters.GenerateInMemory = True
           parameters.ReferencedAssemblies.Add(Assembly.GetExecutingAssembly().Location)
           parameters.ReferencedAssemblies.Add("System.Data.dll")
           parameters.ReferencedAssemblies.Add("System.Xml.dll")
           Dim interfaceNamespace As String = GetType(IScript).Namespace
           Dim codeArray() As String = New String() {"Imports " & interfaceNamespace & Environment.NewLine & code}
           Dim results As CompilerResults = provider.CompileAssemblyFromSource(parameters, codeArray)
           If results.Errors.HasErrors Then
               Throw New Exception("Failed to compile script")
           Else
               Return CType(results.CompiledAssembly.CreateInstance("Script"), IScript)
           End If
       End Using
   End Function

   Public Interface IScript
       Function DoWork() As String
   End Interface

   Private Sub CmbInfoCategory_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CmbInfoCategory.SelectedIndexChanged

       CmbInfoType.Items.Clear()

       If CmbInfoCategory.SelectedItem = ("Diaries") Then

           Dim dt1 As New DataTable
           dt1.Clear()
           Dim sql As String = "SELECT * FROM Diaries"
           da = New OleDbDataAdapter(sql, cnn)
           da.Fill(dt1)
           For ii As Integer = 0 To dt1.Rows.Count - 1
               CmbInfoType.Items.Add(dt1(ii)(0))
           Next

       End If

   End Sub

   Private Sub CmbInfoType_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CmbInfoType.SelectedIndexChanged

       Using cnn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Informations.accdb")
           cnn.Open()

           Try
               Dim sql As String = "SELECT * From Diaries WHERE DiaryName= @myname"
               Dim cmd As New OleDbCommand(sql, cnn)
               cmd.Parameters.AddWithValue("@myname", CmbInfoType.SelectedItem)
               dr = cmd.ExecuteReader
               If dr.Read = False Then
                   MsgBox("No Patient is Registered Under This Number")
               Else

                   Dim script As IScript = GenerateScript(dr.Item(1).ToString())
                   script.DoWork()

               End If
           Catch ex As Exception
               MsgBox(ex.Message)
           End Try

           cnn.Close()
       End Using

   End Sub
End Class

البرنامج موجود فى المرفقات


RE: تحويل نص فى Data Reader إلى كود - عبدالله الدوسري - 17-05-20

في مثل يقول :
مالك بأهوال البحر , ورزق الله على الشاطئ

هل أنت مجبر على إستخدام الـ CodeDom

أحفظ الـ RTF  مباشرتاً في قاعدة البيانات , بدلاً من نص الكود الذي تريد تنفيذة بإستخدام الـ ( CodeDom )  ء : RichTextBox1.Rtf = My.Resources._1st_Journey
عندها لن تحتاج إلى إستخدام الـ CodeDom


RE: تحويل نص فى Data Reader إلى كود - Doctor GME - 17-05-20

أخى عبدالله الدوسري
أقوم ببرنامج ال word بتنسيق النص داخل ملف rtf بطريقة معينة وحفظها
ولهذا أنا بحاجة إلى استخدام هذه الطريقة
فلو سجلت النص مباشرة فى قاعدة البيانات سأفقد ميزة التنسيق والتعديل
علماً أن تصميم برنامجى يعتمد أن rich textbox محتواه readonly ولا يمكن تعديل النص عن طريقه
وإنما وظيفته عرض النص فقط


RE: تحويل نص فى Data Reader إلى كود - عبدالله الدوسري - 17-05-20

لماذا ستفقد " ميزة التنسيق والتعديل "
ما هو الشيء الذي سيجعلك تفقدها
صدقني لو تشرح أكثر ماذا تفعل بالضبط ولماذا , ستجد طريقة أخرى بدون إستخدام الـ CodeDom


RE: تحويل نص فى Data Reader إلى كود - Doctor GME - 17-05-20

حسناً أخى سأحاول أن أشرح لك الأمر
فربما لم أفهم أنا وجهة نظرك جيداً
عندى ملف وليكن text.rtf
أقوم بفتحه ببرنامج ال Word وتنسيقه كما أريد فى نوع الخط ولونه حجمه وغيرها من إمكانيات برنامج ال Word
وخلال برنامجى عندما أختار أى item فى combobox المسمى category كما بالصور فى الأعلى
يقوم بملئ ال combobox الآخر المسمى Type بمحتويات column المسمى DiaryName فى قاعدة البيانات
وعند اختيار أحد items المفترض أن يعرض ملف text.rtf المتعلق بهذه ال item داخل richtextbox
المفترض أن richtextbox يعرض النص فقط بالتنسيق المسجل ولا يمكن أن يتم التعديل خلاله وحفظ النص بعدها
فهذا ضد وظيفة البرنامج حيث يعرض محتوى علمى لا يمكن التعديل فيه
ما فهمته منك أخى العزيز هو اقتراحك أن أسجل النص فى Access Database مباشرة
فكيف يمكن تنسيقه وتعديله خلالها وحدها دون اللجوء للبرنامج؟؟
وشكراً جزيلاً لوقتك


RE: تحويل نص فى Data Reader إلى كود - عبدالله الدوسري - 17-05-20

عندك ملف وليكن text.rtf
أحفظ الملف بشحمة ولحمة في قاعدة البيانات
المشكلة أنني لا أرى أي مشكلة , إذا كانت لديك صعوبات معينة يجب أن تشرحها بشكل أكثر


RE: تحويل نص فى Data Reader إلى كود - Doctor GME - 17-05-20

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


RE: تحويل نص فى Data Reader إلى كود - ابو ليلى - 18-05-20

السلام عليكم و رحمة الله و بركاته

جرب المرفق يحتوي على طريقة الحفظ في القاعدة لملفات وورد
يمكنك فتح ملفات وورد داخل البرنامج و حفظها للقاعدة
كما يمكنك تصدير الملفات المحفوظة باكثر من طريقة
زر الماوس الايمن داخل الملف فيه وظائف ايضاً
كمحاولة سريعة لم يتم عمل وظائف كل الازرار الاضافية للقوائم
تم الاكتفاء بالمطلوب من السؤال على عجل




RE: تحويل نص فى Data Reader إلى كود - Doctor GME - 19-05-20

شكراً أخى ابو ليلى
البرنامج المرفق جيد ولكنه لا يحقق ما أطلبه
فأنا كما شرحت من قبل أريد تنفيذ عدة نقاط:
أولاً عدم إمكانية تعديل محتوى rtf بأى طريقة خلال البرنامج حتى لو admin فى البرنامج
ثانياً عدم إمكانية فتح أى مستند word فى richtextbox وإنما إظهار النص المسجل فى البرنامج فقط
ثالثاً ملف الrtf الذى يحتوى على النص موجود فى source البرنامج فقط ويستحسن داخل resources
حيث يتم التعديل فيه من خلال برنامج ال word وذلك فى حالة الاحتياج إلى تعديل معلومة علمية
أو تصحيح خطأ وبعدها يتم عمل Publish لل Project وعندها يستحيل التعديل فيه بأى طريقة
لأنه يكون عندها جزء من ملف exe الخاص بالبرنامج
وشكراً مرة أخرى لمحاولتك المساعدة