تقييم الموضوع :
  • 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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] كيفية حفظ ملف pdf في قاعدة بيانات sql abid 5 4,589 10-05-17, 03:13 PM
آخر رد: safalo
  ظهور خطا عند سحب البيانات وعرضها في الداتا كريد باستخدم الـــ Threading HATEM KAREM 0 84 06-05-17, 04:45 PM
آخر رد: HATEM KAREM
  مشكلة في تحزيم البرنامج samawi 2 79 23-04-17, 03:06 AM
آخر رد: samawi
  المساعدة في عمل استعلام قاعدة بيانات sqlserver djelloul 0 68 17-04-17, 07:13 PM
آخر رد: djelloul
  [VB.NET] مشكله عند الحفظ على قاعدة بيانات باستخدام Data Source وقاعدة بيانات اكسس2007 coderarab 8 848 03-04-17, 02:48 AM
آخر رد: ابو إياد
  استفسار حول عدم تكرار البيانات المتألق9 3 148 02-04-17, 03:38 AM
آخر رد: حريف برمجة
  جلب البيانات من ملف txt djelloul 7 181 28-03-17, 03:20 PM
آخر رد: djelloul
  [سؤال] طلب صيغة عامة أو وظيفة لأضافة بيانات لقاعدة البيانات ؟ عبد الله 2 151 10-03-17, 09:36 AM
آخر رد: عبد الله
  سرعة ادخال البيانات داخل ملف اكسس atefkhalf2004 1 163 05-03-17, 04:06 AM
آخر رد: thevirus
  استعادة قاعدة البيانات من ملف النسخة الإحتياطية djelloul 2 166 28-02-17, 03:27 PM
آخر رد: djelloul

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


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