اذهب الي المحتوي
أوفيسنا

نسخ رموز معينة من حقل نصي ووضعها في جدول آخر


nssj
إذهب إلى أفضل إجابة Solved by jjafferr,

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

الإخوة الكرام .. في الملف المرفق جدول لرموز معينة (TAB_RMS) وهذه الرموز موجودة في حقل النص (NASS) في الجدول الرئيسي (TAB)

والعلاقة بين الجدولين علاقة متعدد بمتعدد من خلال جدول الربط (TAB_RMS_X)

والمطلوب تعبئة جدول الربط هذا تلقائيا إن أمكن

يعني الرموز الموجودة في كل حديث توضع تلقائيا في جدول الربط لتظهر في النموذج، كما فعلت ذلك يدويا في الحديث الأول

وأرجو الانتباه: توضع ولا تنقل، يعني المطلوب أن تبقى في حقل النص للمراجعة

 مع ملاحظة أنه توجد مشكلة في كتابة الرموز فهي تظهر بشكل معكوس، وعند الكتابة بعدها تنعدل .. فما هو السبب

012.jpg.c0f6ac535756d855a5bce7795daa54da.jpg

RMZ.accdb

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

24 دقائق مضت, jjafferr said:

السؤال ، ما فائدة هذا العمل ؟

الجواب:

هذه الرموز لها عدة مهام وهي مطلوبة للحصر، ولكل واحد منها معنى، لذلك ينبغي أن تكون في حقل خاص لطلبها وحصرها وأداء مهامها .. فمن مهامها تحديد قيمة (Type2) ولها دور في ترقيم (MNo)

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

وأخيراً .. خطر في بالي حل غريب إن كان طلبي صعبا .. نسخ حقل النص وإلغاء كل ما فيه ما عدا هذه الرموز 😁

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

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

والحل الغريب الذي ذكرته يمكن التفكير بتفاصيله إذا كان طلبي الأساسي غير ممكن برمجيا .. وهو حل حتى لو افترضنا أنه يمكن تطبيقه فيه مخاطرة .. فقد يحذف رمز نسيت أن أدخله في الجدول

وقد انتبهت اليوم وأن أجرى بعض التجارب والمحاولات عبر استعلامات التحديث والاستبدال -طبعا كلها كانت تجارب فاشلة 😒- انتبهت أنه ليس في الجدول واحد من أكثر الرموز استخداما .. وهو (+)

وعليه فأرجو منك أخي الكريم إن أرت المحاولة أن تعتمد الملف المرفق هنا وليس السابق

وأحب أن ألفت نظرك أخي الكريم إلى أن هذه الرموز فريدة .. يعني وضعتها بهذا الشكل الغريب حتى لا تكون متكررة في ملفات الوورد فيمكنني البحث عنها

ولكن بينها فروق دقيقة ينبغي مراعاتها عند البحث والنقل في الكود مثلا:

(+)

((+))

(+)|

(+)؟

هذا بالإضافة إلى مشكلة انعكاس الرموز .. فهل سيكون لها تأثير سلبي

عموماً أخي الكريم .. إن ظهر لك أن طلبي صعب تطبيقه برمجيا لهذه الأمور فعندها لكل حادث حديث

RMZ02.accdb

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

بسيطة .. هاي عشر أمثلة في الملف المرفق

أدرجت الرموز في النموذج يدويا .. ولاحظ في الصورة انعكاس الرمز في الجدول .. وما بينعدل إلا إذا كتبت بعده ؟؟ عشان هيك وضعهم مزبوط في حقل النص

 2021-03-16_21h18_32.jpg.c74feacb7c63c160460e786e851508c3.jpg

وطبعا المعلومات تم تخزينها في جدول الربط

2021-03-16_21h19_44.jpg.24c82b534ecda50f8c87126465c793bf.jpg

RMZ03.accdb

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

استعملت هذه الدالة:

Function Add_RMZ()
On Error GoTo err_Add_RMZ

    Dim rstT As DAO.Recordset
    Dim rstR As DAO.Recordset
    Dim rstX As DAO.Recordset
    
    Set rstT = CurrentDb.OpenRecordset("Select * From TAB")
    Set rstR = CurrentDb.OpenRecordset("Select * From TAB_RMZ")
    Set rstX = CurrentDb.OpenRecordset("Select * From TAB_RMZ_X")
    
    
    rstR.MoveFirst
    rstT.MoveFirst
    
    Do Until rstR.EOF
    
Start_Here:

'Debug.Print
'Debug.Print rstR!RMZ, rstT!NASS
'Debug.Print "-----------------"
        If InStr(rstT!NASS, rstR!RMZ) > 0 Then
            'Found it
            'But is it already in TAB_MRZ_X
            rstX.FindFirst "[MNO]=" & rstT!MNO & " And [RMZno]=" & rstR!RMZno
            
            If rstX.NoMatch Then
                rstX.AddNew
                    rstX!MNO = rstT!MNO
                    rstX!RMZno = rstR!RMZno
                rstX.Update
            End If
            
        End If
        
        
        If rstR.EOF = False And rstT.EOF = False Then
            rstR.MoveNext
            
        ElseIf rstT.EOF Then
            Exit Do
        End If
        
    Loop
    
    
    If rstR.EOF = True And rstT.EOF = False Then
        rstR.MoveFirst
        rstT.MoveNext
        GoTo Start_Here
    End If
    
    
Exit_Add_RMZ:

    rstT.Close: Set rstT = Nothing
    rstR.Close: Set rstR = Nothing
    rstX.Close: Set rstX = Nothing
    
    MsgBox "Done"
    Exit Function
err_Add_RMZ:

    If Err.Number = 3021 Then
    Else
        MsgBox Err.Number & vbCrLf & Err.Description
    End If
    Resume Exit_Add_RMZ
    
End Function

.

واعرف فيها ملاحظات 😁

 

جعفر

1361.RMZ02.accdb.zip

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

أظنك أجي جعفر تقصد بالملاحظات عدم التمييز بين الفروق الدقيقة في الرموز .. يعني عند وجود رمز

(+)||

فإن الكود يضيف ثلاثة رموز

(+)

(+)|

(+)||

كنت سأقترح عليك أن نزيد في البحث مسافة بعد الرمز .. يعني عندما يبحث الكود في حقل النص عن رمز (+) يبحث عنه مع وجود مسافة بعده لتمييزه عن (+)|  وعن (+)||

لأن معظم الرموز الموجودة في النص توجد بعدها مسافات للكتابة بعدها

لكن هناك عدد لا بأس به من الرموز ليس بعده مسافة لأنه في آخر السطر، وهي الرموز التي تكون في أول سطر من حقل النص

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

فهل هذا الاقتراح يفيد في تجاوز الإشكالية ويزيد من دقة أداء الكود ؟

ثم .. ما هي قصة انعكاس الرموز ؟؟

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

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

لو اعتقادي صحيح اذكر لك الطريقة!😁

 

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

أخي الكريم .. هذه الرموز ليست للفهرسة ولا علاقة لها بالكتب .. هي رموز لأمور ومعاني متعددة متعلقة بالأحاديث من حيث السند والمتن والترتيب والموضوع .. ولها مهام متعددة .. بعضها مؤقت وبعضها دائم 

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

  • أفضل إجابة

رجاء تجرب النتيجة الان 🙂

 

اصبحت الدالة هكذا:

Function Add_RMZ()
On Error GoTo err_Add_RMZ

    Dim rstT As DAO.Recordset
    Dim rstR As DAO.Recordset
    Dim rstX As DAO.Recordset
    
    Set rstT = CurrentDb.OpenRecordset("Select * From TAB")
    Set rstR = CurrentDb.OpenRecordset("Select * From TAB_RMZ")
    Set rstX = CurrentDb.OpenRecordset("Select * From TAB_RMZ_X")
    
    
    rstT.MoveFirst
    Do Until rstT.EOF
    
        rstR.MoveFirst
        Do Until rstR.EOF

'Debug.Print
'Debug.Print rstR!RMZ, rstT!NASS
'Debug.Print "-----------------"

            If InStr(rstT!NASS, rstR!RMZ & " ") > 0 Or InStr(rstT!NASS, rstR!RMZ & vbCrLf) > 0 Then
                'Found it
                'But is it already in TAB_MRZ_X
                rstX.FindFirst "[MNO]=" & rstT!MNO & " And [RMZno]=" & rstR!RMZno
            
                If rstX.NoMatch Then
                    rstX.AddNew
                        rstX!MNO = rstT!MNO
                        rstX!RMZno = rstR!RMZno
                    rstX.Update
                End If  'rstX.NoMatch
            
            End If  'InStr
        
        
            rstR.MoveNext
        Loop    'rstR
    
    
        rstT.MoveNext
    Loop    'rstT
    
    
Exit_Add_RMZ:

    rstT.Close: Set rstT = Nothing
    rstR.Close: Set rstR = Nothing
    rstX.Close: Set rstX = Nothing
    
    MsgBox "Done"
    Exit Function
err_Add_RMZ:

    If Err.Number = 3021 Then
    Else
        MsgBox Err.Number & vbCrLf & Err.Description
    End If
    Resume Exit_Add_RMZ
    
End Function

.

 

جعفر

 

1361.RMZ02.accdb.zip

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

جزاك الله خيرا أخي الكريم جعفر وأحسن إليك.. النتيجة تمام بحمد الله

جربت على ملف فيه أكثر من ألف حديث، وكانت النتيجة بحمد الله دقيقة .. بدليل أن الكود لم يدرج رموزاً أخطأت في كتابتها مع أن الفرق بينها وبين الرموز الصحيحة دقيق جدا .. فتم الأمر على أحسن وجه دون اللجوء (للحلول الغريبة 😁) فالحمد لله على تيسيره

وبخصوص انعكاس الرموز فالظاهر أنه ينبغي علي تحمل هذا الأمر مؤقتا .. فبعد الانتهاء من ملفات الوورد وتحويلها لأكسس واستخدام هذا الكود لتعبئة جدول الرموز .. سأقوم باستبدال الرموز (الغريبة) بأرقام خاصة لأن شرطي المرور أكسس يحب التعامل مع الأرقام

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

منذ ساعه, nssj said:

النتيجة تمام بحمد الله

الحمدلله 🙂

 

منذ ساعه, nssj said:

لأن شرطي المرور أكسس يحب التعامل مع الأرقام

 غير صحيح ، والصحيح ان الارقام يتم التعامل معها بطريقة اسرع في قواعد البيانات 🙂

 

اما سبب قلب الرموز ، فهي بسبب اللغة العربية ، ولكن لا تهتم بهذا التغيير ، لأن الكمبيوتر يقرأها بالطريقة الصحيحة ، كما في العمود الذي على اليمين :

012.jpg

.

والدليل ان الكود يقارن بين الحلقين ، ويأتي بالنتيجة الصحيحة 🙂

 

جعفر

  • Thanks 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