ACC: سجلات SQL جديد الظهور المحذوفة حتى إعادة فتح مجموعة سجلات

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

135379
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الأعراض
متقدمة: يتطلب ترميز الخبير إمكانية التشغيل المتداخل و مهارات متعددة المستخدمين.

عند إضافة سجل إلى جدول SQL باستخدام Visual Basic for Applications ، إذا كان يحتوي حقل فهرس فريد للجدول قيمة افتراضية عدم تعيين قيمة بهذا الحقل يظهر السجل الجديد المحذوفة إلى أن تقوم بإعادة جدول SQL. إذا حاول الحصول على قيمة من سجل جديد "، تظهر رسالة الخطأ التالية:
خطأ وقت التشغيل '3167'
حذف السجل.
الحل
عند فتح جدول SQL باستخدام التعليمات البرمجية لـ Visual تتضمن الخيار dbSeeChanges كما في المثال التالي:
   Set rs = db.OpenRecordset("TestTable", dbOpenDynaset, dbSeeChanges)				

يضمن الخيار dbSeeChanges أن أي حديثاً إضافة السجلات التي تحتوي على قيمة افتراضية في حقل فهرس فريد المتوفرة في مجموعة السجلات الحالية.
تصريح
يعتبر هذا السلوك حسب التصميم.
معلومات أخرى

خطوات إعادة إنشاء السلوك


  1. إنشاء وحدة نمطية ثم اكتب السطر التالي في مقطع Declarations إذا لم تكن هناك:
          Option Explicit						
  2. اكتب الإجراء التالي:
          Function TestSQLData()         Dim db As Database, rs As Recordset         Dim idx, td         Dim cmd As String         ' Delete TestTable if it exists on the SQL server.         Set db = OpenDatabase("", False, False,ODBC;dsn=<datasource>; _            database=<database>;uid=<user id>;pwd=<password>")         cmd = "if exists (select * from sysobjects where _            id = object_id('dbo.TestTable'))"         cmd = cmd & " drop table TestTable"         db.Execute cmd, dbSQLPassThrough         ' Create TestTable with one field on SQL server.         Set td = db.CreateTableDef("TestTable")         td.Fields.Append td.CreateField("Int", dbInteger)         td.Fields.Append td.CreateField("String", dbText, 50)         db.TableDefs.Append td         Set idx = td.CreateIndex("MyIdx")         idx.Unique = True         idx.Fields.Append idx.CreateField("Int")         td.Indexes.Append idx         cmd = "create Default TestDef3 as 100"         db.Execute cmd, dbSQLPassThrough         cmd = "sp_bindefault TestDef3, 'TestTable.Int'"         db.Execute cmd, dbSQLPassThrough         ' Open table, add a record, and then obtain values.         Set rs = db.OpenRecordset("TestTable")         rs.AddNew         rs!String = "Trial"         rs.Update         Debug.Print "RecordCount = " & rs.RecordCount         rs.MoveFirst         Debug.Print "String is " & rs("String")         Debug.Print "Int is " & rs("Int")         rs.Close      End Function						
  3. لاختبار هذه الدالة اكتب السطر التالي في إطار التصحيح ثم اضغط مفتاح الإدخال ENTER:

    ? TestSQLData()

    لاحظ أن يحدث خطأ وقت التشغيل '3167'.
مراجع
للحصول على مزيد من المعلومات حول أسلوب OpenRecordset ابحث في فهرس "تعليمات"OpenRecordset"، ثم"OpenRecordset أسلوب"أو اطلب مساعد Office الخاص بـ Microsoft Access 97.
تشغيل خطأ وقت 3167

تحذير: تمت ترجمة هذا المقال تلقائياً

خصائص

رقم الموضوع: 135379 - آخر مراجعة: 02/05/2014 13:51:37 - المراجعة: 3.2

  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition
  • kbnosurvey kbarchive kbmt kberrmsg kbprb kbusage KB135379 KbMtar
تعليقات