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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مشكلة في تصميم قاعدة البيانات djelloul 2 27 منذ 3 ساعة مضت
آخر رد: djelloul
  بحث و إظهار صورة من قاعة البيانات علىPictureBox ahmed_elwerfalli 0 40 29-11-16, 01:34 AM
آخر رد: ahmed_elwerfalli
  [C#.NET] مشكلة في استعلام مابين تاريخين abdallah_alashwal 1 56 09-11-16, 12:04 PM
آخر رد: ممدوح
  [سؤال] كيفية اضافة عناصر عمود فى جدول من قاعدة بيانات فى جدول اخر hidn 1 171 04-11-16, 09:25 AM
آخر رد: thevirus
  [VB.NET] مثال على جلب ارقام من قاعدة البيانات وحفظها في مصفوفة بدر إشتية 4 353 02-11-16, 02:42 AM
آخر رد: Ahmad ahmed
  [سؤال] قراءة رابط من قاعدة بيانات في ادة التصفح شمس الدين 03 2 81 27-10-16, 10:43 PM
آخر رد: شمس الدين 03
Sad [Acces2007] عاجل ارجو المساعدة لدي مشكلة مع برمجة زر البحث في الاكسس saimon 4 116 24-10-16, 07:54 PM
آخر رد: saimon
  مشكلة في حساب كمية السلع في المخزن djelloul 0 83 06-10-16, 02:15 PM
آخر رد: djelloul
  مساعدة في بناء قاعدة hglogtd 4 137 05-10-16, 03:48 PM
آخر رد: hglogtd
  استفسار حول طريقتي في قاعدة البيانات صبري زينوبي 0 80 29-09-16, 04:35 PM
آخر رد: صبري زينوبي

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


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