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


دي صورة قائمة ادخال وحفظ 


ودي اكواد الحفظ 
كود :
Imports System.Data.OleDb
Imports System.Data
Imports System.Globalization
Imports System.IO
Imports System.Drawing.Image
Public Class UserControl1
   Dim con As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282")

   Private Sub UserControl1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Guna.UI.Lib.GraphicsHelper.DrawLineShadow(Me, Color.Black, 50, 20, Guna.UI.WinForms.VerHorAlign.HoriziontalTop)

   End Sub

   Private Sub GunaButton1_Click(sender As Object, e As EventArgs) Handles GunaButton1.Click
       If (String.IsNullOrEmpty(nameadd.Text)) Then
           MessageBox.Show("يجب ادخال اسم العميل قبل الحفظ", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return
       End If
       Dim str As String = ("provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282")
       Dim con As New OleDbConnection(str)
       Dim isds As New DataSet
       '==============================================================================================================
     


       Try



           Dim cmd As New OleDbCommand(str, con)
           'فتح الاتصال بمزود البيانات وهى قاعده البيانات
           Dim connectionstring As String = "provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282"
           Dim newconnection As New OleDbConnection(connectionstring)
           cmd.Connection = newconnection
           cmd.CommandType = CommandType.Text
           'اضافه المعلومات التى تكتبها الى الجدول كل سجل تكتبه بما يماثله فى الجدول
           cmd.CommandText = "insert into DBET ([pName],[Email],[Phone],[ProjectName],[ProjectType],[About],[Photo]) values ('" & _
            nameadd.Text & "','" & emailadd.Text & "','" & phoneadd.Text & _
            "','" & pnameadd.Text & "','" & ptypeadd.Text & "','" & aboutadd.Text & "','" & photoadd.ImageLocation & "') "


           'فتح الاتصال وتاكيد الاضافه وبعد ذلك اغلاق الاتصال
           newconnection.Open()
           cmd.ExecuteNonQuery()
           newconnection.Close()
       Catch ex As Exception
           MessageBox.Show(ex.Message)
       End Try

       

       'اظهار رساله للمستخدم تبين له نجاح اضافته واغلاق الاتصال واغلاق الفورم بتاع الاضافه والذهاب الى الفورم الرئيسى
       MsgBox("تمت عملية الاضافة والحفظ في قاعدة البيانات بنجاح", 64, "حفظ الاضافة")

       nameadd.Text = ""
       emailadd.Text = ""
       phoneadd.Text = ""
       pnameadd.Text = ""
       ptypeadd.Text = ""
       aboutadd.Text = ""
   End Sub
 
   Private Sub GunaButton3_Click(sender As Object, e As EventArgs) Handles GunaButton3.Click
       OpenFileDialog1.Filter = "Image Formats (*.PNG; *.JPG; *.BMP) | *.PNG; *.JPG; *.BMP | All Files (*.*) | *.*"
       'Dim OpenFileDialog1 As New OpenFileDialog
       With OpenFileDialog1
           If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then
               MsgBox("image is not choised")
               Return
           Else
               photoadd.ImageLocation = OpenFileDialog1.FileName
           End If
       End With
   End Sub
End Class


ودي صورة واجهة التعديل لما بحدد صف البيانات من داتا جريد فيو وادوس علي edit بيظهر البيانات في التكست بوك فانا عاوز يظهر معهم الصورة الي اتحفظ علشان لما اعدل 


وده كود التعديل 
كود :
Imports System.Data.OleDb
Imports System.Data
Imports System.Globalization
Public Class UserControl2
   Dim con As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282")
   Sub LoadDataToDGV()
       Dim da As New OleDbDataAdapter("select * from DBET", con)
       Dim dt As New DataTable()
       da.Fill(dt)
       DataGridView1.DataSource = dt
   End Sub
   Private Sub UserControl2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Guna.UI.Lib.GraphicsHelper.DrawLineShadow(Me, Color.Black, 50, 20, Guna.UI.WinForms.VerHorAlign.HoriziontalTop)

   End Sub

   Private Sub GunaButton4_Click(sender As Object, e As EventArgs) Handles GunaButton4.Click
       If (DataGridView1.SelectedRows.Count = 0) Then
           MessageBox.Show("يجب تحديد البيانات المراد تعديلها اولا", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return
       End If


       

       'كود جلب البيانات
       Dim indx As Integer = DataGridView1.SelectedRows(0).Index
       nameed.Text = DataGridView1(1, indx).Value.ToString()
       phoned.Text = DataGridView1(2, indx).Value.ToString()
       emailed.Text = DataGridView1(3, indx).Value.ToString()
       pnameed.Text = DataGridView1(4, indx).Value.ToString()
       ptypeed.Text = DataGridView1(5, indx).Value.ToString()
       abouted.Text = DataGridView1(6, indx).Value.ToString()
       photoed.ImageLocation = DataGridView1(7, indx).Value.ToString()
   End Sub

   Private Sub GunaButton5_Click(sender As Object, e As EventArgs) Handles GunaButton5.Click
       LoadDataToDGV()

   End Sub

   Private Sub GunaButton1_Click(sender As Object, e As EventArgs) Handles GunaButton1.Click
       If (String.IsNullOrEmpty(nameed.Text)) Then
           MessageBox.Show("يجب ادخال اسم الصنف قبل الحفظ", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return
       End If

     

       Dim id As Integer = CInt(DataGridView1(0, DataGridView1.SelectedRows(0).Index).Value.ToString())
       Dim str As String = String.Format("update DBET set  pName='{0}', Email='{1}', Phone='{2}', ProjectName='{3}', ProjectType='{4}', About='{5}', Photo='{6}'  where ID ={7}", nameed.Text, phoned.Text, emailed.Text, pnameed.Text, ptypeed.Text, abouted.Text, photoed.ImageLocation, id)
       Dim cmd As New OleDbCommand(str, con)
       con.Open()
       cmd.ExecuteNonQuery()
       con.Close()
       MessageBox.Show("تم حفظ التعديل بنجاح")
       LoadDataToDGV()
   End Sub

   Private Sub GunaButton3_Click(sender As Object, e As EventArgs) Handles GunaButton3.Click
       OpenFileDialog1.Filter = "Image Formats (*.PNG; *.JPG; *.BMP) | *.PNG; *.JPG; *.BMP | All Files (*.*) | *.*"
       'Dim OpenFileDialog1 As New OpenFileDialog
       With OpenFileDialog1
           If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then
               MsgBox("image is not choised")
               Return
           Else
               photoed.ImageLocation = OpenFileDialog1.FileName
           End If
       End With
   End Sub

   Private Sub photoed_Click(sender As Object, e As EventArgs) Handles photoed.Click

   End Sub


End Class

ملحوظة ان عارف اني الصورة لما تتحفظ بطريقة مباشرة داخل قاعدة البيانات بتاثر علي مساحة القاعدة بس ان عاوز الطريقة دي علشان البيانات الي هضيفها بعد كدة مش هتكون كتير
الرد
تم الشكر بواسطة:
#2
(04-03-20, 12:59 AM)mazentq كتب : السلام عليكم ورحمة الله وبركته
ان عملت برنامج بلغة الفيجوال وقاعدة بيانات اكسس والبرنامج شغال تمام خالص معايا وبيفظ كل البيانات وبيعدل عليها كمان 
بس المشكلة الوحيدة الي مش لقيلها حل ودورت كتير خالص ومفيش طريقة اشتغلت معايا هي اني عاوز اضيف مع البيانات دي صورة تتحفظ وتتخزن في قاعدة البيانات نفسها مش يحفظ المسار لا يحفظ الصورة نفسها جوه القاعدة مع البيانات ولما اعملها عرض من الداتا جريد فيو علشان اعدل عليها تظهر معايا واقدر اعدلها 
فلو سمحت الي يقدر يعدل في كود المشروع  ويضيف الكود بتاع حفظ الصورة اكون شاكر فضلة علشان والله دورت كتير ومفيش طريقة ظبطط معايا وشكرا 


دي صورة قائمة ادخال وحفظ 


ودي اكواد الحفظ 
كود :
Imports System.Data.OleDb
Imports System.Data
Imports System.Globalization
Imports System.IO
Imports System.Drawing.Image
Public Class UserControl1
   Dim con As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282")

   Private Sub UserControl1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Guna.UI.Lib.GraphicsHelper.DrawLineShadow(Me, Color.Black, 50, 20, Guna.UI.WinForms.VerHorAlign.HoriziontalTop)

   End Sub

   Private Sub GunaButton1_Click(sender As Object, e As EventArgs) Handles GunaButton1.Click
       If (String.IsNullOrEmpty(nameadd.Text)) Then
           MessageBox.Show("يجب ادخال اسم العميل قبل الحفظ", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return
       End If
       Dim str As String = ("provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282")
       Dim con As New OleDbConnection(str)
       Dim isds As New DataSet
       '==============================================================================================================
     


       Try



           Dim cmd As New OleDbCommand(str, con)
           'فتح الاتصال بمزود البيانات وهى قاعده البيانات
           Dim connectionstring As String = "provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282"
           Dim newconnection As New OleDbConnection(connectionstring)
           cmd.Connection = newconnection
           cmd.CommandType = CommandType.Text
           'اضافه المعلومات التى تكتبها الى الجدول كل سجل تكتبه بما يماثله فى الجدول
           cmd.CommandText = "insert into DBET ([pName],[Email],[Phone],[ProjectName],[ProjectType],[About],[Photo]) values ('" & _
            nameadd.Text & "','" & emailadd.Text & "','" & phoneadd.Text & _
            "','" & pnameadd.Text & "','" & ptypeadd.Text & "','" & aboutadd.Text & "','" & photoadd.ImageLocation & "') "


           'فتح الاتصال وتاكيد الاضافه وبعد ذلك اغلاق الاتصال
           newconnection.Open()
           cmd.ExecuteNonQuery()
           newconnection.Close()
       Catch ex As Exception
           MessageBox.Show(ex.Message)
       End Try

       

       'اظهار رساله للمستخدم تبين له نجاح اضافته واغلاق الاتصال واغلاق الفورم بتاع الاضافه والذهاب الى الفورم الرئيسى
       MsgBox("تمت عملية الاضافة والحفظ في قاعدة البيانات بنجاح", 64, "حفظ الاضافة")

       nameadd.Text = ""
       emailadd.Text = ""
       phoneadd.Text = ""
       pnameadd.Text = ""
       ptypeadd.Text = ""
       aboutadd.Text = ""
   End Sub
 
   Private Sub GunaButton3_Click(sender As Object, e As EventArgs) Handles GunaButton3.Click
       OpenFileDialog1.Filter = "Image Formats (*.PNG; *.JPG; *.BMP) | *.PNG; *.JPG; *.BMP | All Files (*.*) | *.*"
       'Dim OpenFileDialog1 As New OpenFileDialog
       With OpenFileDialog1
           If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then
               MsgBox("image is not choised")
               Return
           Else
               photoadd.ImageLocation = OpenFileDialog1.FileName
           End If
       End With
   End Sub
End Class


ودي صورة واجهة التعديل لما بحدد صف البيانات من داتا جريد فيو وادوس علي edit بيظهر البيانات في التكست بوك فانا عاوز يظهر معهم الصورة الي اتحفظ علشان لما اعدل 


وده كود التعديل 
كود :
Imports System.Data.OleDb
Imports System.Data
Imports System.Globalization
Public Class UserControl2
   Dim con As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282")
   Sub LoadDataToDGV()
       Dim da As New OleDbDataAdapter("select * from DBET", con)
       Dim dt As New DataTable()
       da.Fill(dt)
       DataGridView1.DataSource = dt
   End Sub
   Private Sub UserControl2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Guna.UI.Lib.GraphicsHelper.DrawLineShadow(Me, Color.Black, 50, 20, Guna.UI.WinForms.VerHorAlign.HoriziontalTop)

   End Sub

   Private Sub GunaButton4_Click(sender As Object, e As EventArgs) Handles GunaButton4.Click
       If (DataGridView1.SelectedRows.Count = 0) Then
           MessageBox.Show("يجب تحديد البيانات المراد تعديلها اولا", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return
       End If


       

       'كود جلب البيانات
       Dim indx As Integer = DataGridView1.SelectedRows(0).Index
       nameed.Text = DataGridView1(1, indx).Value.ToString()
       phoned.Text = DataGridView1(2, indx).Value.ToString()
       emailed.Text = DataGridView1(3, indx).Value.ToString()
       pnameed.Text = DataGridView1(4, indx).Value.ToString()
       ptypeed.Text = DataGridView1(5, indx).Value.ToString()
       abouted.Text = DataGridView1(6, indx).Value.ToString()
       photoed.ImageLocation = DataGridView1(7, indx).Value.ToString()
   End Sub

   Private Sub GunaButton5_Click(sender As Object, e As EventArgs) Handles GunaButton5.Click
       LoadDataToDGV()

   End Sub

   Private Sub GunaButton1_Click(sender As Object, e As EventArgs) Handles GunaButton1.Click
       If (String.IsNullOrEmpty(nameed.Text)) Then
           MessageBox.Show("يجب ادخال اسم الصنف قبل الحفظ", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return
       End If

     

       Dim id As Integer = CInt(DataGridView1(0, DataGridView1.SelectedRows(0).Index).Value.ToString())
       Dim str As String = String.Format("update DBET set  pName='{0}', Email='{1}', Phone='{2}', ProjectName='{3}', ProjectType='{4}', About='{5}', Photo='{6}'  where ID ={7}", nameed.Text, phoned.Text, emailed.Text, pnameed.Text, ptypeed.Text, abouted.Text, photoed.ImageLocation, id)
       Dim cmd As New OleDbCommand(str, con)
       con.Open()
       cmd.ExecuteNonQuery()
       con.Close()
       MessageBox.Show("تم حفظ التعديل بنجاح")
       LoadDataToDGV()
   End Sub

   Private Sub GunaButton3_Click(sender As Object, e As EventArgs) Handles GunaButton3.Click
       OpenFileDialog1.Filter = "Image Formats (*.PNG; *.JPG; *.BMP) | *.PNG; *.JPG; *.BMP | All Files (*.*) | *.*"
       'Dim OpenFileDialog1 As New OpenFileDialog
       With OpenFileDialog1
           If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then
               MsgBox("image is not choised")
               Return
           Else
               photoed.ImageLocation = OpenFileDialog1.FileName
           End If
       End With
   End Sub

   Private Sub photoed_Click(sender As Object, e As EventArgs) Handles photoed.Click

   End Sub


End Class

ملحوظة ان عارف اني الصورة لما تتحفظ بطريقة مباشرة داخل قاعدة البيانات بتاثر علي مساحة القاعدة بس ان عاوز الطريقة دي علشان البيانات الي هضيفها بعد كدة مش هتكون كتير



مثل ما اخبرتك في موضوعك السابق
تحتاج تغيير نوع حقل الصورة في الاكسس الى (كائن OLE)

قد تحتاج لان تحذف البيانات القديمة من قاعدة البيانات



كود الحفظ 
كود :
Imports System.Data.OleDb
Imports System.Data
Imports System.Globalization
Imports System.IO
Imports System.Drawing.Image
Public Class UserControl1
   Dim con As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282")

   Private Sub UserControl1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Guna.UI.Lib.GraphicsHelper.DrawLineShadow(Me, Color.Black, 50, 20, Guna.UI.WinForms.VerHorAlign.HoriziontalTop)

   End Sub

   Private Sub GunaButton1_Click(sender As Object, e As EventArgs) Handles GunaButton1.Click
       If (String.IsNullOrEmpty(nameadd.Text)) Then
           MessageBox.Show("يجب ادخال اسم العميل قبل الحفظ", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return
       End If
       '==============================================================================================================



       Try



           Dim cmd As New OleDbCommand("insert into DBET ([pName],[Email],[Phone],[ProjectName],[ProjectType],[About],[Photo]) values(@pName,@Email,@Phone,@ProjectName,@ProjectType,@About,@Photo)", con)
           cmd.Parameters.AddWithValue("@pName", nameadd.Text)
           cmd.Parameters.AddWithValue("@Email", emailadd.Text)
           cmd.Parameters.AddWithValue("@Phone", phoneadd.Text)
           cmd.Parameters.AddWithValue("@ProjectName", pnameadd.Text)
           cmd.Parameters.AddWithValue("@ProjectType", ptypeadd.Text)
           cmd.Parameters.AddWithValue("@About", aboutadd.Text)

           Dim ms = New IO.MemoryStream()
           photoadd.Image.Save(ms, photoadd.Image.RawFormat)
           Dim bytes = ms.ToArray()
           cmd.Parameters.AddWithValue("@Photo", bytes)


           'فتح الاتصال وتاكيد الاضافه وبعد ذلك اغلاق الاتصال
           con.Open()
           cmd.ExecuteNonQuery()
           con.Close()

           'اظهار رساله للمستخدم تبين له نجاح اضافته واغلاق الاتصال واغلاق الفورم بتاع الاضافه والذهاب الى الفورم الرئيسى
           MsgBox("تمت عملية الاضافة والحفظ في قاعدة البيانات بنجاح", 64, "حفظ الاضافة")

           nameadd.Text = ""
           emailadd.Text = ""
           phoneadd.Text = ""
           pnameadd.Text = ""
           ptypeadd.Text = ""
           aboutadd.Text = ""

       Catch ex As Exception
           MessageBox.Show(ex.Message)
       End Try
   End Sub


   Private Sub GunaButton3_Click(sender As Object, e As EventArgs) Handles GunaButton3.Click
       OpenFileDialog1.Filter = "Image Formats (*.PNG; *.JPG; *.BMP) | *.PNG; *.JPG; *.BMP | All Files (*.*) | *.*"
       'Dim OpenFileDialog1 As New OpenFileDialog
       With OpenFileDialog1
           If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then
               MsgBox("image is not choised")
               Return
           Else
               photoadd.Image = Image.FromFile(OpenFileDialog1.FileName)
           End If
       End With
   End Sub
End Class



كود التعديل
كود :
Imports System.Data.OleDb
Imports System.Data
Imports System.Globalization
Public Class UserControl2
   Dim con As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282")
   Sub LoadDataToDGV()
       Dim da As New OleDbDataAdapter("select * from DBET", con)
       Dim dt As New DataTable()
       da.Fill(dt)
       DataGridView1.DataSource = dt
   End Sub
   Private Sub UserControl2_Load(sender As Object, e As EventArgs)
       Guna.UI.Lib.GraphicsHelper.DrawLineShadow(Me, Color.Black, 50, 20, Guna.UI.WinForms.VerHorAlign.HoriziontalTop)

   End Sub

   Private Sub GunaButton4_Click(sender As Object, e As EventArgs) Handles GunaButton4.Click
       If (DataGridView1.SelectedRows.Count = 0) Then
           MessageBox.Show("يجب تحديد البيانات المراد تعديلها اولا", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return
       End If




       'كود جلب البيانات
       Dim indx As Integer = DataGridView1.SelectedRows(0).Index
       nameed.Text = DataGridView1(1, indx).Value.ToString()
       emailed.Text = DataGridView1(2, indx).Value.ToString()
       phoned.Text = DataGridView1(3, indx).Value.ToString()
       pnameed.Text = DataGridView1(4, indx).Value.ToString()
       ptypeed.Text = DataGridView1(5, indx).Value.ToString()
       abouted.Text = DataGridView1(6, indx).Value.ToString()

       Dim ms As New IO.MemoryStream(CType(DataGridView1(7, indx).Value, Byte()))
       Dim returnImage As Image = Image.FromStream(ms)
       photoed.Image = returnImage
   End Sub

   Private Sub GunaButton5_Click(sender As Object, e As EventArgs) Handles GunaButton5.Click
       LoadDataToDGV()

   End Sub

   Private Sub GunaButton1_Click(sender As Object, e As EventArgs) Handles GunaButton1.Click
       If (String.IsNullOrEmpty(nameed.Text)) Then
           MessageBox.Show("يجب ادخال اسم الصنف قبل الحفظ", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return
       End If



       Dim id As Integer = CInt(DataGridView1(0, DataGridView1.SelectedRows(0).Index).Value.ToString())
       Dim cmd As New OleDbCommand("update DBET set  pName=@pName, Email=@Email, Phone=@Phone, ProjectName=@ProjectName, ProjectType=@ProjectType, About=@About, Photo=@Photo  where ID =@ID", con)
       cmd.Parameters.AddWithValue("@pName", nameed.Text)
       cmd.Parameters.AddWithValue("@Email", emailed.Text)
       cmd.Parameters.AddWithValue("@Phone", phoned.Text)
       cmd.Parameters.AddWithValue("@ProjectName", pnameed.Text)
       cmd.Parameters.AddWithValue("@ProjectType", ptypeed.Text)
       cmd.Parameters.AddWithValue("@About", abouted.Text)

       Dim ms = New IO.MemoryStream()
       photoed.Image.Save(ms, photoed.Image.RawFormat)
       Dim bytes = ms.ToArray()
       cmd.Parameters.AddWithValue("@Photo", bytes)

       cmd.Parameters.AddWithValue("@ID", id)

       con.Open()
       cmd.ExecuteNonQuery()
       con.Close()
       MessageBox.Show("تم حفظ التعديل بنجاح")
       LoadDataToDGV()
   End Sub

   Private Sub GunaButton3_Click(sender As Object, e As EventArgs) Handles GunaButton3.Click
       OpenFileDialog1.Filter = "Image Formats (*.PNG; *.JPG; *.BMP) | *.PNG; *.JPG; *.BMP | All Files (*.*) | *.*"
       'Dim OpenFileDialog1 As New OpenFileDialog
       With OpenFileDialog1
           If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then
               MsgBox("image is not choised")
               Return
           Else
               photoed.ImageLocation = OpenFileDialog1.FileName
           End If
       End With
   End Sub

   Private Sub photoed_Click(sender As Object, e As EventArgs) Handles photoed.Click

   End Sub


End Class

اقرا التعديلات جيدا وافهمها لتكون مستعدا لاي سؤال او مناقشة عند تقديم مشروعك مشروع التخرج كما ذكرت في الموضوع السابق
الرد
تم الشكر بواسطة: ابو روضة , عبد العزيز البسكري
#3
(04-03-20, 04:34 PM)alsalamoni كتب :
(04-03-20, 12:59 AM)mazentq كتب : السلام عليكم ورحمة الله وبركته
ان عملت برنامج بلغة الفيجوال وقاعدة بيانات اكسس والبرنامج شغال تمام خالص معايا وبيفظ كل البيانات وبيعدل عليها كمان 
بس المشكلة الوحيدة الي مش لقيلها حل ودورت كتير خالص ومفيش طريقة اشتغلت معايا هي اني عاوز اضيف مع البيانات دي صورة تتحفظ وتتخزن في قاعدة البيانات نفسها مش يحفظ المسار لا يحفظ الصورة نفسها جوه القاعدة مع البيانات ولما اعملها عرض من الداتا جريد فيو علشان اعدل عليها تظهر معايا واقدر اعدلها 
فلو سمحت الي يقدر يعدل في كود المشروع  ويضيف الكود بتاع حفظ الصورة اكون شاكر فضلة علشان والله دورت كتير ومفيش طريقة ظبطط معايا وشكرا 


دي صورة قائمة ادخال وحفظ 


ودي اكواد الحفظ 
كود :
Imports System.Data.OleDb
Imports System.Data
Imports System.Globalization
Imports System.IO
Imports System.Drawing.Image
Public Class UserControl1
   Dim con As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282")

   Private Sub UserControl1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Guna.UI.Lib.GraphicsHelper.DrawLineShadow(Me, Color.Black, 50, 20, Guna.UI.WinForms.VerHorAlign.HoriziontalTop)

   End Sub

   Private Sub GunaButton1_Click(sender As Object, e As EventArgs) Handles GunaButton1.Click
       If (String.IsNullOrEmpty(nameadd.Text)) Then
           MessageBox.Show("يجب ادخال اسم العميل قبل الحفظ", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return
       End If
       Dim str As String = ("provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282")
       Dim con As New OleDbConnection(str)
       Dim isds As New DataSet
       '==============================================================================================================
     


       Try



           Dim cmd As New OleDbCommand(str, con)
           'فتح الاتصال بمزود البيانات وهى قاعده البيانات
           Dim connectionstring As String = "provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282"
           Dim newconnection As New OleDbConnection(connectionstring)
           cmd.Connection = newconnection
           cmd.CommandType = CommandType.Text
           'اضافه المعلومات التى تكتبها الى الجدول كل سجل تكتبه بما يماثله فى الجدول
           cmd.CommandText = "insert into DBET ([pName],[Email],[Phone],[ProjectName],[ProjectType],[About],[Photo]) values ('" & _
            nameadd.Text & "','" & emailadd.Text & "','" & phoneadd.Text & _
            "','" & pnameadd.Text & "','" & ptypeadd.Text & "','" & aboutadd.Text & "','" & photoadd.ImageLocation & "') "


           'فتح الاتصال وتاكيد الاضافه وبعد ذلك اغلاق الاتصال
           newconnection.Open()
           cmd.ExecuteNonQuery()
           newconnection.Close()
       Catch ex As Exception
           MessageBox.Show(ex.Message)
       End Try

       

       'اظهار رساله للمستخدم تبين له نجاح اضافته واغلاق الاتصال واغلاق الفورم بتاع الاضافه والذهاب الى الفورم الرئيسى
       MsgBox("تمت عملية الاضافة والحفظ في قاعدة البيانات بنجاح", 64, "حفظ الاضافة")

       nameadd.Text = ""
       emailadd.Text = ""
       phoneadd.Text = ""
       pnameadd.Text = ""
       ptypeadd.Text = ""
       aboutadd.Text = ""
   End Sub
 
   Private Sub GunaButton3_Click(sender As Object, e As EventArgs) Handles GunaButton3.Click
       OpenFileDialog1.Filter = "Image Formats (*.PNG; *.JPG; *.BMP) | *.PNG; *.JPG; *.BMP | All Files (*.*) | *.*"
       'Dim OpenFileDialog1 As New OpenFileDialog
       With OpenFileDialog1
           If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then
               MsgBox("image is not choised")
               Return
           Else
               photoadd.ImageLocation = OpenFileDialog1.FileName
           End If
       End With
   End Sub
End Class


ودي صورة واجهة التعديل لما بحدد صف البيانات من داتا جريد فيو وادوس علي edit بيظهر البيانات في التكست بوك فانا عاوز يظهر معهم الصورة الي اتحفظ علشان لما اعدل 


وده كود التعديل 
كود :
Imports System.Data.OleDb
Imports System.Data
Imports System.Globalization
Public Class UserControl2
   Dim con As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282")
   Sub LoadDataToDGV()
       Dim da As New OleDbDataAdapter("select * from DBET", con)
       Dim dt As New DataTable()
       da.Fill(dt)
       DataGridView1.DataSource = dt
   End Sub
   Private Sub UserControl2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Guna.UI.Lib.GraphicsHelper.DrawLineShadow(Me, Color.Black, 50, 20, Guna.UI.WinForms.VerHorAlign.HoriziontalTop)

   End Sub

   Private Sub GunaButton4_Click(sender As Object, e As EventArgs) Handles GunaButton4.Click
       If (DataGridView1.SelectedRows.Count = 0) Then
           MessageBox.Show("يجب تحديد البيانات المراد تعديلها اولا", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return
       End If


       

       'كود جلب البيانات
       Dim indx As Integer = DataGridView1.SelectedRows(0).Index
       nameed.Text = DataGridView1(1, indx).Value.ToString()
       phoned.Text = DataGridView1(2, indx).Value.ToString()
       emailed.Text = DataGridView1(3, indx).Value.ToString()
       pnameed.Text = DataGridView1(4, indx).Value.ToString()
       ptypeed.Text = DataGridView1(5, indx).Value.ToString()
       abouted.Text = DataGridView1(6, indx).Value.ToString()
       photoed.ImageLocation = DataGridView1(7, indx).Value.ToString()
   End Sub

   Private Sub GunaButton5_Click(sender As Object, e As EventArgs) Handles GunaButton5.Click
       LoadDataToDGV()

   End Sub

   Private Sub GunaButton1_Click(sender As Object, e As EventArgs) Handles GunaButton1.Click
       If (String.IsNullOrEmpty(nameed.Text)) Then
           MessageBox.Show("يجب ادخال اسم الصنف قبل الحفظ", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return
       End If

     

       Dim id As Integer = CInt(DataGridView1(0, DataGridView1.SelectedRows(0).Index).Value.ToString())
       Dim str As String = String.Format("update DBET set  pName='{0}', Email='{1}', Phone='{2}', ProjectName='{3}', ProjectType='{4}', About='{5}', Photo='{6}'  where ID ={7}", nameed.Text, phoned.Text, emailed.Text, pnameed.Text, ptypeed.Text, abouted.Text, photoed.ImageLocation, id)
       Dim cmd As New OleDbCommand(str, con)
       con.Open()
       cmd.ExecuteNonQuery()
       con.Close()
       MessageBox.Show("تم حفظ التعديل بنجاح")
       LoadDataToDGV()
   End Sub

   Private Sub GunaButton3_Click(sender As Object, e As EventArgs) Handles GunaButton3.Click
       OpenFileDialog1.Filter = "Image Formats (*.PNG; *.JPG; *.BMP) | *.PNG; *.JPG; *.BMP | All Files (*.*) | *.*"
       'Dim OpenFileDialog1 As New OpenFileDialog
       With OpenFileDialog1
           If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then
               MsgBox("image is not choised")
               Return
           Else
               photoed.ImageLocation = OpenFileDialog1.FileName
           End If
       End With
   End Sub

   Private Sub photoed_Click(sender As Object, e As EventArgs) Handles photoed.Click

   End Sub


End Class

ملحوظة ان عارف اني الصورة لما تتحفظ بطريقة مباشرة داخل قاعدة البيانات بتاثر علي مساحة القاعدة بس ان عاوز الطريقة دي علشان البيانات الي هضيفها بعد كدة مش هتكون كتير



مثل ما اخبرتك في موضوعك السابق
تحتاج تغيير نوع حقل الصورة في الاكسس الى (كائن OLE)

قد تحتاج لان تحذف البيانات القديمة من قاعدة البيانات



كود الحفظ 
كود :
Imports System.Data.OleDb
Imports System.Data
Imports System.Globalization
Imports System.IO
Imports System.Drawing.Image
Public Class UserControl1
   Dim con As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282")

   Private Sub UserControl1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Guna.UI.Lib.GraphicsHelper.DrawLineShadow(Me, Color.Black, 50, 20, Guna.UI.WinForms.VerHorAlign.HoriziontalTop)

   End Sub

   Private Sub GunaButton1_Click(sender As Object, e As EventArgs) Handles GunaButton1.Click
       If (String.IsNullOrEmpty(nameadd.Text)) Then
           MessageBox.Show("يجب ادخال اسم العميل قبل الحفظ", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return
       End If
       '==============================================================================================================



       Try



           Dim cmd As New OleDbCommand("insert into DBET ([pName],[Email],[Phone],[ProjectName],[ProjectType],[About],[Photo]) values(@pName,@Email,@Phone,@ProjectName,@ProjectType,@About,@Photo)", con)
           cmd.Parameters.AddWithValue("@pName", nameadd.Text)
           cmd.Parameters.AddWithValue("@Email", emailadd.Text)
           cmd.Parameters.AddWithValue("@Phone", phoneadd.Text)
           cmd.Parameters.AddWithValue("@ProjectName", pnameadd.Text)
           cmd.Parameters.AddWithValue("@ProjectType", ptypeadd.Text)
           cmd.Parameters.AddWithValue("@About", aboutadd.Text)

           Dim ms = New IO.MemoryStream()
           photoadd.Image.Save(ms, photoadd.Image.RawFormat)
           Dim bytes = ms.ToArray()
           cmd.Parameters.AddWithValue("@Photo", bytes)


           'فتح الاتصال وتاكيد الاضافه وبعد ذلك اغلاق الاتصال
           con.Open()
           cmd.ExecuteNonQuery()
           con.Close()

           'اظهار رساله للمستخدم تبين له نجاح اضافته واغلاق الاتصال واغلاق الفورم بتاع الاضافه والذهاب الى الفورم الرئيسى
           MsgBox("تمت عملية الاضافة والحفظ في قاعدة البيانات بنجاح", 64, "حفظ الاضافة")

           nameadd.Text = ""
           emailadd.Text = ""
           phoneadd.Text = ""
           pnameadd.Text = ""
           ptypeadd.Text = ""
           aboutadd.Text = ""

       Catch ex As Exception
           MessageBox.Show(ex.Message)
       End Try
   End Sub


   Private Sub GunaButton3_Click(sender As Object, e As EventArgs) Handles GunaButton3.Click
       OpenFileDialog1.Filter = "Image Formats (*.PNG; *.JPG; *.BMP) | *.PNG; *.JPG; *.BMP | All Files (*.*) | *.*"
       'Dim OpenFileDialog1 As New OpenFileDialog
       With OpenFileDialog1
           If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then
               MsgBox("image is not choised")
               Return
           Else
               photoadd.Image = Image.FromFile(OpenFileDialog1.FileName)
           End If
       End With
   End Sub
End Class



كود التعديل
كود :
Imports System.Data.OleDb
Imports System.Data
Imports System.Globalization
Public Class UserControl2
   Dim con As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282")
   Sub LoadDataToDGV()
       Dim da As New OleDbDataAdapter("select * from DBET", con)
       Dim dt As New DataTable()
       da.Fill(dt)
       DataGridView1.DataSource = dt
   End Sub
   Private Sub UserControl2_Load(sender As Object, e As EventArgs)
       Guna.UI.Lib.GraphicsHelper.DrawLineShadow(Me, Color.Black, 50, 20, Guna.UI.WinForms.VerHorAlign.HoriziontalTop)

   End Sub

   Private Sub GunaButton4_Click(sender As Object, e As EventArgs) Handles GunaButton4.Click
       If (DataGridView1.SelectedRows.Count = 0) Then
           MessageBox.Show("يجب تحديد البيانات المراد تعديلها اولا", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return
       End If




       'كود جلب البيانات
       Dim indx As Integer = DataGridView1.SelectedRows(0).Index
       nameed.Text = DataGridView1(1, indx).Value.ToString()
       emailed.Text = DataGridView1(2, indx).Value.ToString()
       phoned.Text = DataGridView1(3, indx).Value.ToString()
       pnameed.Text = DataGridView1(4, indx).Value.ToString()
       ptypeed.Text = DataGridView1(5, indx).Value.ToString()
       abouted.Text = DataGridView1(6, indx).Value.ToString()

       Dim ms As New IO.MemoryStream(CType(DataGridView1(7, indx).Value, Byte()))
       Dim returnImage As Image = Image.FromStream(ms)
       photoed.Image = returnImage
   End Sub

   Private Sub GunaButton5_Click(sender As Object, e As EventArgs) Handles GunaButton5.Click
       LoadDataToDGV()

   End Sub

   Private Sub GunaButton1_Click(sender As Object, e As EventArgs) Handles GunaButton1.Click
       If (String.IsNullOrEmpty(nameed.Text)) Then
           MessageBox.Show("يجب ادخال اسم الصنف قبل الحفظ", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return
       End If



       Dim id As Integer = CInt(DataGridView1(0, DataGridView1.SelectedRows(0).Index).Value.ToString())
       Dim cmd As New OleDbCommand("update DBET set  pName=@pName, Email=@Email, Phone=@Phone, ProjectName=@ProjectName, ProjectType=@ProjectType, About=@About, Photo=@Photo  where ID =@ID", con)
       cmd.Parameters.AddWithValue("@pName", nameed.Text)
       cmd.Parameters.AddWithValue("@Email", emailed.Text)
       cmd.Parameters.AddWithValue("@Phone", phoned.Text)
       cmd.Parameters.AddWithValue("@ProjectName", pnameed.Text)
       cmd.Parameters.AddWithValue("@ProjectType", ptypeed.Text)
       cmd.Parameters.AddWithValue("@About", abouted.Text)

       Dim ms = New IO.MemoryStream()
       photoed.Image.Save(ms, photoed.Image.RawFormat)
       Dim bytes = ms.ToArray()
       cmd.Parameters.AddWithValue("@Photo", bytes)

       cmd.Parameters.AddWithValue("@ID", id)

       con.Open()
       cmd.ExecuteNonQuery()
       con.Close()
       MessageBox.Show("تم حفظ التعديل بنجاح")
       LoadDataToDGV()
   End Sub

   Private Sub GunaButton3_Click(sender As Object, e As EventArgs) Handles GunaButton3.Click
       OpenFileDialog1.Filter = "Image Formats (*.PNG; *.JPG; *.BMP) | *.PNG; *.JPG; *.BMP | All Files (*.*) | *.*"
       'Dim OpenFileDialog1 As New OpenFileDialog
       With OpenFileDialog1
           If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then
               MsgBox("image is not choised")
               Return
           Else
               photoed.ImageLocation = OpenFileDialog1.FileName
           End If
       End With
   End Sub

   Private Sub photoed_Click(sender As Object, e As EventArgs) Handles photoed.Click

   End Sub


End Class

اقرا التعديلات جيدا وافهمها لتكون مستعدا لاي سؤال او مناقشة عند تقديم مشروعك مشروع التخرج كما ذكرت في الموضوع السابق

تمام هقراهم وافهمهم كويس وان عامل الصورة في الكسس من نوع ole 
والف شكر ليك ربنا يكرمك
الرد
تم الشكر بواسطة:
#4
(04-03-20, 04:50 PM)mazentq كتب :
(04-03-20, 04:34 PM)alsalamoni كتب :
(04-03-20, 12:59 AM)mazentq كتب : السلام عليكم ورحمة الله وبركته
ان عملت برنامج بلغة الفيجوال وقاعدة بيانات اكسس والبرنامج شغال تمام خالص معايا وبيفظ كل البيانات وبيعدل عليها كمان 
بس المشكلة الوحيدة الي مش لقيلها حل ودورت كتير خالص ومفيش طريقة اشتغلت معايا هي اني عاوز اضيف مع البيانات دي صورة تتحفظ وتتخزن في قاعدة البيانات نفسها مش يحفظ المسار لا يحفظ الصورة نفسها جوه القاعدة مع البيانات ولما اعملها عرض من الداتا جريد فيو علشان اعدل عليها تظهر معايا واقدر اعدلها 
فلو سمحت الي يقدر يعدل في كود المشروع  ويضيف الكود بتاع حفظ الصورة اكون شاكر فضلة علشان والله دورت كتير ومفيش طريقة ظبطط معايا وشكرا 


دي صورة قائمة ادخال وحفظ 


ودي اكواد الحفظ 
كود :
Imports System.Data.OleDb
Imports System.Data
Imports System.Globalization
Imports System.IO
Imports System.Drawing.Image
Public Class UserControl1
   Dim con As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282")

   Private Sub UserControl1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Guna.UI.Lib.GraphicsHelper.DrawLineShadow(Me, Color.Black, 50, 20, Guna.UI.WinForms.VerHorAlign.HoriziontalTop)

   End Sub

   Private Sub GunaButton1_Click(sender As Object, e As EventArgs) Handles GunaButton1.Click
       If (String.IsNullOrEmpty(nameadd.Text)) Then
           MessageBox.Show("يجب ادخال اسم العميل قبل الحفظ", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return
       End If
       Dim str As String = ("provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282")
       Dim con As New OleDbConnection(str)
       Dim isds As New DataSet
       '==============================================================================================================
     


       Try



           Dim cmd As New OleDbCommand(str, con)
           'فتح الاتصال بمزود البيانات وهى قاعده البيانات
           Dim connectionstring As String = "provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282"
           Dim newconnection As New OleDbConnection(connectionstring)
           cmd.Connection = newconnection
           cmd.CommandType = CommandType.Text
           'اضافه المعلومات التى تكتبها الى الجدول كل سجل تكتبه بما يماثله فى الجدول
           cmd.CommandText = "insert into DBET ([pName],[Email],[Phone],[ProjectName],[ProjectType],[About],[Photo]) values ('" & _
            nameadd.Text & "','" & emailadd.Text & "','" & phoneadd.Text & _
            "','" & pnameadd.Text & "','" & ptypeadd.Text & "','" & aboutadd.Text & "','" & photoadd.ImageLocation & "') "


           'فتح الاتصال وتاكيد الاضافه وبعد ذلك اغلاق الاتصال
           newconnection.Open()
           cmd.ExecuteNonQuery()
           newconnection.Close()
       Catch ex As Exception
           MessageBox.Show(ex.Message)
       End Try

       

       'اظهار رساله للمستخدم تبين له نجاح اضافته واغلاق الاتصال واغلاق الفورم بتاع الاضافه والذهاب الى الفورم الرئيسى
       MsgBox("تمت عملية الاضافة والحفظ في قاعدة البيانات بنجاح", 64, "حفظ الاضافة")

       nameadd.Text = ""
       emailadd.Text = ""
       phoneadd.Text = ""
       pnameadd.Text = ""
       ptypeadd.Text = ""
       aboutadd.Text = ""
   End Sub
 
   Private Sub GunaButton3_Click(sender As Object, e As EventArgs) Handles GunaButton3.Click
       OpenFileDialog1.Filter = "Image Formats (*.PNG; *.JPG; *.BMP) | *.PNG; *.JPG; *.BMP | All Files (*.*) | *.*"
       'Dim OpenFileDialog1 As New OpenFileDialog
       With OpenFileDialog1
           If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then
               MsgBox("image is not choised")
               Return
           Else
               photoadd.ImageLocation = OpenFileDialog1.FileName
           End If
       End With
   End Sub
End Class


ودي صورة واجهة التعديل لما بحدد صف البيانات من داتا جريد فيو وادوس علي edit بيظهر البيانات في التكست بوك فانا عاوز يظهر معهم الصورة الي اتحفظ علشان لما اعدل 


وده كود التعديل 
كود :
Imports System.Data.OleDb
Imports System.Data
Imports System.Globalization
Public Class UserControl2
   Dim con As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282")
   Sub LoadDataToDGV()
       Dim da As New OleDbDataAdapter("select * from DBET", con)
       Dim dt As New DataTable()
       da.Fill(dt)
       DataGridView1.DataSource = dt
   End Sub
   Private Sub UserControl2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Guna.UI.Lib.GraphicsHelper.DrawLineShadow(Me, Color.Black, 50, 20, Guna.UI.WinForms.VerHorAlign.HoriziontalTop)

   End Sub

   Private Sub GunaButton4_Click(sender As Object, e As EventArgs) Handles GunaButton4.Click
       If (DataGridView1.SelectedRows.Count = 0) Then
           MessageBox.Show("يجب تحديد البيانات المراد تعديلها اولا", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return
       End If


       

       'كود جلب البيانات
       Dim indx As Integer = DataGridView1.SelectedRows(0).Index
       nameed.Text = DataGridView1(1, indx).Value.ToString()
       phoned.Text = DataGridView1(2, indx).Value.ToString()
       emailed.Text = DataGridView1(3, indx).Value.ToString()
       pnameed.Text = DataGridView1(4, indx).Value.ToString()
       ptypeed.Text = DataGridView1(5, indx).Value.ToString()
       abouted.Text = DataGridView1(6, indx).Value.ToString()
       photoed.ImageLocation = DataGridView1(7, indx).Value.ToString()
   End Sub

   Private Sub GunaButton5_Click(sender As Object, e As EventArgs) Handles GunaButton5.Click
       LoadDataToDGV()

   End Sub

   Private Sub GunaButton1_Click(sender As Object, e As EventArgs) Handles GunaButton1.Click
       If (String.IsNullOrEmpty(nameed.Text)) Then
           MessageBox.Show("يجب ادخال اسم الصنف قبل الحفظ", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return
       End If

     

       Dim id As Integer = CInt(DataGridView1(0, DataGridView1.SelectedRows(0).Index).Value.ToString())
       Dim str As String = String.Format("update DBET set  pName='{0}', Email='{1}', Phone='{2}', ProjectName='{3}', ProjectType='{4}', About='{5}', Photo='{6}'  where ID ={7}", nameed.Text, phoned.Text, emailed.Text, pnameed.Text, ptypeed.Text, abouted.Text, photoed.ImageLocation, id)
       Dim cmd As New OleDbCommand(str, con)
       con.Open()
       cmd.ExecuteNonQuery()
       con.Close()
       MessageBox.Show("تم حفظ التعديل بنجاح")
       LoadDataToDGV()
   End Sub

   Private Sub GunaButton3_Click(sender As Object, e As EventArgs) Handles GunaButton3.Click
       OpenFileDialog1.Filter = "Image Formats (*.PNG; *.JPG; *.BMP) | *.PNG; *.JPG; *.BMP | All Files (*.*) | *.*"
       'Dim OpenFileDialog1 As New OpenFileDialog
       With OpenFileDialog1
           If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then
               MsgBox("image is not choised")
               Return
           Else
               photoed.ImageLocation = OpenFileDialog1.FileName
           End If
       End With
   End Sub

   Private Sub photoed_Click(sender As Object, e As EventArgs) Handles photoed.Click

   End Sub


End Class

ملحوظة ان عارف اني الصورة لما تتحفظ بطريقة مباشرة داخل قاعدة البيانات بتاثر علي مساحة القاعدة بس ان عاوز الطريقة دي علشان البيانات الي هضيفها بعد كدة مش هتكون كتير



مثل ما اخبرتك في موضوعك السابق
تحتاج تغيير نوع حقل الصورة في الاكسس الى (كائن OLE)

قد تحتاج لان تحذف البيانات القديمة من قاعدة البيانات



كود الحفظ 
كود :
Imports System.Data.OleDb
Imports System.Data
Imports System.Globalization
Imports System.IO
Imports System.Drawing.Image
Public Class UserControl1
   Dim con As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282")

   Private Sub UserControl1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Guna.UI.Lib.GraphicsHelper.DrawLineShadow(Me, Color.Black, 50, 20, Guna.UI.WinForms.VerHorAlign.HoriziontalTop)

   End Sub

   Private Sub GunaButton1_Click(sender As Object, e As EventArgs) Handles GunaButton1.Click
       If (String.IsNullOrEmpty(nameadd.Text)) Then
           MessageBox.Show("يجب ادخال اسم العميل قبل الحفظ", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return
       End If
       '==============================================================================================================



       Try



           Dim cmd As New OleDbCommand("insert into DBET ([pName],[Email],[Phone],[ProjectName],[ProjectType],[About],[Photo]) values(@pName,@Email,@Phone,@ProjectName,@ProjectType,@About,@Photo)", con)
           cmd.Parameters.AddWithValue("@pName", nameadd.Text)
           cmd.Parameters.AddWithValue("@Email", emailadd.Text)
           cmd.Parameters.AddWithValue("@Phone", phoneadd.Text)
           cmd.Parameters.AddWithValue("@ProjectName", pnameadd.Text)
           cmd.Parameters.AddWithValue("@ProjectType", ptypeadd.Text)
           cmd.Parameters.AddWithValue("@About", aboutadd.Text)

           Dim ms = New IO.MemoryStream()
           photoadd.Image.Save(ms, photoadd.Image.RawFormat)
           Dim bytes = ms.ToArray()
           cmd.Parameters.AddWithValue("@Photo", bytes)


           'فتح الاتصال وتاكيد الاضافه وبعد ذلك اغلاق الاتصال
           con.Open()
           cmd.ExecuteNonQuery()
           con.Close()

           'اظهار رساله للمستخدم تبين له نجاح اضافته واغلاق الاتصال واغلاق الفورم بتاع الاضافه والذهاب الى الفورم الرئيسى
           MsgBox("تمت عملية الاضافة والحفظ في قاعدة البيانات بنجاح", 64, "حفظ الاضافة")

           nameadd.Text = ""
           emailadd.Text = ""
           phoneadd.Text = ""
           pnameadd.Text = ""
           ptypeadd.Text = ""
           aboutadd.Text = ""

       Catch ex As Exception
           MessageBox.Show(ex.Message)
       End Try
   End Sub


   Private Sub GunaButton3_Click(sender As Object, e As EventArgs) Handles GunaButton3.Click
       OpenFileDialog1.Filter = "Image Formats (*.PNG; *.JPG; *.BMP) | *.PNG; *.JPG; *.BMP | All Files (*.*) | *.*"
       'Dim OpenFileDialog1 As New OpenFileDialog
       With OpenFileDialog1
           If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then
               MsgBox("image is not choised")
               Return
           Else
               photoadd.Image = Image.FromFile(OpenFileDialog1.FileName)
           End If
       End With
   End Sub
End Class



كود التعديل
كود :
Imports System.Data.OleDb
Imports System.Data
Imports System.Globalization
Public Class UserControl2
   Dim con As New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\MSME.mdb;user id=admin;jet oledb:database password=343282")
   Sub LoadDataToDGV()
       Dim da As New OleDbDataAdapter("select * from DBET", con)
       Dim dt As New DataTable()
       da.Fill(dt)
       DataGridView1.DataSource = dt
   End Sub
   Private Sub UserControl2_Load(sender As Object, e As EventArgs)
       Guna.UI.Lib.GraphicsHelper.DrawLineShadow(Me, Color.Black, 50, 20, Guna.UI.WinForms.VerHorAlign.HoriziontalTop)

   End Sub

   Private Sub GunaButton4_Click(sender As Object, e As EventArgs) Handles GunaButton4.Click
       If (DataGridView1.SelectedRows.Count = 0) Then
           MessageBox.Show("يجب تحديد البيانات المراد تعديلها اولا", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return
       End If




       'كود جلب البيانات
       Dim indx As Integer = DataGridView1.SelectedRows(0).Index
       nameed.Text = DataGridView1(1, indx).Value.ToString()
       emailed.Text = DataGridView1(2, indx).Value.ToString()
       phoned.Text = DataGridView1(3, indx).Value.ToString()
       pnameed.Text = DataGridView1(4, indx).Value.ToString()
       ptypeed.Text = DataGridView1(5, indx).Value.ToString()
       abouted.Text = DataGridView1(6, indx).Value.ToString()

       Dim ms As New IO.MemoryStream(CType(DataGridView1(7, indx).Value, Byte()))
       Dim returnImage As Image = Image.FromStream(ms)
       photoed.Image = returnImage
   End Sub

   Private Sub GunaButton5_Click(sender As Object, e As EventArgs) Handles GunaButton5.Click
       LoadDataToDGV()

   End Sub

   Private Sub GunaButton1_Click(sender As Object, e As EventArgs) Handles GunaButton1.Click
       If (String.IsNullOrEmpty(nameed.Text)) Then
           MessageBox.Show("يجب ادخال اسم الصنف قبل الحفظ", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Return
       End If



       Dim id As Integer = CInt(DataGridView1(0, DataGridView1.SelectedRows(0).Index).Value.ToString())
       Dim cmd As New OleDbCommand("update DBET set  pName=@pName, Email=@Email, Phone=@Phone, ProjectName=@ProjectName, ProjectType=@ProjectType, About=@About, Photo=@Photo  where ID =@ID", con)
       cmd.Parameters.AddWithValue("@pName", nameed.Text)
       cmd.Parameters.AddWithValue("@Email", emailed.Text)
       cmd.Parameters.AddWithValue("@Phone", phoned.Text)
       cmd.Parameters.AddWithValue("@ProjectName", pnameed.Text)
       cmd.Parameters.AddWithValue("@ProjectType", ptypeed.Text)
       cmd.Parameters.AddWithValue("@About", abouted.Text)

       Dim ms = New IO.MemoryStream()
       photoed.Image.Save(ms, photoed.Image.RawFormat)
       Dim bytes = ms.ToArray()
       cmd.Parameters.AddWithValue("@Photo", bytes)

       cmd.Parameters.AddWithValue("@ID", id)

       con.Open()
       cmd.ExecuteNonQuery()
       con.Close()
       MessageBox.Show("تم حفظ التعديل بنجاح")
       LoadDataToDGV()
   End Sub

   Private Sub GunaButton3_Click(sender As Object, e As EventArgs) Handles GunaButton3.Click
       OpenFileDialog1.Filter = "Image Formats (*.PNG; *.JPG; *.BMP) | *.PNG; *.JPG; *.BMP | All Files (*.*) | *.*"
       'Dim OpenFileDialog1 As New OpenFileDialog
       With OpenFileDialog1
           If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then
               MsgBox("image is not choised")
               Return
           Else
               photoed.ImageLocation = OpenFileDialog1.FileName
           End If
       End With
   End Sub

   Private Sub photoed_Click(sender As Object, e As EventArgs) Handles photoed.Click

   End Sub


End Class

اقرا التعديلات جيدا وافهمها لتكون مستعدا لاي سؤال او مناقشة عند تقديم مشروعك مشروع التخرج كما ذكرت في الموضوع السابق

تمام هقراهم وافهمهم كويس وان عامل الصورة في الكسس من نوع ole 
والف شكر ليك ربنا يكرمك

العفو اخي

بالتوفيق
الرد
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  عمليات الاضافة والتعديل على قاعدة بيانات sql server 2012 kewely 2 19 منذ 2 ساعة مضت
آخر رد: kewely
  مساعدة بخصوص حفظ عدد داخل datagridview chankar 18 324 , 02:46 AM
آخر رد: chankar
  مساعدة بالكتابه داخل التكست بوكس eeee2 5 121 17-09-20, 12:39 AM
آخر رد: Anas Mahmoud
  مساعدة بخصوص حفظ عدد داخل datagridview chankar 0 56 16-09-20, 09:19 PM
آخر رد: chankar
  [VB.NET] مساعدة في تعديل كود ميدو الفنان 4 112 16-09-20, 06:17 PM
آخر رد: ميدو الفنان
  [VB.NET] أرجو مساعدة ..... أريد أرسال رسالة بريد إلكترونى من البرنامج بواسطة الفيجول بيسك رامى محمد 2 83 16-09-20, 03:57 PM
آخر رد: رامى محمد
  استفسار بخصوص حجم قاعدة بيانات سيكوال سيرفر momani33 0 33 16-09-20, 02:22 PM
آخر رد: momani33
  [سؤال] مساعدة من فضلكم ahmedhi6 0 46 16-09-20, 04:55 AM
آخر رد: ahmedhi6
  المساعدة في التعديل على كود تعديل البيانات في قاعدة سيكوال سيرفر momani33 3 67 15-09-20, 08:10 PM
آخر رد: Anas Mahmoud
  ربط قاعدة البيانات محمود احمد سعد 1 66 14-09-20, 03:49 PM
آخر رد: اسامه الهرماوي

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


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