30-06-18, 03:29 AM (آخر تعديل لهذه المشاركة : 30-06-18, 08:55 AM {2} بواسطة سعود.)
PHP كود :
Imports System.IO
Public Class Form1 Dim str As String = "provider=microsoft.ace.oledb.12.0;data source=db.accdb" Dim con As OleDb.OleDbConnection Dim da As OleDb.OleDbDataAdapter Dim cm As OleDb.OleDbCommandBuilder Dim dt As DataTable Dim ms As MemoryStream = Nothing Private Sub gd(Optional ByVal p As Integer = Nothing) For Each h As Control In Me.Controls h.DataBindings.Clear() Next con = New OleDb.OleDbConnection(str) da = New OleDb.OleDbDataAdapter("select * from tb", con) cm = New OleDb.OleDbCommandBuilder(da) dt = New DataTable da.Fill(dt) tname.DataBindings.Add("text", dt, "tname") dob.DataBindings.Add("text", dt, "dob", True) pic.DataBindings.Add("image", dt, "pic", True) If IsNothing(p) Then BindingContext(dt).Position = 0 Else BindingContext(dt).Position = p End If End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load gd() End Sub
Private Sub Btn_Add_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Add.Click Dim row As DataRow = dt.NewRow row(1) = tname.Text row(2) = CDate(dob.Text).ToShortDateString If IsNothing(ms) = False Then row(3) = ms.ToArray End If dt.Rows.Add(row) da.Update(dt) ms = Nothing
gd()
BindingContext(dt).Position = dt.Rows.Count - 1 End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try Dim i As Integer = BindingContext(dt).Position Dim row As DataRow = dt.Rows(BindingContext(dt).Position) row.BeginEdit() row(1) = tname.Text row(2) = CDate(dob.Text).ToShortDateString If IsNothing(ms) = False Then row(3) = ms.ToArray End If row.EndEdit() da.Update(dt) ms = Nothing
gd(i) Catch ex As Exception End Try
End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click dt.Rows(BindingContext(dt).Position).Delete() da.Update(dt) gd() Me.Refresh() End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click For r As Integer = 0 To dt.Rows.Count - 1 Dim tn As String = dt(r)("tname").ToString Dim d As Date = dt(r)("dob") If tn = tname.Text Or d = CDate(dob.Text).ToShortDateString Then BindingContext(dt).Position = r End If Next End Sub Private Sub pic_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pic.Click Dim o As New OpenFileDialog If o.ShowDialog = Windows.Forms.DialogResult.OK Then pic.Image = Image.FromFile(o.FileName) ms = New MemoryStream pic.Image.Save(ms, pic.Image.RawFormat) End If End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click BindingContext(dt).Position = 0 End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click BindingContext(dt).Position = BindingContext(dt).Count - 1 End Sub Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click BindingContext(dt).Position -= 1 End Sub Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click BindingContext(dt).Position += 1 End Sub Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click gd() End Sub End Class
ما رايك بهذا المثال حيث يتم تعريف ميموري ستريم عمومي ويتم التعامل معه فقط عند اضافة صورة عبر حدث Click الخاص بمربع الصورة نفسها.
المشروع
Public Class Form1 Dim str As String = "provider=microsoft.ace.oledb.12.0;data source=db.accdb" Dim con As OleDb.OleDbConnection Dim da As OleDb.OleDbDataAdapter Dim cm As OleDb.OleDbCommandBuilder Dim dt As DataTable Dim ms As MemoryStream = Nothing Private Sub gd(Optional ByVal p As Integer = Nothing) For Each h As Control In Me.Controls h.DataBindings.Clear() Next con = New OleDb.OleDbConnection(str) da = New OleDb.OleDbDataAdapter("select * from tb", con) cm = New OleDb.OleDbCommandBuilder(da) dt = New DataTable da.Fill(dt) tname.DataBindings.Add("text", dt, "tname") dob.DataBindings.Add("text", dt, "dob", True) pic.DataBindings.Add("image", dt, "pic", True) If IsNothing(p) Then BindingContext(dt).Position = 0 Else BindingContext(dt).Position = p End If End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load gd() End Sub
Private Sub Btn_Add_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Add.Click Dim row As DataRow = dt.NewRow row(1) = tname.Text row(2) = CDate(dob.Text).ToShortDateString If IsNothing(ms) = False Then row(3) = ms.ToArray End If dt.Rows.Add(row) da.Update(dt) ms = Nothing
gd()
BindingContext(dt).Position = dt.Rows.Count - 1 End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try Dim i As Integer = BindingContext(dt).Position Dim row As DataRow = dt.Rows(BindingContext(dt).Position) row.BeginEdit() row(1) = tname.Text row(2) = CDate(dob.Text).ToShortDateString If IsNothing(ms) = False Then row(3) = ms.ToArray End If row.EndEdit() da.Update(dt) ms = Nothing
gd(i) Catch ex As Exception End Try
End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click dt.Rows(BindingContext(dt).Position).Delete() da.Update(dt) gd() Me.Refresh() End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click For r As Integer = 0 To dt.Rows.Count - 1 Dim tn As String = dt(r)("tname").ToString Dim d As Date = dt(r)("dob") If tn = tname.Text Or d = CDate(dob.Text).ToShortDateString Then BindingContext(dt).Position = r End If Next End Sub Private Sub pic_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pic.Click Dim o As New OpenFileDialog If o.ShowDialog = Windows.Forms.DialogResult.OK Then pic.Image = Image.FromFile(o.FileName) ms = New MemoryStream pic.Image.Save(ms, pic.Image.RawFormat) End If End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click BindingContext(dt).Position = 0 End Sub Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click BindingContext(dt).Position = BindingContext(dt).Count - 1 End Sub Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click BindingContext(dt).Position -= 1 End Sub Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click BindingContext(dt).Position += 1 End Sub Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click gd() End Sub End Class
ما رايك بهذا المثال حيث يتم تعريف ميموري ستريم عمومي ويتم التعامل معه فقط عند اضافة صورة عبر حدث Click الخاص بمربع الصورة نفسها.
المشروع
مثال أكثر من رائع أخ سعود بارك الله فيك
هذا النموذج يعالج خطأ حفظ الصورة بطريقة جدا ذكية بالإضافة لما فيه من إضافات أخرى جميلة
زادك الله علم ومعرفة يا غالي ويعطيك الف عافيه
30-06-18, 04:44 PM (آخر تعديل لهذه المشاركة : 30-06-18, 04:52 PM {2} بواسطة ZaerAllail.)
(30-06-18, 03:38 PM)سعود كتب :
إقتباس :هذا النموذج يعالج خطأ حفظ الصورة بطريقة جدا ذكية
هل افهم من هذا انك وجدت الحل؟
بكل تأكيد هو أجمل الحلول بلا شك
إضافة لأنه يلغي خيار إضافة الصورة ويجعله مرتبط بحدث كليك للصورة نفسها
فقط تضاف خلفيه للصورة بصورة توضح عبارة أضف صورة أو من هذا القبيل ويصبح أجمل وهذا حل ذكي !
30-06-18, 05:52 PM (آخر تعديل لهذه المشاركة : 30-06-18, 05:52 PM {2} بواسطة ZaerAllail.)
(30-06-18, 05:47 PM)سعود كتب :
الأمثلة المضافة لهذا الموضوع ستضيف للكثير إضافات متنوعه
من الحفظ والتعديل وطرق البحث والسابق والتالي والأول والأخير والصور وطرق مختلفة للتعامل مع قاعدة البيانات والتحكم بها وعرضها وغيرها وهذا هو الجميل
شكرا لك ولكل من زادنا بإضافة في هذا الموضوع أخ سعود بارك الله فيك !