تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] تحويل نص فى Data Reader إلى كود
#1
Lightbulb 
هذه هى واجهة البرنامج:



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



عند تنفيذ الكود الخاص با 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

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


الملفات المرفقة
.rar   Read Code.rar (الحجم : 104.73 ك ب / التحميلات : 23)
الرد }}}


الردود في هذا الموضوع
تحويل نص فى Data Reader إلى كود - بواسطة Doctor GME - 13-05-20, 04:23 AM


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


يقوم بقرائة الموضوع: