طلب مساعدة في حفظ الصورة في قاعدة بيانات اكسس - mazentq - 04-03-20
السلام عليكم ورحمة الله وبركته
ان عملت برنامج بلغة الفيجوال وقاعدة بيانات اكسس والبرنامج شغال تمام خالص معايا وبيفظ كل البيانات وبيعدل عليها كمان
بس المشكلة الوحيدة الي مش لقيلها حل ودورت كتير خالص ومفيش طريقة اشتغلت معايا هي اني عاوز اضيف مع البيانات دي صورة تتحفظ وتتخزن في قاعدة البيانات نفسها مش يحفظ المسار لا يحفظ الصورة نفسها جوه القاعدة مع البيانات ولما اعملها عرض من الداتا جريد فيو علشان اعدل عليها تظهر معايا واقدر اعدلها
فلو سمحت الي يقدر يعدل في كود المشروع ويضيف الكود بتاع حفظ الصورة اكون شاكر فضلة علشان والله دورت كتير ومفيش طريقة ظبطط معايا وشكرا
دي صورة قائمة ادخال وحفظ
ودي اكواد الحفظ
كود :
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
ملحوظة ان عارف اني الصورة لما تتحفظ بطريقة مباشرة داخل قاعدة البيانات بتاثر علي مساحة القاعدة بس ان عاوز الطريقة دي علشان البيانات الي هضيفها بعد كدة مش هتكون كتير
RE: طلب مساعدة في حفظ الصورة في قاعدة بيانات اكسس - alsalamoni - 04-03-20
(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
اقرا التعديلات جيدا وافهمها لتكون مستعدا لاي سؤال او مناقشة عند تقديم مشروعك مشروع التخرج كما ذكرت في الموضوع السابق
RE: طلب مساعدة في حفظ الصورة في قاعدة بيانات اكسس - mazentq - 04-03-20
(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
والف شكر ليك ربنا يكرمك
RE: طلب مساعدة في حفظ الصورة في قاعدة بيانات اكسس - alsalamoni - 04-03-20
(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
والف شكر ليك ربنا يكرمك
العفو اخي
بالتوفيق
|