تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
التحويل إلى قاعدة بيانات أكسس
#1
Information 
بسم الله الرحمن الرحيم
باختصار شديد لدى برنامج قاموس يستخدم ملف txt كقاعدة بيانات كالتالى:



وأريد أن أحوله لقاعدة بيانات أكسس تحتوى على عمودين وأريد مساعدة فى تعديل الكود

كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       If RadioButton1.Checked = True And CheckBox1.Checked = True And ComboBox1.Text = "Eng to Ar" Then
           Using reader As StreamReader = New StreamReader("Subtitles.txt")
               Dim line As String = reader.ReadLine
               Dim translatedText As String = TextBox1.Text
               While (line IsNot Nothing)
                   Dim words As String() = line.Split("\")
                   Dim word As String
                   For Each word In words
                       If words.Length = 2 And translatedText.Contains(word) Then
                           translatedText = translatedText.Replace(word, words(+1))
                       End If
                   Next
                   line = reader.ReadLine
               End While
               TextBox2.Text = translatedText
           End Using

علماً بأن button1 هو المسئول على الترجمة
شكراً لكم مقدماً
الرد }}}
تم الشكر بواسطة:
#2
لو ترفق مثال مصغر // ستجد سرعة في الرد
الرد }}}
تم الشكر بواسطة:
#3
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Using con As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Database1.accdb")
con.Open()

Dim txt As String = IO.File.ReadAllText("Subtitles.txt")
For Each line As String In txt.Trim.Split(vbNewLine)

If line.Trim.Split("\").Count = 2 Then

Using cmd As New OleDb.OleDbCommand("INSERT INTO [table] ([ar], [en]) VALUES (@ar, @en)", con)
Dim ar As String = line.Trim.Split("\").First.Trim
Dim en As String = line.Trim.Split("\").Last.Trim
cmd.Parameters.AddWithValue("@ar", ar)
cmd.Parameters.AddWithValue("@en", en)

cmd.ExecuteNonQuery()

End Using

End If

Next

con.Close()
End Using

End Sub
الرد }}}
تم الشكر بواسطة: Doctor GME
#4
(27-04-15, 12:16 AM)حريف برمجة كتب : لو ترفق مثال مصغر // ستجد سرعة في الرد

هذه يا أخى صورة من قاعدة بيانات أكسس التى أود استخدامها بدلاً من ملف txt
http://www12.0zz0.com/2015/04/27/00/615433999.jpg
علماً بأن العمود الأول المسمى id لا أحتاجه فى البرنامج وإنما تركته لأعرف مدى تطور قاعدة البيانات مع مرور الوقت
ولذا أريد تنفيذ الكود الذى وضعته ولكن بعد أن أستغنى على ملف txt وأستعمل العمودين arabic و english فى الأكسس
شكراً لاهتمامك


(27-04-15, 12:50 AM)sami2015 كتب : Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

   Using con As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Database1.accdb")
       con.Open()

       Dim txt As String = IO.File.ReadAllText("Subtitles.txt")
       For Each line As String In txt.Trim.Split(vbNewLine)

           If line.Trim.Split("\").Count = 2 Then

               Using cmd As New OleDb.OleDbCommand("INSERT INTO [table] ([ar], [en]) VALUES (@ar, @en)", con)
                   Dim ar As String = line.Trim.Split("\").First.Trim
                   Dim en As String = line.Trim.Split("\").Last.Trim
                   cmd.Parameters.AddWithValue("@ar", ar)
                   cmd.Parameters.AddWithValue("@en", en)

                   cmd.ExecuteNonQuery()

               End Using

           End If

       Next

       con.Close()
   End Using

End Sub


شكراً لمجهودك يا غالى
ولكنى أريد أن أستغنى تماماً عن ملف txt وأنا سانقله يدوياً إلى قاعدة بيانات الأكسس
كل ما أريده هو ربط قاعدة الأكسس بالبرنامج بنفس طريقة الكود السابق
علماً بأن إسمها (Subtitles.accdb)
وكما بالصورة بها عمودين English و Arabic
http://www12.0zz0.com/2015/04/27/00/615433999.jp
الرد }}}
تم الشكر بواسطة:
#5
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
If TextBox1.Text.Trim <> "" And TextBox2.Text.Trim <> "" Then

Using con As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Subtitles.accdb")
con.Open()

Using cmd As New OleDb.OleDbCommand("INSERT INTO [Subtitles] ([Arabic], [English]) VALUES (@Arabic, @English)", con)
cmd.Parameters.AddWithValue("@Arabic", TextBox1.Text.Trim)
cmd.Parameters.AddWithValue("@English", TextBox2.Text.Trim)

cmd.ExecuteNonQuery()

End Using

con.Close()
End Using

MsgBox("Saved")

End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
الرد }}}
تم الشكر بواسطة: Doctor GME
#6

أشكرك كثيراً على مجهودك أخى الغالى
قاعدة البيانات الآن متصلة بـ text boxes جيداً
ولكنك أسأت فهمى
فالمفروض أن الزر يستحضر البيانات من القاعدة ولا يضيف عليها
فالبرنامج برنامج قاموس يترجم من العربية للإنجليزية
عذراً لأننى لم أكن واضحاً
الرد }}}
تم الشكر بواسطة:
#7
Dim connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Subtitles.accdb"

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox2.Text = GetTranslate(TextBox1.Text)
End Sub

Function GetTranslate(ByVal word As String) As String
Try
Using adp As New OleDb.OleDbDataAdapter(Nothing, connectionString)
Using tbl As New DataTable
adp.SelectCommand.CommandText = "SELECT [Arabic] FROM [Subtitles] WHERE [English]=@English"
adp.SelectCommand.Parameters.AddWithValue("@English", word)
If adp.Fill(tbl) > 0 Then Return tbl.Rows(0).Item("Arabic")
adp.SelectCommand.CommandText = "SELECT [English] FROM [Subtitles] WHERE [Arabic]=@Arabic"
adp.SelectCommand.Parameters.AddWithValue("@Arabic", word)
If adp.Fill(tbl) > 0 Then Return tbl.Rows(0).Item("English")
End Using
End Using
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Function
الرد }}}
تم الشكر بواسطة: Doctor GME
#8
أشكرك بشدة يا غالى
تم ربط قاعدة البيانات بنجاح
المشكلة الأخيرة أن الكود الأول الذى كنت أستخدمه مع ملف txt
كانت به ميزه أنه يترجم الكلمات التى يتعرف عليها القاموس
أما الكلمات أو الجمل التى ليست موجوده فى قاعدة البيانات
فإنه يكتبها كما هى بالانجليزيه
أما الكود الجديد فإما أن يكون النص مشابه تماماً لإحدى خانات قاعدة البيانات
أو يظهر نتيجة فارغة وهذه الصور توضح لك كلامى أكثر
http://www6.0zz0.com/2015/04/27/18/392743431.jpg
http://www2.0zz0.com/2015/04/27/18/790928400.jpg
ولك جزيل الشكر أخى على مجهودك
الرد }}}
تم الشكر بواسطة: sami2015
#9
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
For Each line As String In TextBox1.Text.Split(vbNewLine)
TextBox2.Text &= GetTranslate(line) & vbNewLine
Next
TextBox2.Text = TextBox2.Text.Trim
End Sub

Function GetTranslate(ByVal word As String) As String
Try
Using adp As New OleDb.OleDbDataAdapter(Nothing, connectionString)
Using tbl As New DataTable
adp.SelectCommand.CommandText = "SELECT [Arabic] FROM [Subtitles] WHERE [English]=@English"
adp.SelectCommand.Parameters.AddWithValue("@English", word.Trim)
If adp.Fill(tbl) > 0 Then Return tbl.Rows(0).Item("Arabic")
adp.SelectCommand.CommandText = "SELECT [English] FROM [Subtitles] WHERE [Arabic]=@Arabic"
adp.SelectCommand.Parameters.AddWithValue("@Arabic", word.Trim)
If adp.Fill(tbl) > 0 Then Return tbl.Rows(0).Item("English")
Return word.Trim
End Using
End Using
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Function
الرد }}}
تم الشكر بواسطة: Doctor GME
#10
دعنى أوضح لك أكثر أخى العزيز
لا أقصد أن يكون كل نص فى سطر وإنما كان هذا أحد الأمثلة
إنما أقصد أن يتعرف القاموس على الكلمة أو الجملة
التى تكون محتوى خانة فى جدول قاعدة البيانات فيترجمها
فى حين يضع باقى النص كما هو دون تغيير
قد يكون النص الغير مترجم فى سطر وحده أو داخل العبارة أو حتى جزء من الجملة
وهذه صورة أخرى للتوضيح:
http://www6.0zz0.com/2015/04/27/19/591703890.jpg

سألفت نظرك لبعض الجمل فى الكود القديم مثل
Dim translatedText As String = TextBox1.Text

ثم فى كود تنفيذ النص:
If words.Length = 2 And translatedText.Contains(word) Then
translatedText = translatedText.Replace(word, words(+1))

مما يجعل البرنامج يبدل الكلمة أو الجملة بمقابلها تاركاً باقى النص بنفس الشكل
عاجز عن شكرك بما يكفى لهذا المجهود
الرد }}}
تم الشكر بواسطة: sami2015


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  هل من الممكن العمل على قاعدة بيانات اكسل على الفيجوال بيسك خالد كامل1 4 81 24-03-24, 02:00 AM
آخر رد: خالد كامل1
  [سؤال] أتمنى اجابة وافية:عمل برنامج بقاعدة بيانات SQL دون حاجة تثبيت SQLSERVER dr.programming 6 600 19-03-24, 08:56 AM
آخر رد: سلامه محمد11
  استعلام select عن مجموعة بيانات Adel27213 1 172 15-03-24, 01:11 AM
آخر رد: justforit
  تعديل بيانات عمود DataGridView دفعة واحدة مصمم هاوي 2 164 05-03-24, 08:27 PM
آخر رد: مصمم هاوي
  [VB.NET] تحديث بيانات فى كلاس من جدول سيكوال asdfar1977 6 184 26-02-24, 01:07 AM
آخر رد: asdfar1977
  كيفية جمع أرقام عمود فى الداتا جريد فيو بناءاً على بيانات معينة heem1986 5 223 25-02-24, 11:26 PM
آخر رد: heem1986
  [C#.NET] طباعة بيانات داتا جرد فيو h2551996 0 84 25-02-24, 02:31 PM
آخر رد: h2551996
  [VB.NET] معرفة بيانات الجهاز محمد بوقزاحة 1 312 21-02-24, 11:44 PM
آخر رد: AHMED213
  كيفية انشاء سكريبت لقاعدة بيانات من خلال الكود heem1986 1 194 20-02-24, 12:00 AM
آخر رد: Kamil
  كيفية تنفيذ أمر عرض بيانات من فورم ثان مصمم هاوي 7 329 19-02-24, 12:28 AM
آخر رد: مصمم هاوي

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


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