تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
إضافة الصورة إلى قاعدة البيانات
#1
السّلام عليكم و رحمة الله و بركاته
أعزّائي الأكارم .. أدعو الله أن تكونوا كلّكم بتمام الصحّة و العافية وكل من تحبّون إن شاء الله
أملي بالله ثم بكم .. المساعدة في حل هذه الإشكاليّة
إتّبعت العديد من الدّروس و من الأكواد لكنّها كلها لم تعطني النتيجة المرجوّة ..
كيف يمكن إضافة الصّورة مع بقية البيانات عند الضغط على زر الأمر " الحفظ " .. و في حالة لم يتم إختيار الصّورة فسيتم إعتماد تلقائيا الصورة المخزّنة بالريسورس
بارك الله فيكم و لكم مقدّمًا و جزاكم خير الجزاء
تحياتي و احتراماتي


الملفات المرفقة
.rar   إضافة الصورة.rar (الحجم : 538.41 ك ب / التحميلات : 356)
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة: sendbad100 , sendbad100
#2
الاخ الكريم عبد العزيز البسكري,


من خلال الكود لديك , ضع هذه الدوال في النموذج لديك
PHP كود :
   Public Function FileImageBytes() As Byte()
 
       Dim ImageByte As Byte() = New Byte() {}
 
       If PictureBox1.Image Is Nothing Then
            
'فعل السطر التالي في حال احببت ان تخزن صور فارغة
            '
ImageByte = New Byte() {}
 
           PictureBox1.Image My.Resources.Nopicture
        Else
            Dim Ms 
As IO.MemoryStream = New IO.MemoryStream
            PictureBox1
.Image.Save(MsPictureBox1.Image.RawFormat)
 
           ImageByte Ms.ToArray
        End 
If

 
       Return ImageByte
    End 
Function

 
   Public Function AddDataWithImage() As Boolean
        Using cmd 
As New SqlCommand With {.Connection CON}
 
           cmd.CommandText =
 
               <SQL>
 
                   INSERT INTO STUDENT 
                    
(
 
                       ID,
 
                       FirstName
 
                       LastName
 
                       BirthDate,
 
                       Mobile,
 
                       Adresse,
 
                       Carte
                    

 
                   Values
                    
(
 
                       @ID,
 
                       @FirstName,
 
                       @LastName,
 
                       @BirthDate,
 
                       @Mobile,
 
                       @Adresse,
 
                       @Carte
                    
)
 
               </SQL>.Value


            cmd
.Parameters.AddRange(
 
               New SqlParameter() _
                
{
 
                   New SqlParameter With {.ParameterName "@ID", .DbType DbType.Int32, .Value TextBox1.Text.Trim},
 
                   New SqlParameter With {.ParameterName "@FirstName", .DbType DbType.String, .Value TextBox2.Text.Trim},
 
                   New SqlParameter With {.ParameterName "@LastName", .DbType DbType.String, .Value TextBox3.Text.Trim},
 
                   New SqlParameter With {.ParameterName "@BirthDate", .DbType DbType.Date, .Value DateTimePicker1.Value.Date},
 
                   New SqlParameter With {.ParameterName "@Mobile", .DbType DbType.String, .Value TextBox5.Text.Trim},
 
                   New SqlParameter With {.ParameterName "@Adresse", .DbType DbType.String, .Value TextBox6.Text.Trim},
 
                   New SqlParameter With {.ParameterName "@Carte", .SqlDbType SqlDbType.Image, .Value FileImageBytes()}
 
               }
 
           )

 
           Try
                Dim Affected 
As Int32 cmd.ExecuteNonQuery
                If Affected 
1 Then
                    
'هذا يعني نجاح العملية
                    Return True
                Else
                    Return False
                End If
            Catch ex As Exception
                Return False
            End Try
        End Using
    End Function 




بعد ذلك استدعي الدالة AddDataWithImage في زر الحفظ لديك

المخرجات القادمة من الدلة منطقية في حال كان True يعني تم الحفظ.

استخدمها كما يناسبك.



انا لم اطلع على القاعدة لديك و لم اجرب فقط عدلت لك في الكود.



جربه لديك و اخبرنا بالنتيجة.



ملاحظة :استخدم البارمترات بدل عناصر الادخال لتتحاشى مشكل Sql Injection , و هي الطريقة المتبعة و الموصى بها.



مرفق مثال لطريقة الادخال الى قاعدة اكسس (مثال طلبه الاخ ابو وسم في احد المشاركات و لم يسعفني الوقت للتعديل عليه)

المثال يحتوي على نفس الفكرة مع طريقة العرض و التنقل بين السجلات وعرض الصورة الموافقة للسجل.



تحياتي.


الملفات المرفقة
.rar   إضافة الصور لقاعدة اكسس.rar (الحجم : 468.13 ك ب / التحميلات : 420)
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}
تم الشكر بواسطة: عبد العزيز البسكري , sendbad100 , sendbad100 , tarek
#3
السّلام عليكم و رحمة الله و بركاته
بارك الله فيك و لك و جزاك خير الجزاء  أخي الكريم " أبو ليلى " على الشّرح الرّائع و الكود و المثال 
قرّبت لي الفكرة الله يرضى عليك لأنّي أعتقد أنّ المشكلة بكود الحفظ لديَّ .. فحين تغييره بأكواد أخرى للحفظ يتم ذلك بطريقة عادية
أخي الكريم " أبو ليلى " .. لاحظت بجزئية من الكود بعض العلامات من طريقة أكواد C#.NET
هل يمكن إستغلالها في مشاريع ال VB NET ؟

أجدّد شكري و تقديري و إحترامي لك .. سأعمل على المثال المرفق مجدّدا و أخبرك بالنتيجة إن شاء الله
إحتراماتي و تقييماتي
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة: sendbad100 , sendbad100 , ابو ليلى , tarek
#4
السلام عليكم و رحمة الله و بركاته
اي علامات تقصد ؟ , اشر اليها فضلاً ...
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}
تم الشكر بواسطة: عبد العزيز البسكري
#5
(28-03-18, 03:57 PM)ابو ليلى كتب : السلام عليكم و رحمة الله و بركاته
اي علامات تقصد ؟ , اشر اليها فضلاً ...
السّلام عليكم و رحمة الله و بركاته
تمام أخي و أستاذي الفاضل " أبو ليلى "
بارك الله فيك و لك و في " ليلى " و كل الأسرة الكريمة
العلامات أقصد الأقواس و الحاضنات مثلها مثل أكواد ال C+
بقيت لي إشكالية أخيرة أخي الغالي .. لو سمحت فضلا لا أمرا بالنظر فيها
عند إختيار الاسم من الكومبوبكس .. تظهر بيناته بما في ذلك الصورة بالتاكسات
و كذلك عند إضافة سجل جديد .. لا يمكن إستعراضه بأزرار التالي و السابق إلا بعد إغلاق الفورم و الدخول ثانية
كل الشكر و التّقدير و الإحترام
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة:
#6
ما شاء الله أخي [b]عبد العزيز البسكري[/b] 

إنتقالك إلى قواعد بيانات SQL
ومشروعك بداء يظهر بصورة جيدة

بالتوفيق وإلى الأمام .
الرد }}}
#7
(28-03-18, 09:36 PM)عبدالله الدوسري كتب : ما شاء الله أخي [b]عبد العزيز البسكري[/b] 

إنتقالك إلى قواعد بيانات SQL
ومشروعك بداء يظهر بصورة جيدة

بالتوفيق وإلى الأمام .

السّلام عليكم و رحمة الله و بركاته
بارك الله فيك و لك أخي و استاذي الكريم " عبد الله الدّوسري " على الكلمات الرائعة و التّشجيع الطيّب
جزاك الله خير الجزاء و زادها بموازين حسناتك إن شاء الله
الخير كلّه من أفضالكم أساتذتنا الأكارم علينا خاصّة و على المنتدى كلّه عامّة
أطال الله بأعماركم بمحبة الله و مرضاته
تساؤل سيّدي الكريم لو سمحت ..
قمت بتحميل فيجوال ستيديو 2015 .. لكن إكتشفت فيما بعد أنّ ببعض النّسخ الحجم متغيّر .. كبيرة الحجم و صغيرة الحجم
ما هو الفرق في زيادة الحجم بين نسخة و أخرى

إحتراماتي
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة:
#8
ضع الكود ده في اي زر تريده سيجلب لك الصورة حسب رقم الطالب
PHP كود :
           Dim DT As DataTable
            Dim ADP 
As New SqlDataAdapter("Select Carte from STUDENT where id like '" TextBox1.Text "'"CON)
 
           ADP.Fill(DT)
 
           Dim PIC_() As Byte CType(DT.Rows(DT.Rows.Count 1).Item("Carte"), Byte())
 
           Dim MS As New MemoryStream(PIC_)
 
           PictureBox1.Image Image.FromStream(MS
صلى الله على نبينا محمد
اخيكم / محمود صالح
  قال الزهري رحمه الله  
 مــا عُـــبـِد الله بشئ أفضل من العلم 
الرد }}}
تم الشكر بواسطة: عبد العزيز البسكري
#9
السلام عليكم و رحمة الله و بركاته
الاخ عبد العزيز البسكري,

لا ادري ان كنت قد فهمتك بالشكل المطلوب ؟؟
انت تريد اعادة تعبئة بيانات الطلاب في عنصر ComboBox بعد الحفظ ؟؟
الكود لديك مقلوب راساً على عقب ؟؟
عدلت فيه بعض التعديلات السريعة جربه لديك

استبدل كود النموذج بالكود التالي

PHP كود :
Imports System.Data.SqlClient
Imports System
.IO
Imports System
.Data
Imports Sunisoft
.IrisSkin
Public Class Form1
    Dim CON 
As New SqlConnection("Server=ABDELAZIZ;Database=SCHOOL;Integrated Security=false;user id=sa;password=GH987654GH;")

 
   Dim InfoCommand As SqlCommand
    Dim InfoTable 
As DataTable

    Private Sub Form1_Load
(sender As ObjectAs EventArgsHandles MyBase.Load
        
' Try
        ' 
CON.Open()
 
       InfoTable = New DataTable
        Using InfoAdapter 
As New SqlDataAdapter("select * from STUDENT"CON)
 
           InfoAdapter.Fill(InfoTable)
 
       End Using
        
'
        DataGridView1.DataSource = InfoTable

        TextBox1.DataBindings.Add("Text", InfoTable, "ID")
        TextBox2.DataBindings.Add("Text", InfoTable, "FirstName")
        TextBox3.DataBindings.Add("Text", InfoTable, "LastName")
        DateTimePicker1.DataBindings.Add("Text", InfoTable, "BirthDate")
        TextBox5.DataBindings.Add("Text", InfoTable, "Mobile")
        TextBox6.DataBindings.Add("Text", InfoTable, "Adresse")

        PictureBox1.DataBindings.Add("Image", InfoTable, "Carte", True,
  Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)

        DataGridView1.Columns(0).HeaderText = "الترقيم"
        DataGridView1.Columns(1).HeaderText = "الاسم"
        DataGridView1.Columns(2).HeaderText = "اللقب"
        DataGridView1.Columns(3).HeaderText = "تاريخ الميلاد"
        DataGridView1.Columns(3).DefaultCellStyle.Format = "yyyy-MM-dd"
        DataGridView1.Columns(4).HeaderText = "هاتف الولي"
        DataGridView1.Columns(5).HeaderText = "العنوان"
        DataGridView1.Columns(6).HeaderText = "الصورة"

        DataGridView1.RowHeadersWidth = 30
        DataGridView1.Columns(0).Width = 70
        DataGridView1.Columns(1).Width = 200
        DataGridView1.Columns(2).Width = 200
        DataGridView1.Columns(3).Width = 150
        DataGridView1.Columns(4).Width = 150
        DataGridView1.Columns(5).Width = 150

        DataGridView1.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        DataGridView1.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        DataGridView1.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        DataGridView1.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        DataGridView1.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        DataGridView1.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

        With Me.DataGridView1
            DataGridView1.RowsDefaultCellStyle.BackColor = Color.Aquamarine
            .AlternatingRowsDefaultCellStyle.BackColor = Color.White
            .RowsDefaultCellStyle.SelectionBackColor = Color.WhiteSmoke
            .RowsDefaultCellStyle.SelectionForeColor = Color.Red
            .AlternatingRowsDefaultCellStyle.SelectionBackColor = Color.WhiteSmoke
            .ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
            DataGridView1.Font = New Font("Arial", 10, FontStyle.Bold)
        End With

        record()
        ShowRelated()


        Button2.Enabled = False
        Button5.Enabled = False
        Button13.Enabled = False
        '
إضافة السكاين
        Dim skn 
As New Sunisoft.IrisSkin.SkinEngine
        skn
.SerialNumber "kUb2DF5pvGF3X9dKPFvIdkXQ0sE8LkAVp9fMme9wCnjZ+ArdRVlxKw=="
 
       skn.SkinFile Application.StartupPath "\SILVER.ssk"
 
       skn.AddForm(Me)
 
       'تعبئة الكومبوبوكس
        PopulateComboBox(InfoTable)
    End Sub

    '
تعبئة الكومبوبوكس
    Private Sub PopulateComboBox
(Dt As DataTable)
 
       ComboBox1.DataSource Dt
        ComboBox1
.DisplayMember "FirstName"
 
       ComboBox1.ValueMember "ID"
 
   End Sub

    Private Sub record
()
 
       TextBox7.Text DataGridView1.Rows.Count() - 1
    End Sub
    Public Sub ShowRelated
()
 
       Try
            If Me
.BindingContext(InfoTable).Position = -1 Then
                TextBox8
.Text "التّلميذ رقم 0 من 0"
 
           Else
                TextBox8
.Text "التّلميذ المسجّل رقم :" Me.BindingContext(InfoTable).Position &
 
               "  من  " Me.BindingContext(InfoTable).Count
            End 
If
 
       Catch ex As Exception
        End 
Try
 
   End Sub
    Private Sub Button1_Click
(sender As ObjectAs EventArgsHandles Button1.Click
        If MsgBox
("هل تريد إضافة سجل جديد ؟ "MsgBoxStyle.Exclamation MsgBoxStyle.MsgBoxRight MsgBoxStyle.OkCancel"إضافة سجل جديد") = MsgBoxResult.Cancel Then Exit Sub

        Using Command 
As New SqlCommand("SELECT max(ID) From STUDENT"CON)
 
           If CON.State ConnectionState.Closed Then CON.Open()
 
           If Command.ExecuteScalar Is DBNull.Value Then
                TextBox1
.Text 1
                clear_Text
()
 
               TextBox2.Focus()
 
               Button1.Enabled False
                Button2
.Enabled True
                Button3
.Enabled False
                Button4
.Enabled False
                Button5
.Enabled True
                Button6
.Enabled False
                PictureBox1
.Image My.Resources.Nopicture
            Else
                TextBox1
.Text Command.ExecuteScalar().ToString() + 1
                clear_Text
()
 
               TextBox2.Focus()
 
               Button1.Enabled False
                Button2
.Enabled True
                Button3
.Enabled False
                Button4
.Enabled False
                Button5
.Enabled True
                Button6
.Enabled False
                PictureBox1
.Image My.Resources.Nopicture
            End 
If
 
           CON.Close()
 
       End Using
    End Sub
    Private Sub clear_Text
()
 
       TextBox2.Text ""
 
       TextBox3.Text ""
 
       TextBox5.Text ""
 
       TextBox6.Text ""
 
   End Sub
    Private Sub Button2_Click
(sender As ObjectAs EventArgsHandles Button2.Click
        If TextBox1
.Text.Trim "" Then
            ErrorProvider1
.SetError(TextBox1"الرجاء عدم ترك حقل رقم المتمدرس فارغا")
 
           MessageBox.Show("الرجاء عدم ترك حقل رقم المتمدرس فارغا""إدخال خاطىء"MessageBoxButtons.OKMessageBoxIcon.Information)
 
           TextBox1.Focus()
 
           Exit Sub
        End 
If
 
       If TextBox2.Text.Trim "" Then
            ErrorProvider1
.SetError(TextBox2"الرجاء عدم ترك حقل اسم المتمدرس فارغا")
 
           MessageBox.Show("الرجاء عدم ترك حقل اسم المتمدرس فارغا""إدخال خاطىء"MessageBoxButtons.OKMessageBoxIcon.Information)
 
           TextBox2.Focus()
 
           Exit Sub
        End 
If
 
       If TextBox3.Text.Trim "" Then
            ErrorProvider1
.SetError(TextBox3"الرجاء عدم ترك حقل لقب المتمدرس فارغا")
 
           MessageBox.Show("الرجاء عدم ترك حقل لقب المتمدرس فارغا""إدخال خاطىء"MessageBoxButtons.OKMessageBoxIcon.Information)
 
           TextBox3.Focus()
 
           Exit Sub
        End 
If
 
       If TextBox5.Text.Trim "" Then
            ErrorProvider1
.SetError(TextBox5"الرجاء عدم ترك حقل هاتف و لي أمر المتمدرس فارغا")
 
           MessageBox.Show("الرجاء عدم ترك حقل هاتف و لي أمر المتمدرس فارغا""إدخال خاطىء"MessageBoxButtons.OKMessageBoxIcon.Information)
 
           TextBox5.Focus()
 
           Exit Sub
        End 
If
 
       If TextBox6.Text.Trim "" Then
            ErrorProvider1
.SetError(TextBox6"الرجاء عدم ترك حقل عنوان المتمدرس فارغا")
 
           MessageBox.Show("الرجاء عدم ترك حقل عنوان المتمدرس فارغا""إدخال خاطىء"MessageBoxButtons.OKMessageBoxIcon.Information)
 
           TextBox6.Focus()
 
       ElseIf MsgBox("هل تريد حفظ السجل الحالي"MsgBoxStyle.Information MsgBoxStyle.YesNo"تأكيد الحفظ") = MsgBoxResult.No Then
            Exit Sub
        ElseIf TextBox1
.Text "" Then
            MsgBox
("الرجاء كتابة الرقم التسلسلي"MsgBoxStyle.MsgBoxRtlReading"تنبيه")
 
       End If
 
       'التأكّد قبل الحفظ
        Dim Checknum As String = ""
        Using Check As New SqlCommand With {.Connection = CON, .CommandText = "select ID from STUDENT where ID  = @ID "}
            Check.Parameters.Add("@ID", SqlDbType.Int).Value = Convert.ToInt32(TextBox1.Text.Trim)
            If CON.State = ConnectionState.Closed Then CON.Open()
            Checknum = Check.ExecuteScalar
            CON.Close()
        End Using
        If Checknum <> "" Then
            MsgBox("عفوًا .. هذا التّلميذ سبق تسجيله في النّظام و لا يمكن تكرار تسجيله بنفس رقم القيد ", MsgBoxStyle.Critical + MsgBoxStyle.MsgBoxRight, " خطأ في التسجيل ")
            Exit Sub
        Else
            Using Command As New SqlCommand With {.Connection = CON}
                With Command
                    .CommandText = "INSERT INTO STUDENT(ID,FirstName,LastName,BirthDate,Mobile,Adresse,Carte)values(@ID,@FirstName,@LastName,@BirthDate,@Mobile,@Adresse,@Carte)"
                    .Parameters.Add("@ID", SqlDbType.Int).Value = TextBox1.Text
                    .Parameters.Add("@FIRSTNAME", SqlDbType.NVarChar).Value = TextBox2.Text
                    .Parameters.Add("@LASTNAME", SqlDbType.NVarChar).Value = TextBox3.Text
                    .Parameters.Add("@BIRTHDATE", SqlDbType.NVarChar).Value = DateTimePicker1.Value.ToString("yyyy/MM/dd")
                    .Parameters.Add("@MOBILE", SqlDbType.NVarChar).Value = TextBox5.Text
                    .Parameters.Add("@ADRESSE", SqlDbType.NVarChar).Value = TextBox6.Text
                    Dim ms As New MemoryStream
                    PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
                    .Parameters.Add("@Carte", SqlDbType.Image).Value = ms.ToArray()
                End With
                If CON.State = ConnectionState.Closed Then CON.Open()
                If Command.ExecuteNonQuery() = 1 Then
                    MsgBox("تمت عملية الإضافة بنجاح", MsgBoxStyle.MsgBoxRtlReading, "تنفيذ إجراء الإضافة")
                    RE_DATE()
                    record()
                    ShowRelated()
                Else
                    MsgBox("تأكد من إدخال جميع البيانات وبالصورة الصحيحة", MsgBoxStyle.MsgBoxRtlReading, "إدخال خاطئ أو غير مكتمل")
                End If
                CON.Close()
            End Using
        End If
        Button1.Enabled = True
        Button2.Enabled = False
        Button3.Enabled = True
        Button4.Enabled = False
        Button5.Enabled = True
        Button6.Enabled = True
    End Sub
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        If MsgBox("  هل أنت متأكّد من أنك تريد تعديل بيانات هذا النّلميذ :  " & TextBox2.Text & " " & TextBox3.Text & " ؟ ", MsgBoxStyle.YesNo + MsgBoxStyle.Critical, "تحذير") = MsgBoxResult.No Then
            Exit Sub
        Else
            Button1.Enabled = False
            Button2.Enabled = False
            Button3.Enabled = False
            Button4.Enabled = False
            Button13.Enabled = True
            Button5.Enabled = True
            Button6.Enabled = True
        End If
    End Sub
    Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click
        If TextBox1.Text = "" Then
            MsgBox("الرجاء كتابة الرقم التسلسلي", MsgBoxStyle.MsgBoxRtlReading, "تنبيه")
        Else
            Using Command As New SqlCommand
                With Command
                    .CommandText = "UPDATE STUDENT SET FIRSTNAME= @FIRSTNAME ,LASTNAME= @LASTNAME,BIRTHDATE= @BIRTHDATE,MOBILE= @MOBILE,ADRESSE= @ADRESSE,Carte=@Carte where ID = @ID"
                    .Connection = CON
                    .Parameters.Add("@ID", SqlDbType.Int).Value = TextBox1.Text
                    .Parameters.Add("@FIRSTNAME", SqlDbType.NVarChar).Value = TextBox2.Text
                    .Parameters.Add("@LASTNAME", SqlDbType.NVarChar).Value = TextBox3.Text
                    .Parameters.Add("@BIRTHDATE", SqlDbType.NVarChar).Value = DateTimePicker1.Value.ToString("yyyy/MM/dd")
                    .Parameters.Add("@MOBILE", SqlDbType.NVarChar).Value = TextBox5.Text
                    .Parameters.Add("@ADRESSE", SqlDbType.NVarChar).Value = TextBox6.Text
                    Dim ms As New MemoryStream
                    PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
                    .Parameters.Add("@Carte", SqlDbType.Image).Value = ms.ToArray()

                    If CON.State = ConnectionState.Closed Then CON.Open()
                    If Command.ExecuteNonQuery() = 1 Then
                        MsgBox("تمت عملية التعديل بنجاح", MsgBoxStyle.MsgBoxRtlReading, "تنفيذ اجراء التعديل")
                        RE_DATE()
                    Else
                        MsgBox("لم تتم عملية التعديل بنجاح", MsgBoxStyle.MsgBoxRtlReading, "تنفيذ اجراء التعديل")
                    End If
                    CON.Close()
                End With
            End Using
            Button1.Enabled = True
            Button2.Enabled = True
            Button3.Enabled = True
            Button4.Enabled = True
            Button13.Enabled = False
            Button5.Enabled = False
            Button6.Enabled = True
        End If
    End Sub
    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        Using Commandcheck As New SqlCommand("SELECT max(ID) From STUDENT", CON)
            If CON.State = ConnectionState.Closed Then CON.Open()
            If Commandcheck.ExecuteScalar Is DBNull.Value Then
                MsgBox("قاعدة البيانات فارغة .. لا توجد بيانات لتنفيذ الأمر ")
                CON.Close()
                Exit Sub
            End If
        End Using

        If MsgBox("  هل أنت متأكّد من أنك تريد حذف بيانات هذا النّلميذ :  " & TextBox2.Text & " " & TextBox3.Text & " ؟ ", MsgBoxStyle.YesNo + MsgBoxStyle.Critical, "تحذير") = MsgBoxResult.No Then
            Exit Sub
        ElseIf TextBox1.Text = "" Then
            MsgBox("الرجاء كتابة الرقم التسلسلي", MsgBoxStyle.MsgBoxRtlReading, "تنبيه")
        Else

            Using Command As New SqlCommand("DELETE FROM STUDENT where ID = @ID", CON)
                Command.Parameters.Add("@ID", SqlDbType.Int).Value = TextBox1.Text
                If CON.State = ConnectionState.Closed Then CON.Open()
                If Command.ExecuteNonQuery() = 1 Then
                    MsgBox("تمت عملية الحذف بنجاح", MsgBoxStyle.MsgBoxRtlReading, "تنفيذ اجراء الحذف")
                    RE_DATE()
                    record()
                Else
                    MsgBox("لم تتم عملية الحذف بنجاح", MsgBoxStyle.MsgBoxRtlReading, "تنفيذ اجراء الحذف")
                End If
                CON.Close()
            End Using
        End If
    End Sub
    Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
        Me.BindingContext(InfoTable).Position -= 1
        ShowRelated()
    End Sub
    Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
        If Me.BindingContext(InfoTable).Position = 0 Then
            MsgBox("!!! لقد وصلت إلى السجل الأول")
        Else
            Me.BindingContext(InfoTable).Position = 0
            ShowRelated()
        End If
    End Sub
    Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click
        Me.BindingContext(InfoTable).Position += 1
        ShowRelated()
    End Sub
    Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click
        If (Me.BindingContext(InfoTable).Position = Me.BindingContext(InfoTable).Count - 1) Then
            MsgBox(" !!! لقد وصلت إلى السجل الأخير")
        Else
            Me.BindingContext(InfoTable).Position = Me.BindingContext(InfoTable).Count - 1
            ShowRelated()
        End If
    End Sub
    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
        Button1.Enabled = True
        Button2.Enabled = False
        Button3.Enabled = True
        Button4.Enabled = True
        Button5.Enabled = False
        Button13.Enabled = False
        Button6.Enabled = True
        Button7_Click(sender, e)
    End Sub
    Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click
        Try
            If Button1.Enabled = False Then
            ElseIf TextBox2.Text = "" Then
                MsgBox("فضلاً قم بعرض البيانات أولاً")
                Exit Sub
            End If
            Dim opn As New OpenFileDialog
            opn.Title = "إختر الصّورة لو سمحت "
            opn.Filter = "الصور|*.jpg;*.jpeg;*.png;*.gif"
            opn.Multiselect = False
            If opn.ShowDialog() = DialogResult.OK Then
                PictureBox1.Image = Image.FromFile(opn.FileName)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "خطأ فى تحميل الصورة", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub
    Private Sub form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
        e.Cancel = True
    End Sub

    '
اجراء اعادة التعبئة
    Private Sub RE_DATE
()
 
       Using ADP As New SqlDataAdapter("select * from STUDENT"CON)
 
           Dim Dt As New DataTable
            ADP
.Fill(Dt)
 
           DataGridView1.DataSource Dt
            PopulateComboBox
(Dt)
 
       End Using
    End Sub
    Public 
Function SELECT_DT(ByVal TXT_ As String) As DataTable
        
'تحديث البيانات
        Dim DT As New DataTable
        DT.Clear()
        Dim ADP As New SqlDataAdapter(TXT_, CON)
        ADP.Fill(DT)
        Return DT
    End Function
    Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView1.SelectionChanged
    End Sub


    Private Sub showphoto()
        If DataGridView1.CurrentRow.DataBoundItem IsNot Nothing Then
            Dim Row As DataRow = CType(DataGridView1.CurrentRow.DataBoundItem, DataRowView).Row
            Dim Imagee As Byte() = DirectCast(Row.Item(6), Byte())
            If Imagee.Length > 0 Then
                Using Ms As IO.MemoryStream = New IO.MemoryStream(Imagee)
                    PictureBox1.Image = Image.FromStream(Ms)
                    Imagee = Nothing
                End Using
            End If
        Else
            PictureBox1.Image = My.Resources.Nopicture
        End If
    End Sub
    Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
        If MsgBox("هل تريد الخروج من البرنامج", MsgBoxStyle.YesNo + MsgBoxStyle.Critical, "تنبيه") = MsgBoxResult.No Then
            Exit Sub
        Else
            Me.Dispose()
        End If
    End Sub

    Private Sub DataGridView1_CurrentCellChanged(sender As Object, e As EventArgs) Handles DataGridView1.CurrentCellChanged
        If DataGridView1.RowCount > 0 Then
            If DataGridView1.CurrentRow IsNot Nothing Then
                Dim r As DataGridViewRow = Me.DataGridView1.CurrentRow
                TextBox1.Text = r.Cells(0).Value.ToString
                TextBox2.Text = r.Cells(1).Value.ToString
                TextBox3.Text = r.Cells(2).Value.ToString
                TextBox5.Text = r.Cells(4).Value.ToString
                TextBox6.Text = r.Cells(5).Value.ToString
                showphoto()
                ShowRelated()

            End If
        End If

    End Sub
End Class 

بالنسبة لسؤالك عن الاقواس المستخدمة مع With فهي لدمج مجموع خصائص في مجموعة واحدة بدل الدخول في عبارة
With..........End With
تعطي وصول سريع لخصائص الكائن و ضبط قيمه اثناء التصريح عنه.

ليست كل الخصائص متاحة مع هذا الشكل لكن الاشيع استخداماً تكون متوفرة مع هذه العبارة.
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}
#10
السّلام عليكم و رحمة الله و بركاته
أخي الغالي " محمود صالح "
أشكرك جزيل الشكر على الدّعم الذي طالما تقدّمه لنا .. ربّنا يبارك فيك و في صالح أعمالك إن شاء الله
لمسة قيّمة و إضافة مميّزة .. جزاك الله خير الجزاء و زادك من علمه و فضله
تحياتي و تقييماتي
أخي الفاضل " أبو ليلى "
مهما عبّرت لك عن شكري وامتناني لجميل أعمالك لن أفيك حقّك بكل صدق
الأكواد مقلوبة رأسا على عقب فعلاً .. لا تلمني
نصفها من القدس .. و جزء من نابلس .. و البعض من طرابلس
مع لمساتك السحريّة
الحمد لله .. أصبحت منظّمة بشكل رائع و مختصر خاصّة فيما يتعلّق بجمل الإتّصال
بارك الله فيك .. لأنّ أكثر ما يرهق أعصابي هي جمل الإتّصال
أفتحها من هنا .. تخبرني رسائل الأخطاء أنّها مغلقة من هناك
أغلقها من هنا .. تخبرني رسائل الأخطاء أنّها مفتوحة من هناك
جرّبت الكود الشّامل الذي تكرّمت به و هو يعمل بشكل ممتاز
أجدّد شكري و تقديري و احترامي وامتناني لشخصك الكريم
تحياتي و تقيياتي
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة: محمود صالح



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


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