منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : البحث عن جزء من الـ Row فقط واستحضار مقابله
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته
أعمل على برنامج قاموس من الإنجليزية للعربية والعكس
وتواجهنى مشكلة فى الترجمة من عربى إلى إنجليزى
حيث يوجد فى قاعدة البيانات أحياناً عدة معانى عربية للكلمة الواحدة مثل:



وبالتالى اعتماداً على الصورة يجب أن أبحث عن (ترتيب-تسوية) كى يطابقها البرنامج مع (arrangement)
أريده عندما أكتب (ترتيب) فقط أو (تسوية) فقط يجد المطابق وهو (arrangement)

كود وظيفة البحث:

كود :
   Function argetword(ByVal content As String) As String
       Try
           Using adp As New OleDb.OleDbDataAdapter("SELECT * FROM [Words]", 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("Arabic"), row.Item("English"), System.Text.RegularExpressions.RegexOptions.IgnoreCase)
                       Next
                   End If
               End Using
           End Using
           Return content
       Catch ex As Exception
           MsgBox(ex.Message)
       End Try
       argetword = ""
   End Function

وأيضاً كود وظيفة زر الترجمة:

كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

TextBox1.Text = argetword(TextBox2.Text)
إستخدم contains
اولا تحقق هل تحتوي او يحتوي العمود على الشرطة"-" اذا نعم تحقق هل العمود او الحقل يحتوي الكلمة المطلوبة.
بالنسبة للجزء الأول
الحقل لابد أن يحتوى على - فى جميع الكلمات
فلا توجد كلمة لها معنى واحد فقط
أما بالنسبة للجزء الثانى فقد حاولت تغيير عبارة:

Using adp As New OleDb.OleDbDataAdapter("SELECT * FROM [Words]", connectionString)

إلى

Using adp As New OleDb.OleDbDataAdapter("SELECT English FROM [Words] WHERE Arabic LIKE '%" & content & "%'", connectionString)

ولم تنجح أيضاً
يظهر البرنامج رسالة خطأ تقول

Column Arabic doesn't belong to table

مع العلم أننى تأكدت من صحة أسماء الجدول والعمودين
اخي الكريم ساجهز باذن الله مثال سريع لتعرف فكرتي بشكل اسرع

كود :
Imports System.Data.OleDb

Public Class Form1
    Dim con As New OleDbConnection("provider=microsoft.ace.oledb.12.0;data source=db.accdb")

    Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles ar.KeyDown
        If e.KeyData = Keys.Enter Then
            Dim cm As New OleDbCommand("", con)
            cm.CommandText = "select * from tb where ar like'%" & ar.Text & "%'"

            If con.State = ConnectionState.Closed Then
                con.Open()
            End If
            Dim dr As OleDbDataReader = cm.ExecuteReader
            If dr.HasRows Then
                If dr.Read Then
                    en.Text = dr.Item("en").ToString
                End If
                dr.Close()
            End If
            If con.State = ConnectionState.Open Then
                con.Close()
            End If
        End If
    End Sub

  
End Class
سلام

اأنصحك تنسخ اسم العمود وتلصقه في الكود
كود :
Using adp As New OleDb.OleDbDataAdapter("SELECT [English] FROM [Words] WHERE [Arabic] LIKE @Arabic", connectionString)
adp.SelectCommand.Parameters.AddWithValue("@Arabic", "%" & content & "%")

موفقين
(16-07-15, 05:31 AM)سعود كتب : [ -> ]اخي الكريم ساجهز باذن الله مثال سريع لتعرف فكرتي بشكل اسرع

كود :
Imports System.Data.OleDb

Public Class Form1
   Dim con As New OleDbConnection("provider=microsoft.ace.oledb.12.0;data source=db.accdb")

   Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles ar.KeyDown
       If e.KeyData = Keys.Enter Then
           Dim cm As New OleDbCommand("", con)
           cm.CommandText = "select * from tb where ar like'%" & ar.Text & "%'"

           If con.State = ConnectionState.Closed Then
               con.Open()
           End If
           Dim dr As OleDbDataReader = cm.ExecuteReader
           If dr.HasRows Then
               If dr.Read Then
                   en.Text = dr.Item("en").ToString
               End If
               dr.Close()
           End If
           If con.State = ConnectionState.Open Then
               con.Close()
           End If
       End If
   End Sub

 
End Class

شكراً لك أخى
ولكنى لم أستطع تطبيقه على Function الخاصه بى
فكما ترى كود زر الترجمة فقط يحتوى على تطبيق ال function
وهذا كى أسهل على نفسى التعديل على كل وظيفة من البرنامج مستقلة
دون أن أضع كل شىء فى مكان واحد
لذا أرجو أن تحاول وضع المثال ليتلاءم مع ال function

(16-07-15, 06:27 AM)الطالب كتب : [ -> ]سلام

اأنصحك تنسخ اسم العمود وتلصقه في الكود
كود :
Using adp As New OleDb.OleDbDataAdapter("SELECT [English] FROM [Words] WHERE [Arabic] LIKE @Arabic", connectionString)
adp.SelectCommand.Parameters.AddWithValue("@Arabic", "%" & content & "%")

موفقين

شكراً على اهتمامك
وضعته ولم يعمل علماً بأننى قمت من قبل وأيضاً الآن بنسخ إسم العمود
ووضعه داخل الكود ولكن ظهرت رسالة الخطأ كالمعتاد:
Column Arabic doesn't belong to table
سلام

هل جربت الكود - لاني جربته قبل وضعه في المشاركه وشغال تمام - اذا ظلت المشكله ضع الكود كامل لنشوف

موفقين
(16-07-15, 07:46 AM)الطالب كتب : [ -> ]سلام

هل جربت الكود - لاني جربته قبل وضعه في المشاركه وشغال تمام - اذا ظلت المشكله ضع الكود كامل لنشوف

موفقين

البرنامج يقبله بلا مشاكل
ولكن عند استخدام البرنامج تظهر رسالة الخطأ
وها هو الكود بالكامل:

Function argetword(ByVal content As String) As String
Try
Using adp As New OleDb.OleDbDataAdapter("SELECT [English] FROM [Words] WHERE [Arabic] LIKE @Arabic", connectionString)
adp.SelectCommand.Parameters.AddWithValue("@Arabic", "%" & content & "%")
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")
Dim ar As String = row.Item("Arabic")
content = System.Text.RegularExpressions.Regex.Replace(content, ar, en, System.Text.RegularExpressions.RegexOptions.IgnoreCase)
Next
End If
End Using
End Using
Return content
Catch ex As Exception
MsgBox(ex.Message)
Return String.Empty
End Try
End Function

وها هى صورة قاعدة البيانات:


وأيضاً صورة رسالة الخطأ:
سلام

انت طلبj في جمله الاستعلام الناتج يكون فقط English فكيف تريد ان تقرا العمود Arabic ولم تطلب ان يكون من ضمن النتائج بعد select
كود :
SELECT [English], [Arabic] FROM [Words] WHERE [Arabic] LIKE @Arabic

موفقين
(16-07-15, 09:34 AM)الطالب كتب : [ -> ]سلام

انت طلبj في جمله الاستعلام الناتج يكون فقط English فكيف تريد ان تقرا العمود Arabic ولم تطلب ان يكون من ضمن النتائج بعد select
كود :
SELECT [English], [Arabic] FROM [Words] WHERE [Arabic] LIKE @Arabic

موفقين

ههههه لا تؤاخذنى إنه الصيام
شكراً لك يعمل جيداً الآن
ولكن المشكلة التى فى بداية الموضوع كما هى لم تحل
حيث أن الجزء الخاص ب:
WHERE [Arabic] LIKE '%" & content & "%'"
لا يعمل فلو كتبت كلمة (ترتيب) كما فى الصور المرفقة بالموضوع الأصلى
يعيدها البرنامج لى مرة أخرى وكأنه لم يجدها فى قاعدة البيانات
ولكن إذا كتبت الخانة بالكامل (ترتيب-تسوية) يترجمها البرنامج إلى arrangement
وهذا يدل على أن البرنامج متصل جيداً بقاعدة البيانات
فما الحل؟؟؟؟