21-11-18, 01:08 PM
السلام عليكم
الاخوة الاعضاء عندي مشكلة في برنامج عملته بالفيجوال ستوديو 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
الاخوة الاعضاء عندي مشكلة في برنامج عملته بالفيجوال ستوديو 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(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 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.Object, ByVal e As System.EventArgs) Handles MyBase.Load
load_faml()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 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.Object, ByVal e As System.EventArgs) Handles 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 , famid) values ('" & 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.Object, ByVal e As System.EventArgs)
End Sub
Private Sub DateTimePicker1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker1.ValueChanged
changedt()
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
shart()
End Sub
Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
shart()
End Sub
Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
shart()
End Sub
Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged
shart()
End Sub
Private Sub DataGridView2_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView2.CellClick
Dim value As Object = DataGridView2.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
If IsDBNull(value) Then
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