![]() |
|
التحويل إلى قاعدة بيانات أكسس - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183) +--- الموضوع : التحويل إلى قاعدة بيانات أكسس (/showthread.php?tid=12173) الصفحات:
1
2
|
RE: التحويل إلى قاعدة بيانات أكسس - sami2015 - 27-04-15 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 RE: التحويل إلى قاعدة بيانات أكسس - Doctor GME - 27-04-15 هناك خطأ ما فى الكود البرنامج يقبله ولكن الاتصال مع قاعدة البيانات غير موجود أى كلمة أو جملة أكتبها يكتب مقابلها إسم البرنامج MovieDic Translator وهذه صورة للتوضيح: http://www10.0zz0.com/2015/04/27/22/987763631.jpg وأيضاً أود إخبارك أننى أضفت السطر ReplaceTranslate = "" قبل End Function لتعديل رساله خطأ كانت تظهر وهذا الحل هو ما وجدته عند البحث RE: التحويل إلى قاعدة بيانات أكسس - sami2015 - 28-04-15 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 RE: التحويل إلى قاعدة بيانات أكسس - Doctor GME - 28-04-15 يضع خط تحت كلمة txt ولا يقبلها RE: التحويل إلى قاعدة بيانات أكسس - Doctor GME - 29-04-15 (28-04-15, 12:02 AM)sami2015 كتب : Dim connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Subtitles.accdb" لقد قمت بتعديل الكود حذفت function بالكامل ووضعت الكود كله فى مهام Button1_Click فأصبح كالتالى: كود : Using connectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=MovieDic1.0.0.0.0.accdb")ولكن هناك مشكلة حيث أن البرنامج لا يستحضر إلا ال 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 مرات وهى عدد الصفوف التى لا تحتوى على النص وكتابته بالعربية مرة واحدة وهو الصف الوحيد المحتوى عليه هل تستطيع مساعدتى فى تعديل هذا الخطأ؟؟؟ RE: التحويل إلى قاعدة بيانات أكسس - sami2015 - 29-04-15 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 RE: التحويل إلى قاعدة بيانات أكسس - Doctor GME - 29-04-15 عاجز عن شكرك بما يكفى لهذ المجهود أخى الكريم تعمل الآن جيداً هناك فقط شىء أتمنى لو استطعت مساعدتى به عندما يقرأ البرنامج النص من داخل قاعدة البيانات يهمل علامات الاستفهام انظر إلى هذه الصورة: http://www6.0zz0.com/2015/04/29/17/359909508.jpg وانظر إلى طريقة تنفيذ النص: http://www13.0zz0.com/2015/04/29/17/815819220.jpg لم يقرأ علامة الاستفهام ضمن النص وإنما قرأ النص وأضاف المقابل العربى بعلامة استفهامه فى حين كرر علامة الاستفهام كأنها كلمة مستقلة وإذا كتبت فى البرنامج how are you دون علامة استفهام تظهر بالعربية مضاف إليها علامة الاستفهام هل هناك شىء يضاف للكود كى يقرأ البرنامج علامات الترقيم؟؟؟ وإن أمكن أريد أ ن تظهر رسالة بعد الضغط على button1 تخبرنى إما (لم يتم العثور على الكلمات) أو (تم العثور على (عدد الجمل التى عثر عليها) من الكلمات) RE: التحويل إلى قاعدة بيانات أكسس - sami2015 - 29-04-15 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 RE: التحويل إلى قاعدة بيانات أكسس - Doctor GME - 29-04-15 مهارة خرافية يا أخى وشكراً على تعبك معى انتهت أسئلتى المزعجة الآن |