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

أبو إبراهيم الغامدي

أوفيسنا
  • Posts

    707
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    13

كل منشورات العضو أبو إبراهيم الغامدي

  1. وعليكم السلام ورحمة الله وبركاته.. اللهم آمين.. هذي طريقتي،، أرجو أن ترضيَك.. البرنامج.zip
  2. أهلا بك عزيزي.. لم أجلس معك يوماً! ولم أسمعك كررت شيئا! ولم أُلزمك أن تسير معيَ أبداً! إذن لاداعي لهذه المشاعر الملتهبة! هون عليك! كل ما في الأمر أنني أريد أن تصل إلى المطلوب بدون الحاجة إلى الشفرة. بدون الجدول الوسيط أنت بحاجة إلى سجل جديد في كتاب الحديث لكل تخريجة، أو كتابة أكثر من تخريجة في السجل الواحد.. وبدون رقم الكتاب لن تعرف إلى أي كتاب ينتمي الحدث.. ولهذا لم يكن باستطاعتك الوصول إلى البيانات بطريقة سليمة، لكون البيانات معرفة بطريقة غير سليمة.. ولهذا كان يلزمنا تصحيح هذا الخطأ برمجيا عن طريق الشفرة، التي ينتج عنها الجدول الوسيط.. الجدول الوسيط يقوم بربط بيانات الحديث (رقم الحديث، رقم الكتاب) مع بيانات التخريج (رقم التخريجة).. بالجدول الوسيط تستطيع عمل استعلام يجمع كتب الحديث مع تخريجاتها صوريا دون الحاجة إلى كتابتها في كل مرة..
  3. أهلا بك.. ليس بعد الآن!.. بيانات الربط تخزن في الجدول الوسيط فقط.. سبق وأن قلت "الخيارات الأخري أتحدث عنها فيما بعد" انسَ الخيارات الأخرى مؤقتا.. حاول أن تمارس إدخال البيانات وتختبر سلاسة الإدخال مع البيانات الكبيرة.. لست بحاجة إلى إخال بيانات في هذا الحقل لأن مكانه في جدول الكتب خطأ من الأصل (في علم هندسة البيانات)
  4. أهلا بك.. من الواضح أنه ليس لك دراية بقواعد البيانات! عند إضافة جداول لكتب جديدة احرص أن تكون مثل الجداول الموجودة النافذة الرئيسية بها ثلاث خيارات .. نافذة التخريجات: يمكنك هنا إضافة كتاب للتخريجة (رقم الكتاب ورقم الحديث).. لايمكنك التحديث منهنا! التعديل عن طريق ضغط الزر الخيارات الأخري أتحدث عنها فيما بعد MusndWZwayid 10.accdb
  5. أهلا بك.. قمت بحذف مشاركتي بالخطأ.. أعتذر مشاركتي كانت طلب إجراء تعديل على جدول الكتب وذلك بإضافة رقم الكتاب إلى سجل البيانات، وذلك من أجل تمييز رقم الحديث برقم مرجعه عن باقي الكتب. لأننا وبالمفهوم السهل لا نستطيع أن نحيل إلى موضع الحديث في كتب السنة مباشرة لأن التخريجة الواحدة تكون لأكثر من حديث في الكتاب الواحد! فما ظنك بالكتب الأخرى! وأمر آخر أن هذه المراجع ليست مجتمعة في جدول واحد! ولهذا السبب نحتاج إلى جدول وسيط ضرورة وليس اختيارا! يقوم بالربط بين جدول التخريجات وجدوال الكتب وذلك بإضافة رقم الكتاب أمام كل رقم تخريجة، ولهذا كانت شفرة الإجراء طويلة ومعقدة.. لهذا كان إدراج رقم المرجع ضمن بيانات الجدول ضرورةً وليس اختياراً. إذا لم تكن على استعداد لإضافة رقم الكتاب إلى جدول الكتب فلن يكون بإمكانك التعديل على البيانات مباشرة وستحتاج إلى الشفرة في كل مرة.. ولن يتحقق طلبك!
  6. أهلابك قمت بمعالجة الخطأ.. MusndWZwayid 9.accdb
  7. أهلا بك.. في هذه التجربة صار اسم الجدول الوسيط (Join_Books) ، والشفرة المعنية بإنشاء هذا الجدول تلقائيا موجودة ضمن الوحدة النمطية mdl_join_books.. الشفرة تنقسم إلى ثلاثة أقسام.. الأول لمعالجة إضافة اسم الكتاب ضمن بيانات الجدول، وأيضا توحيد بيانات الكتب وتجهيزها للقسم الثاني الثاني تحصيل السجلات التي تحتوي على بيانات التخريج المدمجة وتفكيكها إلى سجلات مستقلة حسب بيانات التخريج الثالث حذف السجلات التي المدمجة وإنشاء الجدول (Join_Books) للمعلومية.. أضفت زر أمر للنموذج (frm_7) لتشغيل الإجراء المعني بمعالجة دمج البيانات MusndWZwayid 8.accdb
  8. أهلا مسلم.. وضع البيانات بهذه الطريقة تعني باختصار أنك تريد أضافة بيانات موجودة مسبقا! Private Sub List37_Click() Form_Newstafffrm.cmdupdate.Enabled = True With List37 Form_Newstafffrm.Staff_ID.Value = List37.Column(0) Form_Newstafffrm.emp_nameEN.Value = List37.Column(1) Form_Newstafffrm.emp_nameAR.Value = List37.Column(2) Form_Newstafffrm.NationalityAR.Value = List37.Column(3) Form_Newstafffrm.NationalityEN.Value = List37.Column(4) Form_Newstafffrm.TitleJobAR.Value = List37.Column(5) Form_Newstafffrm.TitleJobEn.Value = List37.Column(6) Form_Newstafffrm.QualificationAR.Value = List37.Column(7) Form_Newstafffrm.QualificationEN.Value = List37.Column(8) Form_Newstafffrm.ID_Iqama.Value = List37.Column(9) Form_Newstafffrm.idissueplace.Value = List37.Column(10) Form_Newstafffrm.idissuedate.Value = List37.Column(11) Form_Newstafffrm.IDExbiredateH.Value = List37.Column(12) Form_Newstafffrm.idexpiredate.Value = List37.Column(13) Form_Newstafffrm.Dateofbirth.Value = List37.Column(14) Form_Newstafffrm.PassportNo.Value = List37.Column(15) Form_Newstafffrm.Passport_issueplace.Value = List37.Column(16) Form_Newstafffrm.Passport_issuedate.Value = List37.Column(17) Form_Newstafffrm.Passport_expiredate.Value = List37.Column(18) Form_Newstafffrm.personalemail.Value = List37.Column(19) Form_Newstafffrm.Addressathome.Value = List37.Column(20) Form_Newstafffrm.AddressInKSA.Value = List37.Column(21) Form_Newstafffrm.ageytxt.Value = List37.Column(22) Form_Newstafffrm.agemtxt.Value = List37.Column(23) Form_Newstafffrm.Agedtxt.Value = List37.Column(24) Form_Newstafffrm.Mobile.Value = List37.Column(25) End With End Sub الطريقة السلمة في حالتك هي هذه Private Sub List37_Click() Form_Newstafffrm.cmdupdate.Enabled = True DoCmd.OpenForm "Newstafffrm", , , "Staff_ID='" & Me.List37 & "'" End Sub
  9. أشكرك أستاذي على ثناءك ودعاءك،، وأرجو أن أكون وزملائي عند حسن ظنك..
  10. أهلا بكم.. في الحقيقة يمكن إخفاء شريط التنقل مع الجداول المباشرة! لكون الحاوية لهذه الجداول هي النماذج الفرعية! لكن لا يمكن الوصول إليها عن طريق لوحة الخصائص، بل نحتاج إلى الشفرة للوصول إلى هذه الخصيصة وغيرها. وهذه شفرتها Sub STP() Me.SubTbl.Form.NavigationButtons = False End Sub في المثال التالي قمت بالاقتصار على نموذج فرعي واحد مع إطار التبديل للتبديل بين الجداول 1390.nabil2322.accdb
  11. أعتذر عن التأخر في الرد،، وأرجو أن تكون الإجابة في هذا التعديل.. ODB21.accdb
  12. لم أقم بأي إجراء على شجرة البيانات.. لم أراعي ما يتعلق بنواة الأوفس المرفق بعد التعديل ODB.accdb
  13. عند الرجوع إلى المثال المرفق في مشارتك الأولى وجدت أن جميع النماذج في وضعية المشروط (المتحكم ) وليس المنبثق! وهذا خطأ. لا يجب استخدام النموذج المشروط إلا في حدود ضيقة جداً.. وعليه يجب إعادة هذه النموذج إلى الوضع الطبيعي.. وإذا أردت استخدام هذه النماذج كأبناء فيجب استخدام وضعية المنبثق فقط.. يمكن تمرير اسم النموذج في فرع الشجرة إلى الإجراء التالي Sub OpenForm(FormName) Dim result As Long Dim chwnd As Long DoCmd.OpenForm FormNmae chwnd = Screen.ActiveForm.Hwnd result = SetParent(chwnd, Me.Hwnd) End Sub إرفاق جدول أسماء النماذج يساعد في التطبيق...
  14. أهلا بكم .. يمكن استخدام إجراءات واجهة برمجة التطبيقات لوندوز WIN32API لتحقيق هذا الغرض الإجراء المطلوب Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long التطبيق Private Sub Command0_Click() Dim result As Long Dim chwnd As Long DoCmd.OpenForm "form2" chwnd = Screen.ActiveForm.Hwnd result = SetParent(chwnd, Me.Hwnd) End Sub Or Private Sub Command2_Click() Dim chwnd As Long DoCmd.OpenForm "form3" chwnd = Screen.ActiveForm.Hwnd SetParent chwnd, Me.Hwnd End Sub الشروط يجب أن يكون الأبناء (النماذج والتقارير) في وضعية الإنبثاق المثال mdi_with_access.accdb
  15. أهلا بك أ. أبو خليل.. نعم صدقت.. كان القصد بيان ما يمكن أن يكون حلاً ولم أستوعب.. بما أن الصورة تعتبر في هذه الحالة عنصر محسوباً فيمكن أن نضع في حدث (بعد التحديث) للحقل المؤثر الشفرة التالية Private Sub yn_AfterUpdate() Me.Recalc End Sub
  16. أهلا يك أ. عطا عن طريق زر الأمر لا أعتقد.. لكن إذا كنت تستخدم أكسس 2007 فما فوق.. يمكن أن يكون الحل في المرفق مقبولا.. azizz.accdb
  17. أهلا بكم.. لجعل الأمور أكثر سهولة ومرونة للمبتدئين.. الشفرة التالية تفي بالغرض! Option Compare Database Option Explicit Dim xp As Single, yp As Single '-- أخذ النقطة الأولية للفارة وإسنادها إلى متغير عام '-- بهذه االطريقة يمكن قبض النافذة من أي نقطة دون الشعور بعدم التركيز Private Sub FormHeader_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) xp = X yp = Y End Sub Private Sub FormHeader_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim l, t If Button = acLeftButton Then l = Me.WindowLeft + X - xp t = Me.WindowTop + Y - yp Me.Move l, t End If End Sub أو هذه أيضا '-- هذه الطريقة تتماشى مع سلوك المستخدم '-- أغلب المستخدمين يقبض النافذة من المنتصف '-- الشعور بعدم التركيز لا يكاد يلحظ Private Sub FormHeader_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim l, t If Button = acLeftButton Then l = (Me.WindowLeft + X) -(Me.WindowWidth/2) t = (Me.WindowTop + Y) - (Me.FormHeader.Height/2) Me.Move l, t End If End Sub Database1.accdb
  18. جرب نسخة 2003 من المرجح أنها تعمل! Import Data from oracle Report.zip
  19. نعم! جميعها قد أُسس لها إجراء، لكن بدأت فيها بالأسهل في التطبيق! أرجو أن تتحقق من مواضع البيانات وعناوينها لأن الأخيران فيهما انحراف! Import Data from oracle Report.zip
  20. أعتذر عن التأخير.. لن تعمل الشفرة لأنها ناقصة وهذه تكملتها Sub IAS_Out_Cs_Detail() Dim rs As DAO.Recordset Dim i As Integer Dim row, cols, col '-- data variables Dim cntr_id, cntr_name, acnt_no, iss_no, iss_typ, iss_date, crr_typ, gtotal '-- open rs to add records With CurrentDb Set rs = .OpenRecordset("IAS_Out_Cs_Detail", dbOpenDynaset) .Execute "delete * from [" & rs.Name & "]" End With '-- open text file Open App_Path & "IAS_Out_Cs_Detail.txt" For Input As #1 '-- read data from text file Do Until EOF(1) '-- read line by line Line Input #1, row '-- make condition for each layer '-- first layer If row Like "مركز*" Then cols = Split(row, vbTab) cntr_id = Right(cols(0), 4) cntr_name = cols(1) '-- second layer ElseIf row Like "الحساب*" Then cols = Split(row, vbTab) acnt_no = Split(cols(0), ":")(1) iss_no = Split(cols(1), ":")(1) iss_typ = Split(cols(2), ":")(1) iss_date = Split(cols(3), ":")(1) crr_typ = cols(13) gtotal = cols(14) '-- third layer Else cols = Split(row, vbTab) rs.AddNew rs(0) = cntr_id rs(1) = cntr_name rs(2) = acnt_no rs(3) = iss_no rs(4) = iss_typ rs(5) = iss_date rs(6) = crr_typ rs(7) = gtotal For i = 0 To UBound(cols) - 2 rs(i + 8) = cols(i) Next rs.Update End If Loop Close #1 Set rs = Nothing End Sub وهذا المرفق بعد التعديل Import Data from oracle Report.zip
  21. لا عدمنا أفكارك ولا كلت أناملك أ. جعفر،، طبعا كود اخوك ابو ابراهيم أكثرا تعقيدا.. ما يحرني أنك تتحدث وكأنك جالس بجانبي!
  22. أهلا بك.. نحن لدينا أفكاراً وإبداعاً وحيلاً كما للآخرين!
  23. أهلا بك.. أعتذر إليك إن كنت أحزنتك. في هذه المشاركة سوف أحاول مع من يتبرع من الزملاء من قراءة واستخلاص البيانات من الملفات النصية، وكيف يمكن وضع المحددات التي تساعد على ذلك.. الملف النصي: IAS_Out_Cs_Detail.txt * من الممكن جعل البيانات في جدول واحد.. يخض هذا الإجراء لصاحب العلاقة..! لكني لا أشجع عليهلكونه يتسبب في وجود كم كبير من البيانات المتكررة! - يتكون هذا الملف من ثالث طبقات من البيانات وكل طبقة منها يمكن أن تكون في جدول خاص، وهذا من الناحية الفنية أرتب لكنه مكلف من ناحية الشفرة! -- الطبقة الأولي: بيانات مركز التكلفة. -- الطبقة الثانية: بيانات أوامر الصرف. -- الطبقة الثالثة: بيانات بنود أوامر الصرف. * كيف يمكن استخلاص البانات؟ - بما أننا سنذهب إلى تقسيم البيانات إلى ثالث طبقات، فسوف نقوم بعمل التالي. -- إيجاد محدد فريد لكل طبقة (وليس للبيانات) -- تحويل البيانات في كل طبقة إلى مصفوفة بيانات وفقاً لمنط تكراري منتضم؛ إن أمكن (المصفوفة تسهل ضبط البيانات،لكن ليست شرطاً في المعالجة) -- إرسال البيانات إلى جدول البيانات * قراءة البيانات من الملف النصي هناك العديد من الطرق لقراءة البيانات من الملف النصي، من أسهلها التعليمة التالية Sub IAS_Out_Cs_Detail() Dim i As Integer Dim row, cols, col '-- open text file Open App_Path & "IAS_Out_Cs_Detail.txt" For Input As #1 '-- read data from text file Do Until EOF(1) '-- read text file line by line Line Input #1, row Loop Close #1 End Sub - أرجو التكرم يالذهاب لملف تعليمات VBA لمعرفة مدلولات هذه التعليمة *معالجة البيانات ستكون معالجة البيانات كما في الشفرة التالية Sub IAS_Out_Cs_Detail() Dim i As Integer Dim row, cols, col '-- open text file Open App_Path & "IAS_Out_Cs_Detail.txt" For Input As #1 '-- read data from text file Do Until EOF(1) '-- read line by line Line Input #1, row '-- make condition for each layer '-- first layer If row Like "مركز*" Then cols = Split(row, ":") For Each col In cols Debug.Print col Next Debug.Print String(100, "+") ElseIf row Like "الحساب*" Then cols = Split(row, ":") For Each col In cols Debug.Print col Next Debug.Print String(100, "=") Else cols = Split(row, vbTab) For Each col In cols Debug.Print col Next Debug.Print String(100, "-") End If Loop Close #1 End Sub - يوجد في هذا الملف بيانات خارجة عن الصف، سأتطرق لطريقة معالجتها عند رفع المثال * نقل البيانات للجداول التعليمات الخاصة بتقل البيانات للجداول سأشير إليها عند رفع المثال
  24. عدم الاستمرار في هذه المشاركة ليس معناه أني لن أساعدك! بل المطلوب أن تفتح مشاركة جديدة فقط! لكون هذه المشاركة قد استوفت الإجابة على السؤال المطروح.. والعمل على شيء جديد يتطلب مشاركة جديدة..
×
×
  • اضف...

Important Information