الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف لي ان انسخ سجل رئيسي مع سجلاتة الفرعية لكن بشرط ان ياخذ رقم تسلسلي جديد في النموذج

بدأه alcasir في 31 يوليو 2010 · 17 رد · 1,184 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

اعضاء ومشرفي هذا المنتدى المتميز

ممكن المساعدة في نسخ سجل رئيسي مع سجلاته الفرعية لكن بشرط ان ياخذ رقم تسلسلي جديد..؟؟! علما ان نوعية الترقيم المستخدمة في هذا البرنامج هو كالاتي 00001-2010

على سبيل المثال

لو كان رقم السجل الحالي هو 00001-2010 وبه بالطبع سجلات فرعية

كيف لي ان انشأ زر نسخ بحيث ينسخ السجل الرئيسي وبياناته الفرعية ليعطيه رقم جديد هو 2010-00002 تلقائيا

ارجو التكرم مشكورا بمعاينة المرفق

مع الشكر

copy_2new_Id.rar

تم تعديل هذه المشاركة بواسطة همام ابوعرقوب في 8 أغسطس 2010 في 07:28

#2

وعليكم السلام ورحمة الله وبركاته أخي الكريم،

حسب فهمي للسؤال، فقد أضفت زراً لتكوين سجل جديد منسوخ من السجل الأخير مع تحديث الترقيم، بواسطة الكود التالي:

Private Sub cmdCopyRecord_Click()
    On Error GoTo Errhandler
    Dim lngLastID As Long

    DBEngine.BeginTrans
        lngLastID = DMax("id", "permittable")
        DBEngine(0)(0).Execute "INSERT INTO permittable (iid, releasedate, importeraddress, " & _
                               "importername, exportername, exporteraddress, using, id) " & _
                               "SELECT Left(iid, 5) & Format(Val(Mid(iid, 6)) + 1, '00000'), " & _
                               "releasedate, importeraddress, importername, exportername, " & _
                               "exporteraddress, using, Nz(id, 0) + 1 FROM permittable  " & _
                               "WHERE iid = (SELECT MAX(iid) FROM permittable)"
        DBEngine(0)(0).Execute "INSERT INTO shipmentdetails_PERMIT (id, class, common, scientific, quantity, origin) " & _
                               "SELECT " & lngLastID + 1 & ", class, common, scientific, quantity, origin " & _
                               "FROM shipmentdetails_PERMIT WHERE id = " & lngLastID
    DBEngine.CommitTrans

    Me.Requery
    DoCmd.GoToRecord , , acLast

    Exit Sub
Errhandler:
    MsgBox "حدث خطأ في تكوين سجل جديد... سيتم التراجع عن كامل العملية", vbExclamation, "خطأ"
    DBEngine.Rollback
End Sub

تم استخدام مفهوم الـ Transaction هنا، حيث تتم الإضافة إلى جدول permittable وجدول shipmentdetails_PERMIT معاً، أو لا يتم إضافة أي شيء. تم تحويل حقل id في جدول permittable إلى حقل رقم Long Number، والملف المرفق يوضح تنفيذ الفكرة...

والله أعلم.

copy_2new_Id.rar

#3

استاذي العزيز احمد الحيقي

شاكر لك على التعديل الرائع

ولكن ماذا لو كان السجل المنسوخ ليس الاخير.....وانما اي سجل يمكن نسخة سواء السجل الاول او السجل الخامس او اي سجل انا اختاره مش شرط السجل الاخير....ليعطيني في النهاية رقم جديد.

لان جربت بنسخ السجل الاول ما ضبط عندي

وعندي مطلب اخر لو تكرمت

الاول بمجرد الضغط على زر نسخ تظهر لي مسج تنبه باني على وشك نسج سجل مع سجلاته الفرعية فاما اختيار نعم او الغاء

اتمنى المواصلة معي ولك خالص شكري

#4

جرب هذا الموضوعتكرار سجلات الرئيس والفرعي وعمل تسلسل جديد

/index.php?showtopic=123435&st=0&p=621117entry621117

تم تعديل هذه المشاركة بواسطة همام ابوعرقوب في 1 أغسطس 2010 في 15:30

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#6

اشكرك بقوة استاذي احمد الحيقي

بالفعل هو المطلوب بعينة وجزاك الله الف خير

وشاكر لك على التواصل.....

تحياتي لك الخاصة / ALcasir

#7

مساء الخير / استاذ الفاضل الحيقي

لقد اضفت 4 حقول جديدة رئيسية في النموذج في النموذج وعندما حاولت اضافه هذه الحقول في الكود الذي تفضلت بكتابته ظهر لي خطا ولم اتمكن من النسخ, علما بانني كتب اضفت الحقول بنفس الطريقة الذي كتبتها في الكود

والحقول الجديدة هي:

PORTENTRY

HEADOFFICAENAME

ENTRYTYPE

FINALFACE

سؤالي لك استاذي ما هي الطريقة الصحيحة لاضافة هذه الحقول في الكود بحيث جميع الحقول الجديدة ممكن نسخها او تكرارها؟؟

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

ارجو التكرم مشكورا بمعاينته ولك جزيل الشكر

copy_2new_Id_2.rar

تم تعديل هذه المشاركة بواسطة alcasir في 6 أغسطس 2010 في 14:47

#8

ارجو الرد في اقرب ....

ولك الشكر مرة اخرى

#9

نعم أخي الكريم، فطريقتك صحيحة عدا الملحوظتين التاليتين:

1. يجب أن يوافق ترتيب الحقول بعد الأمر INSERT INTO الترتيب في قائمة VALUES.

2. نسيت فاصلة بين حقلين، بعد الحقل HEADOFFICENAME.

أرجو الاطلاع على الملف المرفق، ففيه التعديل.

copy_2new_Id_2.rar

#10

استاذي الفاضل / اولا وقبل كل شي شاكر لك كثير على التواصل

لم الاحظ اي تعديل على المرفق الاخير

فقمت باضافة الفاصلة مع حقل headofficename

ولكن ظهرت لي مشكلة الحقل ينسخ قيمة حقل اخر ...!!

ارجو الافادة والتعديل

تم تعديل هذه المشاركة بواسطة alcasir في 6 أغسطس 2010 في 16:40

#11

أخي الكريم، مرحباً بك...

لم أستطع أن أفهم الإشكال، إذ أن الملف الأخير الذي أرفقته يعمل عندي، وقد قمت بإضافة سجل جديد مع توابعه بواسطة الزر الذي أضفته أنت (وتحته التعديل الذي أرفقته أنا)، وهذه هي صورة السجل المضاف (من السجل رقم 2101-00009:

post-70171-052029900 1281103625_thumb.jp

أما التعديل في الكود فهو كالتالي (وقد أرفقته في المشاركة السابقة تحت الزر الذي أرفقته أنت):

post-70171-099508500 1281103852_thumb.jp

أرجو المزيد من التوضيح إن تيسر...

المرفقات
copyRecord.JPGcopyCode.JPG
#12

استاذي الفاضل / اعذرني اليوم اتعبتك معي كثيير

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

الكود صحيح واشتغل عندي....

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

بس ظهر لي نفس المشكلة..غير قابل للنسخ

والحقول كالاتي

scientific

variety

note

والمرفق موضح ذلك ايضا

اسمحلي مرة اخرى

copy_2new_Id_2_4.rar

#13

لا عليك أخي الكريم...

أرجو الاطلاع على التعديل في الملف المرفق، وهو فقط يصحح اسم حقل variety، فقد كان مكتوباً بتهجئة تخالف الحقل في الجدول، كما تمت تسمية الحقل note بـ note1... والله أعلم.

copy_2new_Id_2_4.rar

#14

اشكرك يا استاذي الكريم

بس في عندي سؤال..

ضروروي خاصية حقل id يكون رقم

يعني لو غيرت خاصيته الى ترقيم تلقائي.....هل يمشي الموضوع او لازم اغير في الكود.؟؟؟

#15

مساك الله بالخير استاذي الفاضل / احمد الحيقي

اولا اعتذر عن تكرار الموضوع مرة اخرى.....

بس انا لما غيرت خصائص حقل id الى ترقيم تلقائي...ظهر لي خطا....حقل الترقيم التلقائي انا احتاجه في البرنامج لانك انت غيرت خصائصه الى رقم

انا مرفق البرنامج بجميع الحقول المرد نسخها....مع كود النسخ طبعا....بس يظهر لي خظا

ارجو التكرم مشكورا بمعاينته ولك خالص شكر

كما اكوم ممكن لاي مرور من الاخوء الاعضاء ...

ولكم اجمل تحية

رمضان كريم

copy_record.rar

#16

رمضان كريم

ما زلت بانتظار المساعد

#17

اليك التعديل اخى

الترقيم التلقائى لايتم الاضافة اليه

و الاسم note من الاسماء المحجوزة فلا تستخدمه

DBEngine(0)(0).Execute "INSERT INTO permittable (iid, releasedate, importeraddress, FINALFACE,PORTENTRY, ENTRYTYPE, HEADOFFICENAME, " & _
                               "importername, exportername, exporteraddress, using) " & _
                               "VALUES ('" & left(strLastIID, 5) & Format(Val(Mid(strLastIID, 6)) + 1, "00000") & "', #" & _
                               Me.releasedate & "#, '" & _
                               Me.importeraddress & "', '" & _
                               Me.finalface & "', '" & _
                               Me.PORTENTRY & "', '" & _
                               Me.entrytype & "', '" & _
                               Me.headofficename & "', '" & _
                               Me.importername & "', '" & _
                               Me.exportername & "', '" & _
                               Me.exporteraddress & "', '" & _
                               Me.using & "')"
                               'Me.using & "', " & lngLastID1 + 1 & ")"
        DBEngine(0)(0).Execute "INSERT INTO shipmentdetails_PERMIT (id, class, common, scientific, quantity, origin, variety, tnote) " & _
                               "SELECT " & lngLastID + 1 & " as xp1, class, common, scientific, quantity, origin, variety, tnote " & _
                               "FROM shipmentdetails_PERMIT WHERE (((shipmentdetails_PERMIT.id)=" & Me.id & "));"

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

#18

اخي العزيز شاكر لك على الرد

حدثت عندي نفس المشكلة يوجد خطأ في النسخ

لكني وجدت كود اخر وبالفعل ضبط عندي صح

وهذا هو الكود

[Private Sub Command114_Click()

If MsgBox("ÃäÊ Úáì æÔß äÓÎ ÊÕÑíÍ ÒÑÇÚí...åá ÊÑíÏ ÇáÇÓÊãÑÇÑ ÈÚÏ ÚãáíÉ ÇáäÓÎ íÑÌì ÇáÖÝØ Úáì ÇáÒÑ ÇáãæÌæÏ ÈÌÇäÈ ÑÞã ÇáÊÕÑíÍ áÇÚØÇÆå ÑÞã ÌÏíÏ¿ ", vbOKCancel _

+ vbInformation + vbMsgBoxRight, "ÊäÜÜÜÜÜÜÜÜæíÉ") = vbOK Then

Dim khaher, k As DAO.Database

Dim hamandi, hamandi1 As DAO.Recordset

Set khaher = CurrentDb

Set hamandi = khaher.OpenRecordset("permittable")

Set hamandi1 = khaher.OpenRecordset("shipmentdetails_PERMIT")

With hamandi

.AddNew

hamandi!iid = AutoNumber("permittable", "iid", "[YYYY]-", 5)

hamandi!releasedate = releasedate

hamandi!arrivaldate = arrivaldate

hamandi!entrytype = entrytype

hamandi!importername = importername

hamandi!importeraddress = importeraddress

hamandi!exportername = exportername

hamandi!exporteraddress = exporteraddress

hamandi!portentry = portentry

hamandi!finalface = finalface

hamandi!using = using

hamandi!headofficename = headofficename

hamandi!placeoofissue = placeoofissue

.Update

.Close

End With

Me.shipmentdetails_PERMIT.SetFocus

For i = 1 To Me.shipmentdetails_PERMIT.Form.RecordsetClone.RecordCount

With hamandi1

.AddNew

hamandi1!ID = DLast("[id]", "permittable", "[id]")

hamandi1!origin = Forms!PERMIT_FORM1!shipmentdetails_PERMIT.Form!origin

hamandi1!class = Forms!PERMIT_FORM1!shipmentdetails_PERMIT.Form!class

hamandi1!common = Forms!PERMIT_FORM1!shipmentdetails_PERMIT.Form!common

hamandi1!scientific = Forms!PERMIT_FORM1!shipmentdetails_PERMIT.Form!scientific

hamandi1!quantity = Forms!PERMIT_FORM1!shipmentdetails_PERMIT.Form!quantity

hamandi1!variety = Forms!PERMIT_FORM1!shipmentdetails_PERMIT.Form!variety

hamandi1!NOTE = Forms!PERMIT_FORM1!shipmentdetails_PERMIT.Form!NOTE

hamandi1!description = Forms!PERMIT_FORM1!shipmentdetails_PERMIT.Form!description

.Update

Me.shipmentdetails_PERMIT.SetFocus

DoCmd.GoToRecord , , acNext

End With

Next

Me.Requery

DoCmd.GoToRecord , , acLast

Else

Exit Sub

End If

End Sub]

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…