تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
التحويل إلى قاعدة بيانات أكسس
#11
Dim connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Subtitles.accdb"

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox2.Text = ReplaceTranslate(TextBox1.Text)
End Sub

Function ReplaceTranslate(ByVal text As String) As String
Try
Using adp As New OleDb.OleDbDataAdapter("SELECT * FROM [Subtitles]", connectionString)
Using tbl As New DataTable
If adp.Fill(tbl) > 0 Then
For Each row As DataRow In tbl.Rows
text = System.Text.RegularExpressions.Regex.Replace(text, row.Item("English"), row.Item("Arabic"), System.Text.RegularExpressions.RegexOptions.IgnoreCase)
Next
End If
End Using
End Using
Return text
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Function
الرد }}}
تم الشكر بواسطة: Doctor GME
#12
هناك خطأ ما فى الكود
البرنامج يقبله ولكن الاتصال مع قاعدة البيانات غير موجود
أى كلمة أو جملة أكتبها يكتب مقابلها إسم البرنامج MovieDic Translator
وهذه صورة للتوضيح:
http://www10.0zz0.com/2015/04/27/22/987763631.jpg

وأيضاً أود إخبارك أننى أضفت السطر
ReplaceTranslate = ""

قبل
End Function

لتعديل رساله خطأ كانت تظهر وهذا الحل هو ما وجدته عند البحث
الرد }}}
تم الشكر بواسطة: sami2015
#13
Dim connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Subtitles.accdb"

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

TextBox2.Text = ReplaceTranslate(TextBox1.Text)

End Sub


Function ReplaceTranslate(ByVal txt As String) As String
Try
Using adp As New OleDb.OleDbDataAdapter("SELECT * FROM [Subtitles]", connectionString)
Using tbl As New DataTable
If adp.Fill(tbl) > 0 Then
For Each row As DataRow In tbl.Rows
txt = System.Text.RegularExpressions.Regex.Replace(txt, row.Item("English"), row.Item("Arabic"), System.Text.RegularExpressions.RegexOptions.IgnoreCase)
Next
End If
End Using
End Using
Return txt
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Function
الرد }}}
تم الشكر بواسطة: Doctor GME
#14
يضع خط تحت كلمة txt ولا يقبلها
الرد }}}
تم الشكر بواسطة:
#15
(28-04-15, 12:02 AM)sami2015 كتب : Dim connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Subtitles.accdb"

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

   TextBox2.Text = ReplaceTranslate(TextBox1.Text)

End Sub


Function ReplaceTranslate(ByVal txt As String) As String
   Try
       Using adp As New OleDb.OleDbDataAdapter("SELECT * FROM [Subtitles]", connectionString)
           Using tbl As New DataTable
               If adp.Fill(tbl) > 0 Then
                   For Each row As DataRow In tbl.Rows
                       txt = System.Text.RegularExpressions.Regex.Replace(txt, row.Item("English"), row.Item("Arabic"), System.Text.RegularExpressions.RegexOptions.IgnoreCase)
                   Next
               End If
           End Using
       End Using
       Return txt
   Catch ex As Exception
       MsgBox(ex.Message)
   End Try
End Function

لقد قمت بتعديل الكود
حذفت function بالكامل ووضعت الكود كله فى مهام Button1_Click فأصبح كالتالى:
كود :
Using connectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=MovieDic1.0.0.0.0.accdb")
               connectionString.Open()
               Try
                   Using adp As New OleDb.OleDbDataAdapter("SELECT * FROM [Subtitles]", connectionString)
                       Using tbl As New DataTable
                           If adp.Fill(tbl) > 0 Then
                               For Each row As DataRow In tbl.Rows
                                   TextBox2.Text = System.Text.RegularExpressions.Regex.Replace(TextBox1.Text, row.Item("English"), row.Item("Arabic"), System.Text.RegularExpressions.RegexOptions.IgnoreCase)
                               Next
                           End If
                       End Using
                   End Using
               Catch ex As Exception
                   MsgBox(ex.Message)
               End Try
           End Using

ولكن هناك مشكلة حيث أن البرنامج لا يستحضر إلا ال row الأخير من قاعدة البيانات فقط
فأنا قد أضفت 7 صفوف من ملف txt كتجربة للكود
فإذا كتبت النص الإنجليزى فى أى صف من الصفوف الـ 6 الأولى يعيده البرنامج دون ترجمته
وكأنه غير موجود فى قاعدة البيانات أما الصف السابع يعمل جيداً
بحثت على جوجل ووجدت حل يقول أن على إضافة & كى تعمل جميع الصفوف
أضفتها كالتالى:

كود :
TextBox2.Text &= System.Text.RegularExpressions.Regex.Replace(TextBox1.Text, row.Item("English"), row.Item("Arabic"), System.Text.RegularExpressions.RegexOptions.IgnoreCase)

وفعلاً جميع الصفوف تعمل ولكن البرنامج يبحث عن النص فى جميع الصفوف
انظر لهذه الصورة:
http://www9.0zz0.com/2015/04/29/15/551686480.jpg

كما تلاحظ تم تكرار النص الانجليزى 6 مرات وهى عدد الصفوف التى لا تحتوى على النص
وكتابته بالعربية مرة واحدة وهو الصف الوحيد المحتوى عليه
هل تستطيع مساعدتى فى تعديل هذا الخطأ؟؟؟
الرد }}}
تم الشكر بواسطة:
#16
Dim connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=MovieDic1.0.0.0.0.accdb"

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

TextBox2.Text = ReplaceTranslate(TextBox1.Text)

End Sub

Function ReplaceTranslate(ByVal content As String) As String
Try
Using adp As New OleDb.OleDbDataAdapter("SELECT * FROM [Subtitles]", connectionString)
Using tbl As New DataTable
If adp.Fill(tbl) > 0 Then
For Each row As DataRow In tbl.Rows
content = System.Text.RegularExpressions.Regex.Replace(content, row.Item("English"), row.Item("Arabic"), System.Text.RegularExpressions.RegexOptions.IgnoreCase)
Next
End If
End Using
End Using
Return content
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Function
الرد }}}
تم الشكر بواسطة: Doctor GME
#17
عاجز عن شكرك بما يكفى لهذ المجهود أخى الكريم
تعمل الآن جيداً
هناك فقط شىء أتمنى لو استطعت مساعدتى به
عندما يقرأ البرنامج النص من داخل قاعدة البيانات يهمل علامات الاستفهام
انظر إلى هذه الصورة:
http://www6.0zz0.com/2015/04/29/17/359909508.jpg
وانظر إلى طريقة تنفيذ النص:
http://www13.0zz0.com/2015/04/29/17/815819220.jpg
لم يقرأ علامة الاستفهام ضمن النص وإنما قرأ النص وأضاف المقابل العربى
بعلامة استفهامه فى حين كرر علامة الاستفهام كأنها كلمة مستقلة
وإذا كتبت فى البرنامج how are you دون علامة استفهام
تظهر بالعربية مضاف إليها علامة الاستفهام
هل هناك شىء يضاف للكود كى يقرأ البرنامج علامات الترقيم؟؟؟

وإن أمكن أريد أ ن تظهر رسالة بعد الضغط على button1 تخبرنى
إما (لم يتم العثور على الكلمات)
أو (تم العثور على (عدد الجمل التى عثر عليها) من الكلمات)
الرد }}}
تم الشكر بواسطة:
#18
Dim connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=MovieDic1.0.0.0.0.accdb"

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox2.Text = ReplaceTranslate(TextBox1.Text)
End Sub

Function ReplaceTranslate(ByVal content As String) As String
Try
Dim count As Integer = 0
Using adp As New OleDbDataAdapter("SELECT * FROM [Subtitles]", connectionString)
Using tbl As New DataTable
If adp.Fill(tbl) > 0 Then
For Each row As DataRow In tbl.Rows
Dim en As String = row.Item("English").Replace("?", "\?")
Dim ar As String = row.Item("Arabic")
count += Regex.Matches(content, en, RegexOptions.IgnoreCase).Count
content = Regex.Replace(content, en, ar, RegexOptions.IgnoreCase)
Next
End If
End Using
End Using
MsgBox(IIf(count = 0, "لم يتم العثور على الكلمات", "تم العثور على (" & count & ") من الكلمات"))
Return content
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Function
الرد }}}
تم الشكر بواسطة: Doctor GME
#19
مهارة خرافية يا أخى وشكراً على تعبك معى
انتهت أسئلتى المزعجة الآن
الرد }}}
تم الشكر بواسطة:



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


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