السلام عليكم ورحمة الله وبركاته
أعمل على برنامج قاموس من الإنجليزية للعربية والعكس
وتواجهنى مشكلة فى الترجمة من عربى إلى إنجليزى
حيث يوجد فى قاعدة البيانات أحياناً عدة معانى عربية للكلمة الواحدة مثل:
وبالتالى اعتماداً على الصورة يجب أن أبحث عن (ترتيب-تسوية) كى يطابقها البرنامج مع (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
وهذا يدل على أن البرنامج متصل جيداً بقاعدة البيانات
فما الحل؟؟؟؟