تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] مشكلة مع التطابق مع قاعدة البيانات
#1
Exclamation 
السلام عليكم ورحمة الله وبركاته
أعمل على برنامج قاموس وتواجهنى مشكلة عند استحضار الترجمة من قاعدة البيانات
فمثلاً هذا أحد الصفوف فى قاعدة البيانات:

يجب أن أكتبه فى ال textbox الخاص باللغة الإنجليزية داخل البرنامج
كما هو تماماً من غير تقسيم هكذا:

ولكن إذا قسم السطر وكتب هكذا:

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

كود ال function الخاص بالترجمة:
كود :
   Function getexactsubtitles(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
       getexactsubtitles = ""
   End Function

كود زر الترجمة:
كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox2.Text = getexactsubtitles(TextBox1.Text)
الرد }}}}
تم الشكر بواسطة:
#2
بص هقول لك فكرة وانت شوف
هتسخدم Spilt
وهتخلي بوكس البحث يطلع لك مصفوفة تاخذ كل قيمة وتبحث عنها
وتعمل Append في بوكس الترجمة
وما تنساش تعكس المصفوفة لما تبحب بالعربي عن الانجليزي
--------------------------------------
Catch not sane hunt or fishing
موفق يا برنس
سبحان الله والحمدلله ولا إله إلا الله والله أكبر
 رَبِّ اغْفِرْ لِي وَلِوَالِدَيَّ
Heart
الرد }}}}
تم الشكر بواسطة: مبرمج بلا حدود
#3
ياريت إيضاح الفكره عملياً
فأنا لسه مبتدئ فى البرمجة ولا يمكننى التطبيق
ولازم أوضح إن البوكس بتاع الانجليزى
بيتكتب فيه أكتر من جملة ممكن نص يوصل طوله ل 5000 سطر
فمش معقول أى تنفيذ يدوى للترجمة
لأن ده بيخلى البرنامج ملوش لازمه
الرد }}}}
تم الشكر بواسطة:
#4
ماهو الاشكال اخي الكريم؟
شيء طبيعي جدا الدقة في البحث.
ضمن تعليمات استخدام البرنامج نبه لهذه النقطة.
أستودعكم الله الذي لا تضيع ودائعه أرجو ان تجدوا بمشاركاتي ما يجعلكم تدعون لي بخير ان تحتم غيابي.
الرد }}}}
تم الشكر بواسطة:
#5
عذراً أخى لم أفهم قصدك
أرجو التوضيح
الرد }}}}
تم الشكر بواسطة:
#6
قم بعمل replacement للـ new lines
يعنى بالاحرى تجاهل الاسطر الجديدة المكتوبة في الـ textbox .
الرد }}}}
تم الشكر بواسطة: مبرمج بلا حدود
#7
لا يصلح هذا الحل يا أخى
المفترض أصلاً من البرنامج أن يترجم نصوص يصل طولها لآلاف الأسطر
فلا يمكن اقتصار الترجمة على سطر واحد
ولكن كل ما أريده هو أن يطابق البرنامج الجمل مع قاعدة البيانات
ولو كان الفرق هو السطر الجديد فقط يطابقها كما لو كان غير موجود
الرد }}}}
تم الشكر بواسطة:
#8
(26-08-15, 09:15 PM)Doctor GME كتب : عذراً أخى لم أفهم قصدك
أرجو التوضيح

اخي الكريم الم تقل انت العبارة التالية:
إقتباس :ولكن إذا قسم السطر وكتب هكذا:

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

(27-08-15, 06:27 PM)Doctor GME كتب : لا يصلح هذا الحل يا أخى
المفترض أصلاً من البرنامج أن يترجم نصوص يصل طولها لآلاف الأسطر
فلا يمكن اقتصار الترجمة على سطر واحد
ولكن كل ما أريده هو أن يطابق البرنامج الجمل مع قاعدة البيانات
ولو كان الفرق هو السطر الجديد فقط يطابقها كما لو كان غير موجود

هو يقصد ان تحذف السطر الجديد اي حذف مفعول زر الادخال Enter اي كان المستخدم لم ينقر هذا الزر.
لو ترفع ملف القاعدة اصمم عليها مثال بسيط بيكون اسرع.
أستودعكم الله الذي لا تضيع ودائعه أرجو ان تجدوا بمشاركاتي ما يجعلكم تدعون لي بخير ان تحتم غيابي.
الرد }}}}
تم الشكر بواسطة: مبرمج بلا حدود
#9
سأوضح لك الأمر أخى العزيز
المفترض أن يترجم البرنامج نصوص مثلاً كترجمات الأفلام
والتى تكون على الشكل التالى:

23
00:05:36,200 --> 00:05:40,400
And we only wish
To catch a fish

24
00:05:40,800 --> 00:05:43,900
So juicy sweet

25
00:05:49,800 --> 00:05:53,800
And we forgot the taste of bread...

من السهل على جداً أن أجعل البرنامج يحول vbnewline إلى space مثلاً
ولكن بعد الترجمة لن يتم قراءة النص كما كان حيث سيصبح سطراً واحداً
وسيكون من الضرورى تعديله على الشكل السابق
وهناك ترجمات تتكون من آلاف الأسطر
لذا فأى تعامل يدوى مع البرنامج لا يفيد
كل ما أريده أن يرى البرنامج مثلاً جملة:

And we only wish
To catch a fish

كأنها:

and we only wish To catch a fish

بلا أى فرق حتى يستطيع مطابقتهم فى قاعدة البيانات

تم إرفاق مثال يشبه قاعدة بيانات البرنامج
وشكراً جزيلاً لك على المجهود


الملفات المرفقة
.rar   Database.rar (الحجم : 59.09 ك ب / التحميلات : 14)
الرد }}}}
تم الشكر بواسطة: مبرمج بلا حدود
#10
إقتباس :من السهل على جداً أن أجعل البرنامج يحول vbnewline إلى space مثلاً
طيب اخي الكريم ممكن تجرب الكلاس او المثال هذا
PHP كود :
Public Class Form2

    Dim str 
As String "provider=microsoft.ace.oledb.12.0;data source=Database.accdb"
 
   Dim con As New OleDb.OleDbConnection(str)
 
   Dim cm As New OleDb.OleDbCommand(""con)

 
   Private Sub Button1_Click(sender As ObjectAs EventArgsHandles Button1.Click
        cm
.Parameters.Clear()
 
       cm.CommandText "select [Arabic] from [Subtitles] where [English]='" & (TextBox1.Text.ToString.Replace(vbNewLine" ")) & "'"
 
       If con.State ConnectionState.Closed Then con.Open()
 
       Dim dr As OleDb.OleDbDataReader cm.ExecuteReader
        If dr
.HasRows Then
            If dr
.Read Then
                TextBox2
.Text dr("Arabic")
 
               dr.Close()
 
           End If
 
           dr.Close()
 
       End If
 
       dr.Close()
 
   End Sub
End 
Class 
أستودعكم الله الذي لا تضيع ودائعه أرجو ان تجدوا بمشاركاتي ما يجعلكم تدعون لي بخير ان تحتم غيابي.
الرد }}}}
تم الشكر بواسطة: مبرمج بلا حدود , Doctor GME


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  سرعة ادخال البيانات داخل ملف اكسس atefkhalf2004 0 28 20-02-17, 04:55 PM
آخر رد: atefkhalf2004
  [VB.NET] مشكلة في كود التعديل والحذف boofa2015 0 36 18-02-17, 01:58 PM
آخر رد: boofa2015
  نسخ جدول من قاعدة الي اخري مع الوصف atefkhalf2004 2 54 18-02-17, 01:34 AM
آخر رد: atefkhalf2004
  فتح قاعدة البيانات محفوظة ب باسس ورد في جملة الاتصال ahmed_elwerfalli 2 55 13-02-17, 05:27 PM
آخر رد: ahmed_elwerfalli
  قاعدة بيانات xml djelloul 2 70 06-02-17, 11:06 PM
آخر رد: djelloul
  [سؤال] عندي مشكلة في احتساب الرواتب - مشروع HR dabas 0 75 17-01-17, 10:57 AM
آخر رد: dabas
  مشكلة مع حقل من نوع Money djelloul 2 86 16-01-17, 03:29 AM
آخر رد: مساعدة
  الانتقال إلى السجل الثاني في قاعدة البيانات و إظهار الصورة التالية على picturebox ahmed_elwerfalli 6 317 24-12-16, 11:07 PM
آخر رد: ahmed_elwerfalli
  جلب البيانات من قاعدة بيانات XML djelloul 0 132 13-12-16, 07:45 PM
آخر رد: djelloul
  مشكلة في تصميم قاعدة البيانات djelloul 2 157 06-12-16, 12:36 PM
آخر رد: djelloul

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


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