منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : ظهور رساله في نافذة immediate windows
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم

مشكلتي هي ظهور رساله في نافذة immediate windows عندما اقوم بتنفيذ المشروع وهي كالتالي:
A first chance exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll

والكود هو كالتالي:
[
php]Imports System.Data
Imports System.Data.OleDb
Public Class frmAddNew

Private Sub btnSave_Click(sender As System.Object, e As System.EventArgs) Handles btnSave.Click
Try
Dim SavInto As New OleDb.OleDbCommand
'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\bin\Debug\AppointmentSystem.accdb'
Dim ConStr As String = _
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source =" & _
Application.StartupPath & "\AppointmentSystem.Accdb"
Dim Conn As New OleDbConnection(ConStr)
SavInto.Connection = Conn
SavInto.CommandType = CommandType.Text
SavInto.CommandText = "INSERT INTO tblCustomers(CivilRegNum,Name1,Name2,Name3,Name4)" & _
"values (txtCRN.Text ,txtName1.Text ,txtName2.Text ,txtName3 ,txtName4 ) "
Conn.Open()
SavInto.ExecuteNonQuery()
Conn.Close()
MsgBox("تمت عملية الاضافة والحفظ في قاعدة البيانات بنجاح")
Me.Close()

Catch ex As Exception
Exit Sub
End Try
End Sub
End Class
[/php]

مع الشكر لكم جميعاً
المشروع بواسطة فيجوال بيسك 2010 اكسبرس وقاعدة البيانات بواسطة اكسس 2007
ما هي بيئة نظام التشغيل لديك 32 أم 64 ؟

RolleyesRolleyesRolleyes
Windows 7 32 bit
(05-03-14, 01:23 AM)bumb كتب : [ -> ]Windows 7 32 bit

اذا الخطأ أنك تستخدم Provider غير مناسب
قم بإستبدال Provider=Microsoft.ACE.OLEDB.12.0 إلي Provider=Microsoft.Jet.Oledb.4.0

RolleyesRolleyesRolleyes
نفس الرساله تظهر مره ثانيه
السلام عليكم...

لا علاقة لنسخة Windows بالأمر لأن الـ Provider يتحدد بنسخة Access و ليس Windows، و طالما أنك تستعمل Access 2007 فإن الـ Provider صحيح.

و لكن الخطأ في عبارة VALUES:

كود :
"values (txtCRN.Text ,txtName1.Text ,txtName2.Text ,txtName3 ,txtName4 ) "

حيث قمت بوضع أسماء مربعات النص ضمن علامات الاقتباس، و بالتالي ستذهب كما هي إلى Access الذي سيحاول تفسيرها على أنها أسماء حقول أو دوال و ينتج خطأ.

عدل عبارة VALUES إلى هذا الشكل:

كود :
"values (" & txtCRN.Text & ", '" & txtName1.Text & "', '" & txtName2.Text & "', '" & txtName3.Text & "', '" & txtName4.Text & "')"

* لاحظ وجود علامات الاقتباس الفردية قبل و بعد كل من txtName1 و txtName2 و txtName3 و txtName4 لأنها تقابل حقولاً نصية.
و إذا كان الحقل CivilRegNum نصياً أيضاً فضع علامات اقتباس فردية أيضاً قبل و بعد txtCRN.Text.

نرجو الاستفادة و السلام.
نفس المشكله

اليكم المشروع بالمرفقات
اخي الكريم انت وضع امر الخروج من الروتين عند حدوث خطا وهكذا لن تعرف الخطا اصلا
رسالة الخطا بعد حذف امر الخروج
كود :
ExecuteNonQuery requires an open and available Connection. The connection's current state is closed.
الكود بعد التصحيح

كود :
Try
            Dim SavInto As New OleDb.OleDbCommand
            'Microsoft.ACE.OLEDB.12.0
            'Microsoft.Jet.Oledb.4.0
            Dim ConStr As String = _
                "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =" & _
                Application.StartupPath & "\AppointmentSystem.Accdb"
            Dim Conn As New OleDbConnection(ConStr)
            SavInto.Connection = Conn
            SavInto.CommandType = CommandType.Text
            SavInto.CommandText = "INSERT INTO tblCustomers(CivilRegNum,Name1,Name2,Name3,Name4)" & _
            "values (" & txtCRN.Text & ", '" & txtName1.Text & "', '" & txtName2.Text & "', '" & txtName3.Text & "', '" & txtName4.Text & "')"

            If Conn.State = ConnectionState.Closed Then
                Conn.Open()
            End If
            SavInto.ExecuteNonQuery()
            Conn.Close()
            MsgBox("تمت عملية الاضافة والحفظ في قاعدة البيانات بنجاح")
            Me.Close()

        Catch ex As Exception
            MsgBox(Err.Description, MsgBoxStyle.Critical, "")



        End Try

الصفحات : 1 2