تقييم الموضوع :
  • 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
موفق يا برنس
سبحان الله والحمدلله ولا إله إلا الله والله أكبر
 اللهم اغْفِرْ لِلمؤمنين والمؤمنات والمسلمين والمسلمات الأحياء منهم والأموات
الرد
تم الشكر بواسطة: مبرمج بلا حدود
#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 ك ب / التحميلات : 40)
الرد
تم الشكر بواسطة: مبرمج بلا حدود
#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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مشكلة قاعدة البيانات لا تقبل البيانات بعد التنصيب abozeyd 8 176 10-09-18, 08:02 AM
آخر رد: elgokr
  سؤال حول عرض البيانات في الداتا جريد والاستعلام alfaiz678 12 444 25-08-18, 10:00 PM
آخر رد: elgokr
  [سؤال] حول تحديث البيانات داخل DataGridView مبرمج بلا حدود 20 3,489 14-08-18, 09:00 PM
آخر رد: elgokr
  كيفية حفظ التعديل في Data Grid View مباشرا الى قاعدة البيانات اللورد محمود 1 252 02-08-18, 07:26 PM
آخر رد: سعود
  [سؤال] كيفية ربط قاعدة بيانات اكسس 2007 بالفيجوال 2008 mohmedhosen 3 5,241 16-07-18, 08:48 PM
آخر رد: aridje34
  [VB.NET] مشكلة فى زر Login الخاص بشاشة الدخول Michael Maher 6 881 18-05-18, 02:14 AM
آخر رد: Michael Maher
  خطأ في الإتصال بقاعدة البيانات الموجودة على هذا السيرفر (ويندوز 10) djelloul 0 170 04-05-18, 12:14 AM
آخر رد: djelloul
  بحث و اظهار سجلات من قاعدة البيانات في حال تساوت اول 4 ارقام من text بالقيمه الموجود ahmed_elwerfalli 0 198 25-04-18, 04:12 PM
آخر رد: ahmed_elwerfalli
  مشكلة حفظ تعديلات الداتاقريد دمعة المقهور 7 2,298 22-04-18, 06:32 PM
آخر رد: دمعة المقهور
Tongue ربط قاعدة بينات اكسل مع الفيجوال عمار عيثاوي 3 2,305 02-03-18, 05:13 PM
آخر رد: محمد بن عطية

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


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