تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] رسالة خطأ ومشكلة Attempted to read or write protected memory. This is often an indica
#1
Photo 
السلام عليكم
الاخوة الاعضاء عندي مشكلة في برنامج عملته بالفيجوال ستوديو 2010 مع قاعدة بيانات اكسس 2010
في واحد من الفورمات يتطلب مني وضع صورة لليتيم اضافة الى تكست بوكسات للبيانات ، فعند اضافة رقم العائلة في التكست بوكس المخصص لذلك يقوم الفورم بتحميل البيانات في الداتا كرد فيو والتي تتضمن جميع الايتام بناء على رقم العائلة ، الى هنا لا مشكلة ولكن المشكلة تحدث عندما اقوم بتحميل الصورة تظهر لي رسالة الخطأ Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

اما اذا قمت بتحميل الصورة اولا قبل البدء بوضع البيانات فلا لا يحدث هذا الخطأ

وكذلك يحدث الخطأ نفسه عندما اختار اي يتيم في الداتا كرد فيو ومحاولة تحميل الصورة مرة اخرى لغرض التعديل او استبدال الصورة ..
حاولت ان اعالج الموضوع من خلال 
tools/options/debugging//general/
ثم الغاء علامة الصح من المربع suppress JIT optimization on module load
ولم تنفع المحاولة

اما في حالة تغيير ال CPU Target الى النظام 64 فلا يتم تحميل البيانات اصلا في الداتا كرد فيو

وفي ادناه الكود كاملا

لكم كل الود والاحترام

ملاحظة : الخطأ يظهر في العبارة 
 If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then

يرجى ممن لديه حل ان يراسلني على ايميلي اضافة الى وضع الجواب هنا ليستفاد منه الجميع riya_falcon@hotmail.com


PHP كود :
Imports System.Data.OleDb
Imports System
.IO

Public Class fam3
    Dim dt 
As New DataTable
    Dim da 
As New OleDbDataAdapter
    Dim pathcopy 
As String
    Dim picname 
As String
    Dim pathpast 
As String
    Dim save 
As OleDbCommandBuilder
    Public Sub cleardata
()

 
       TextBox2.Text ""
 
       TextBox3.Text ""
 
       TextBox4.Text ""
 
       TextBox5.Text ""
 
       ComboBox1.Text ""
 
       ComboBox2.Text ""
 
       PictureBox1.Image Nothing

        TextBox2
.Enabled False
        TextBox3
.Enabled False
        ComboBox1
.Enabled False
        ComboBox2
.Enabled False
        TextBox4
.Enabled False
        DateTimePicker1
.Enabled False
        Button3
.Enabled False
        shart
()
 
   End Sub
    Public Sub changedt
()
 
       DateTimePicker2.Value DateTimePicker1.Value.AddYears(15)
 
       If DateTimePicker2.Value Date.Today Then
            MsgBox
("عمر اليتيم تجاوز سن الخامسة عشر سنة", , "تنبيه اداري")
 
           Return
        End 
If
 
   End Sub
    Public Sub load_faml
()
 
       Try

            Dim dt3 
As New DataTable
            Dim da3 
As New OleDbDataAdapter
            dt3
.Clear()
 
           da3 = New OleDbDataAdapter("SELECT na , birth , gender , id_num , graduate , notes , ageend , img , famid FROM family "con)
 
           da3.Fill(dt3)

 
           DataGridView2.DataSource dt3

            
'=====================================

            For i As Integer = 0 To Me.DataGridView2.RowCount - 1
                If Me.DataGridView2(7, i).Value < Date.Now Then
                    Me.DataGridView2.Rows(i).DefaultCellStyle.BackColor = Color.Red
               
                End If
            Next
            DataGridView2.Columns(0).HeaderText = "اليتيم"
            DataGridView2.Columns(1).HeaderText = "التولد"
            DataGridView2.Columns(2).HeaderText = "الجنس"
            DataGridView2.Columns(3).HeaderText = "رقم الجنسية"
            DataGridView2.Columns(4).HeaderText = "الدراسة"
            DataGridView2.Columns(5).HeaderText = "الملاحظات"
            DataGridView2.Columns(6).HeaderText = "تاريخ البلوغ"
            DataGridView2.Columns(7).HeaderText = "مسار الصورة"
            DataGridView2.Columns(8).HeaderText = "رقم العائلة"


        Catch ex As Exception

        End Try
    End Sub
    Public Sub load_faml2()
        Try

            Dim dt3 As New DataTable
            Dim da3 As New OleDbDataAdapter
            dt3.Clear()
            da3 = New OleDbDataAdapter("SELECT na , birth , gender , id_num , graduate , notes , ageend , img , famid FROM family where famid = " & TextBox5.Text & " ", con)
            da3.Fill(dt3)

            DataGridView2.DataSource = dt3

            '
=====================================

 
           For i As Integer 0 To Me.DataGridView2.RowCount 1
                If Me
.DataGridView2(7i).Value Date.Now Then
                    Me
.DataGridView2.Rows(i).DefaultCellStyle.BackColor Color.Red

                End 
If
 
           Next
            DataGridView2
.Columns(0).HeaderText "اليتيم"
 
           DataGridView2.Columns(1).HeaderText "التولد"
 
           DataGridView2.Columns(2).HeaderText "الجنس"
 
           DataGridView2.Columns(3).HeaderText "رقم الجنسية"
 
           DataGridView2.Columns(4).HeaderText "الدراسة"
 
           DataGridView2.Columns(5).HeaderText "الملاحظات"
 
           DataGridView2.Columns(6).HeaderText "تاريخ البلوغ"
 
           DataGridView2.Columns(7).HeaderText "مسار الصورة"
 
           DataGridView2.Columns(8).HeaderText "رقم العائلة"


 
       Catch ex As Exception

        End 
Try
 
   End Sub
    Public Sub shart
()
 
       If TextBox5.Text Nothing Or TextBox2.Text Nothing Or ComboBox1.Text Nothing Or ComboBox2.Text Nothing Or TextBox3.Text Nothing Then
            Button3
.Enabled False
        Else
            Button3
.Enabled True



        End 
If

 
   End Sub
    Private Sub fam3_Load
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load
        load_faml
()
 
   End Sub
   
    Private Sub Button1_Click
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click
        Try
            OpenFileDialog1
.Filter "jpg|*.jpg|bmp|*.bmp"
 
           If OpenFileDialog1.ShowDialog Windows.Forms.DialogResult.Cancel Then
                MsgBox
("لم يتم اختيار صورة")
 
           Else
                PictureBox1
.Image Image.FromFile(OpenFileDialog1.FileName)

 
           End If
 
       Catch ex As Exception

        End 
Try
 
   End Sub


    Private Sub Button3_Click
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button3.Click
        Dim dt2 
As New DataTable
        Dim da2 
As New OleDbDataAdapter
        dt2
.Clear()
 
       da2 = New OleDbDataAdapter("select * from family where id_num = '" TextBox3.Text "' and famid = " TextBox5.Text " and na = '" TextBox2.Text "' "con)
 
       da2.Fill(dt2)
 
       If dt2.Rows.Count 0 Then
            MsgBox
("الاسم موجود مسبقا "MsgBoxStyle.Critical"بيانات مكررة")
 
           Return

        ElseIf DateTimePicker2
.Value Date.Today Then
            MsgBox
("عمر اليتيم تجاوز سن الخامسة عشرة سنة", , "تنبيه اداري")
 
           Return
        End 
If
 
       If TextBox5.Text Nothing Then

            MsgBox
("يرجى اختيار رقم العائلة", , "تنبيه اداري")
 
           Return
        ElseIf TextBox2
.Text Nothing Then
            MsgBox
("يرجى ادخال اسم اليتيم", , "تنبيه اداري")
 
           Return
        ElseIf TextBox3
.Text Nothing Then
            MsgBox
("يرجى ادخال رقم الجنسية", , "تنبيه اداري")
 
           Return
        ElseIf ComboBox1
.Text Nothing Then
            MsgBox
("يرجى اختيار الجنس", , "تنبيه اداري")

 
           Return
        Else
            pathcopy 
OpenFileDialog1.FileName
            picname 
System.IO.Path.GetFileName(OpenFileDialog1.FileName)
 
           pathpast Application.StartupPath "\pics\" & picname
            Try
                My.Computer.FileSystem.CopyFile(pathcopy, pathpast)

            Catch ex As Exception
                MsgBox("
اسم الصورة موجود مسبقا ... يرجى تغيير اسم الصورة قبل الحفظ")
                Return
            End Try

            Dim cmd As New OleDbCommand
            cmd = New OleDbCommand("
insert into family na img birth gender id_num graduate notes ageend famidvalues ('" & TextBox2.Text & "' '" & pathpast & "' #" & DateTimePicker1.Value.ToString("yyyy/MM/dd") & "# , '" & ComboBox1.Text & "' , '" & TextBox3.Text & "' , '" & ComboBox2.Text & "' , '" & TextBox4.Text & "' , #" & DateTimePicker2.Value.ToString("yyyy/MM/dd") & "# , " & TextBox5.Text & " )", con)
 
           con.Open()
 
           cmd.ExecuteNonQuery()
 
           con.Close()

 
           MsgBox("")
 
           cleardata()
 
           load_faml()
 
       End If
 
   End Sub

    Private Sub TextBox1_TextChanged
(ByVal sender As System.ObjectByVal e As System.EventArgs)


 
   End Sub

    Private Sub DateTimePicker1_ValueChanged
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles DateTimePicker1.ValueChanged
        changedt
()
 
   End Sub

    Private Sub ComboBox1_SelectedIndexChanged
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles ComboBox1.SelectedIndexChanged
        shart
()
 
   End Sub

    Private Sub ComboBox2_SelectedIndexChanged
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles ComboBox2.SelectedIndexChanged
        shart
()
 
   End Sub

    Private Sub TextBox2_TextChanged
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles TextBox2.TextChanged
        shart
()
 
   End Sub

    Private Sub TextBox3_TextChanged
(ByVal sender As System.ObjectByVal e As System.EventArgsHandles TextBox3.TextChanged
        shart
()
 
   End Sub

    Private Sub DataGridView2_CellClick
(ByVal sender As ObjectByVal e As System.Windows.Forms.DataGridViewCellEventArgsHandles DataGridView2.CellClick
        Dim value 
As Object DataGridView2.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
        If IsDBNull
(valueThen
            TextBox2
.Text ""
 
           DateTimePicker1.Value ""
 
           ComboBox1.Text ""
 
           ComboBox2.Text ""
 
           TextBox3.Text ""
 
           TextBox5.Text ""
 
           DateTimePicker1.Value ""
 
       Else
            Try
                
'na, birth, gender, id_num, graduate, notes, ageend, img, famid
                TextBox2.Text = DataGridView2.Item(0, DataGridView2.CurrentRow.Index).Value
                DateTimePicker1.Value = DataGridView2.Item(1, DataGridView2.CurrentRow.Index).Value
                ComboBox1.Text = DataGridView2.Item(2, DataGridView2.CurrentRow.Index).Value
                TextBox3.Text = DataGridView2.Item(3, DataGridView2.CurrentRow.Index).Value
                ComboBox2.Text = DataGridView2.Item(4, DataGridView2.CurrentRow.Index).Value
                TextBox4.Text = DataGridView2.Item(5, DataGridView2.CurrentRow.Index).Value
                DateTimePicker2.Value = DataGridView2.Item(6, DataGridView2.CurrentRow.Index).Value
                If DataGridView2.CurrentRow.Cells(7).Value = Nothing Then
                    PictureBox1.Image = Nothing
                Else
                    PictureBox1.Image = Image.FromFile(DataGridView2.CurrentRow.Cells(7).Value)
                End If

                TextBox5.Text = DataGridView2.Item(8, DataGridView2.CurrentRow.Index).Value

            Catch ex As Exception

            End Try


        End If
    End Sub

    Public cmd As New OleDbCommand
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        pathcopy = OpenFileDialog1.FileName
        picname = System.IO.Path.GetFileName(OpenFileDialog1.FileName)
        pathpast = Application.StartupPath & "\pics\" & picname
        Try
            My.Computer.FileSystem.CopyFile(pathcopy, pathpast)

        Catch ex As Exception
            MsgBox("اسم الصورة موجود مسبقا ... يرجى تغيير اسم الصورة قبل الحفظ")
            Return
        End Try
        cmd = New OleDbCommand("update family set id_num = '" & TextBox3.Text & "' , gender = '" & ComboBox1.Text & "' , graduate = '" & ComboBox2.Text & "' , notes = '" & TextBox4.Text & "' , ageend =  #" & DateTimePicker2.Value.ToString("yyyy/MM/dd") & "# , img = '" & pathpast & "' where na = '" & TextBox2.Text & "' and famid = " & TextBox5.Text & "  ", con)
        con.Open()
        cmd.ExecuteNonQuery()
        con.Close()
        MsgBox("تم تعديل البيانات", , "تعديل البيانات")
        load_faml()
        TextBox2.Text = ""
        DateTimePicker1.Value = Now.Date
        ComboBox1.Text = Nothing
        ComboBox2.Text = Nothing
        TextBox3.Text = ""
        TextBox5.Text = ""





    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        If MsgBox("هل بالفعل تريد الحذف ؟", MsgBoxStyle.OkCancel, "تأكيد الحذف") = MsgBoxResult.Ok Then

            Dim cmd As New OleDbCommand("delete from family where na = '" & TextBox2.Text & "' and famid = " & TextBox5.Text & "", con)
            con.Open()
            cmd.ExecuteNonQuery()
            con.Close()
            MsgBox("تم الحذف", , "حذف بيانات  ")
            load_faml()
            TextBox2.Text = ""
            TextBox3.Text = ""
            TextBox5.Text = ""
            ComboBox1.Text = Nothing
            ComboBox2.Text = Nothing
        Else
        End If
    End Sub

   
    Private Sub TextBox5_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox5.TextChanged
        '
Try
 
       Dim dt2 As New DataTable
        Dim da2 
As New OleDbDataAdapter
        dt2
.Clear()
 
       da2 = New OleDbDataAdapter("SELECT yatim_ID FROM itams where yatim_ID like '%" TextBox5.Text "%' "con)
 
       da2.Fill(dt2)

 
       If dt2.Rows.Count 0 Then
            load_faml2
()
 
       Else

            load_faml
()
 
           TextBox5.Text Nothing
            MsgBox
("لا يوجد عائلة تحمل هذا الرقم")
 
       End If

 
       shart()
 
   End Sub
End 
Class 
الرد
تم الشكر بواسطة:
#2
وعليكم السلام ورحمة الله وبركاته

يفضل ارفاق المشروع حتى يتم اختبار ومعينة المشكلة
مع اختبارا لتعديل على الكود دون الحاجة لكثرة الردود حتى تصل للكود النهائي خاص الحل

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد
تم الشكر بواسطة: عبد العزيز البسكري
#3
اخي العزيز الجوكر elgokr



تم ارفاق المشروع بالكامل .... شكرا لتفاعلك ودمت طيبا


الملفات المرفقة
.rar   Waad prog.rar (الحجم : 5.62 م ب / التحميلات : 10)
الرد
تم الشكر بواسطة:
#4
تفضل المثال بعد التعديل :


الملفات المرفقة
.zip   Waad prog.zip (الحجم : 4.44 م ب / التحميلات : 15)
الرد
تم الشكر بواسطة:
#5
ما زالت نفس المشكلة تواجهني Huh Huh Huh Huh Huh 
على العموم ربما تكون المشكلة ان نظام التشغيل الذي اعمل عليه يعمل ينظام 64 و المشروع مصمم لنظام 32
سوف استخدم كومبيوتر يعمل بال 32

جزاك الله خير ما قصرت
الرد
تم الشكر بواسطة:
#6
عمل عندي دون مشاكل بالنسبة لنظام التشغيل عندي أيضا 64 بت .
ضع لي صورة الخطأ .


الملفات المرفقة صورة/صور
               
الرد
تم الشكر بواسطة:
#7
حسنا يا صديقي ...
سأرفق صورة الخطأ


الملفات المرفقة صورة/صور
   
الرد
تم الشكر بواسطة:
#8
إستبدله بهاذا الكود :

كود :
OpenFileDialog1.Filter = "All Picture|*.jpg;*.bmp;*.png"
       If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
           PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName)
       Else
           MsgBox("لم يتم اختيار صورة")
       End If

عدلت لك في النسخة المعدلة على الكثير من الأمور حملها و جربها المشاركة رقم 4
الرد
تم الشكر بواسطة:
#9
يبدوا انني سوف اجن في اخر المشوار !!!!!!!!!!!!!!!!!!!!!!1
الرد
تم الشكر بواسطة:
#10
لماذا
إقتباس :يبدوا انني سوف اجن في اخر المشوار !!!!!!!!!!!!!!!!!!!!!!1
الرد
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  رسالة خطأ فى الكود احمد خطاب 4 151 19-04-19, 11:56 AM
آخر رد: elgokr
Question [VB.NET] كيف اعمل رسالة ترحيب تظهر من اسفل الساعة " من الاسفل الى الاعلى " اباذر 5 207 04-04-19, 07:12 PM
آخر رد: elgokr
  [سؤال] أهلا وسهلا. هل يمكنم اعطائي كود برمجي يعطيني رسالة خطأ إذا لم تتصل بقاعدة بيانات عبر يونس جلال 0 93 22-03-19, 04:39 PM
آخر رد: يونس جلال
  مشكلة فى تثبيت الكريستال ريبورت يقف ويظهر رسالة خطاء ولا يقوم بالتثبيت على الجهاز hedra samir 1 112 22-03-19, 02:59 PM
آخر رد: 5000
  ما سبب هذا الخطأ فقد ارهقتني Attempted to read or write protected memory؟؟ dametucorazon 0 81 19-03-19, 09:53 AM
آخر رد: dametucorazon
Exclamation [VB.NET] اصطياد رسالة الخطأ دون يتوقف البرنامج sniperjawadino 7 312 07-03-19, 09:28 PM
آخر رد: elgokr
  [VB.NET] ظهور رسالة خطأ Ahmed Alkuiady 6 276 16-02-19, 06:10 PM
آخر رد: princelovelorn
  [سؤال] رسالة خطأ بعد عملية الاضافة georgos 11 338 16-02-19, 03:36 PM
آخر رد: georgos
  المساعده في الخطاء out of memory Rabeea Qbaha 16 1,401 09-01-19, 01:13 AM
آخر رد: abiza
  ارسال رسالة بالواتس اب المتألق9 2 324 01-12-18, 01:11 PM
آخر رد: DK-x

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


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