اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

حذف السجلات الأولى اذاوصل عدد السجلات الى عدد محدد


أبو وليد

الردود الموصى بها

عندي جدول للمعاملات

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

ولكن اريد ان احفظ اخر عشرين معاملة (سجل)

================

أي عند وصول السجلات في الجدول إلى عشرين سجل

بعد ذلك عند اضافت سجل يقوم الكود بحذف أول سجل وهكذا

أي لا يزيد عدد السجلات عن 20 سجل

ويتم الحذف من السجل الاول

بارك الله فيكم

  • Thanks 1
رابط هذا التعليق
شارك

ضع عند حدث زر الامر الذي يقوم باضافة سجل جديد الكود التالي :

DoCmd.SetWarnings False

If Me.RecordsetClone.RecordCount > 10 Then

DoCmd.GoToRecord , , acFirst

DoCmd.RunCommand acCmdDeleteRecord

End If

DoCmd.GoToRecord , , acNewRec

  • Like 1
رابط هذا التعليق
شارك

  • 2 weeks later...

اسف اخواني

فأسئلتي كثيرة ولكن عشمي فيكم اكبر

لدي جدولين مرتبطين راس بطراف

الاول ( الشركة)

الثاني ( الشركة- التاريخ-السعر)

تلحق السجلات في الثاني عن طريق استعلام الحاق (جيد)

السؤال

أوريد ان اضع معير في الجدول الثاني ان السجلات لا تتعدى 10 سجلات وعند الزيادة يحدف الاول وهكذا

سبق ان اجاب الاخ امير

ولكن كان ذلك عن طريق النموذج

وهذا الجدول ليس له نموذج لتعبئته

اتمنى ان تكون اتضحت الصورة

رابط هذا التعليق
شارك

يمكنك عمل ذلك ذلك ايضاً بدون النموذج عن طريق التعامل مع الجدول مباشرةً والغاء اول سجل من الجدول عن طريق وضع هذه الدالة بوحدة نمطبة عامة :

Public Function delfirstrec()

Dim db As DAO.Database

Dim rst As DAO.Recordset

Set db = CurrentDb

Set rst = db.OpenRecordset("TableName")

If rst.RecordCount > 10 Then

rst.MoveFirst

rst.Delete

rst.Close

MsgBox "تم الغاء السجل الأول من الجدول", vbOKOnly, "Officena"

End If

End Function

وبعد ذلك تقوم باستدعاء الدالة من خلال ماكرو

للعلم هذا الكود يقوم بالغاء السجل الأول فقط اذا عدد السجلات عن عشر سجلات

  • Like 1
رابط هذا التعليق
شارك

اما اذا اردت ايى عدد من السجلات اي ليس السجل الاول فقط اي كل السجلات الأولى يتم حذفها في حالة زيادة عدد السجلات عن عشر سجلات فها هو الكود ايضاً:

Public Function delfirstrec()

Dim db As DAO.Database

Dim rst As DAO.Recordset

Set db = CurrentDb

Set rst = db.OpenRecordset("TableName")

While rst.RecordCount > 10

rst.MoveFirst

rst.Delete

Wend

rst.Close

MsgBox "تم الغاء كل السجلات اللازمة", vbOKOnly, "Officena"

End Function

رابط هذا التعليق
شارك

شكرا عزيزي

دئما مبادر بالمساعدة وفقك الله ورعاك

يعلم كم من الفائدة اجد في اجابتك

اخي :

يبدو انني لم اوصل لك المعلومة كما يجب

لدي جدولين بين علاقة راس بطرف

الجدول الاول ( الشركة)

الجدول الثاني ( الشركة - الرمز - السعر)

عند تشغيل الاستعلام تنتقل البيانات الى الجدول الثاني

المطلوب

ان السجلات المرتبطة بالجدول الاول لا تزيد عن عشرة تقريبا

اما نفس الجدول مفتوح السجلات

الشرح غير واضح اعانك الله عليه

الجدول الاول

===========

الشركة

-------

السعودية

مصر للطيران

الامارتية

الجدول الثاني

==============

الشركة ________ الرمز_______ السعر

----------------------------------

السعودية ______01___________110

السعودية ______01___________20

السعودية_______01___________300

مصر للطيران____02___________200

مصر للطيران____02___________223

الامارتية_______03___________98

====================

من الملاحظ في الجدول الثاني والاول عملية الارتباط

المطلوب

في الجدول الثاني الشركة السعودية لا تزيد عن عشرين سجل وعند الزيادة يحذف السجل الاول الخاص

بالشركة السعودية

اتمنى ان اكون وضحت الصورة

بارك الله فيك ورزقك من نعيمه

رابط هذا التعليق
شارك

هل تعني ان لا يزيد عدد سجلات كل شركة عن عشرون سجل بغض النظر عن سجلات الجدول بشكل عام؟

بمعنى ان لا يزيد عدد السجلات عن عشرون سجل لشركة السعودية

و لا يزيد عدد السجلات عن عشرون سجل لشركة مصر للطيران

و لا يزيد عدد السجلات عن عشرون سجل للشركة الاماراتية

.................................................. وهكذا

هل تعني ذلك ؟

رابط هذا التعليق
شارك

ااسف على التأخير اخي ابو وليد ... ولكن حتى نصل لحل مناسب :rol:

هذه الدالة تفي بالمطلوب كما تريد بالضبط واذا زاد عدد سجلات اي مدينه عن عشرون سوف تقوم الداله بالغاء السجلات الاولى الزائدة عن العشرون سجل وذلك بالطبع لكل مدينة على حدة :

Public Function delfirstrec()

On Error Resume Next

Dim db As DAO.Database

Dim rst As DAO.Recordset

Dim rsttransaction As DAO.Recordset

Dim rst_temp As DAO.Recordset

Dim tblofficena As DAO.TableDef

Dim qryOfficena As DAO.QueryDef

Dim fldtest As DAO.Field

Set db = CurrentDb

Set rst = db.OpenRecordset("TableName", dbOpenTable)

rst.MoveFirst

Do Until rst.EOF

Set tblofficena = db.CreateTableDef("tbltest")

Set fldtest = tblofficena.CreateField("city_temp", dbText)

fldtest.Size = 50

tblofficena.Fields.Append fldtest

db.TableDefs.Append tblofficena

Set rst_temp = db.OpenRecordset("tbltest", dbOpenTable)

rst_temp.AddNew

rst_temp!city_temp = rst!city

rst_temp.Update

rst_temp.Close

Set qryOfficena = db.CreateQueryDef("Officena", _

            "SELECT city FROM TableName where city = dlookup('[city_temp]','[tbltest]')")

Set rsttransaction = db.OpenRecordset("Officena")

Do Until DCount("[city]", "[officena]") <= 20

rsttransaction.MoveFirst

rsttransaction.Delete

Loop

rsttransaction.Close

rst.MoveNext

db.TableDefs.Delete ("tbltest")

db.QueryDefs.Delete ("officena")

Loop

rst.Close

db.Close

MsgBox "تم الغاء السجلات اللازمة", vbOKOnly, "فريق اوفيسنا"

End Function

كل ما عليك هو استبدال اسم الجدول الذي به البيانات لديك بدلاً من TableName واستبدال اسم حقل المدينه بدلاً من City

تم تعديل بواسطه امير عاطف
رابط هذا التعليق
شارك

وفقك الله دنيا واخرة

حقيقة يعجز اللسان عن الشكر

ونسأل الله ان يرزقك الصحة والعافية والرزق الحلال في الدنيا

والجنة في الاخرة

لم تنجح معي يعلق برنامج الاكسس علما ان حقل المدينة بالعربي هل هذا يؤثر

تم تعديل بواسطه أبو وليد
رابط هذا التعليق
شارك

يبدو انك لم تنسخ الدالة السابقة بشكل سليم .... بقم بعمل نسخ ولصق للدالة كما هي منعاً للخطأ وبعد ذلك كل ما عليك هو استبدال اسم الجدول الذي به البيانات لديك بدلاً من TableName واستبدال اسم حقل المدينه بدلاً من City ولا مشكله اذا كان اسم حقل المدينه بالعربي لكن ضعه بين قوسين مربعين هكذا []

رابط هذا التعليق
شارك

في حالة ان اسم الجدول tss5 والحقل الذي نريد الحذف على اساسه الشركة يكون الكود هكذا

Public Function delfirstrec1()

On Error Resume Next

Dim db As DAO.Database

Dim rst As DAO.Recordset

Dim rsttransaction As DAO.Recordset

Dim rst_temp As DAO.Recordset

Dim tblofficena As DAO.TableDef

Dim qryOfficena As DAO.QueryDef

Dim fldtest As DAO.Field

Set db = CurrentDb

Set rst = db.OpenRecordset("tss5", dbOpenTable)

rst.MoveFirst

Do Until rst.EOF

Set tblofficena = db.CreateTableDef("tbltest")

Set fldtest = tblofficena.CreateField("city_temp", dbText)

fldtest.Size = 50

tblofficena.Fields.Append fldtest

db.TableDefs.Append tblofficena

Set rst_temp = db.OpenRecordset("tbltest", dbOpenTable)

rst_temp.AddNew

rst_temp!city_temp = rst![الشركة]

rst_temp.Update

rst_temp.Close

Set qryOfficena = db.CreateQueryDef("Officena", _

           "SELECT [الشركة] FROM tss5 where [الشركة] = dlookup('[city_temp]','[tbltest]')")

Set rsttransaction = db.OpenRecordset("Officena")

Do Until DCount("[الشركة]", "[officena]") <= 20

rsttransaction.MoveFirst

rsttransaction.Delete

Loop

rsttransaction.Close

rst.MoveNext

db.TableDefs.Delete ("tbltest")

db.QueryDefs.Delete ("officena")

Loop

rst.Close

db.Close

MsgBox "تم الغاء السجلات اللازمة", vbOKOnly, "فريق اوفيسنا"

End Function

  • Like 1
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information