-
Posts
9907 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
404
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو jjafferr
-
تحميل ملف من موقع عن طريق رابط ثابت مزود في البرنامج مسبقاً
jjafferr replied to sandanet's topic in قسم الأكسيس Access
السلام عليكم موضوع التحديث كبير وفيه عدة نقاط والتي يجب النظر فيها ، مثلا: 1. تحديث FE فقط ، 2. تحديث FE ، وعمل تغيير على الجداول. خلينا في النقطة الاصعب والاهم ، وهي انزال النسخة الاحدث من الموقع كنتم 3 محترفين في عمل هذا الموضوع ، وانت قررت ان الخطوة التالية "معقدة بعض الشيء بالنسبة" فأرجو من اخي @Shivan Rekany و اخي @أبو عبدالله الحلوانى ان يتطوعوا لهذا العمل (او يعتذروا) ، وإلا فأنا مستعد ان شاء الله جعفر -
السلام عليكم شكرا أخوي ابو خليل ، فانت شجعتني ان اقوم بأخذ البيانات من النموذج الفرعي ، بدل زيارة الجدول ، وهذه ستكون اسرع الطرق عملت زر جديد ، ووضعت عليه هذا الكود: Private Sub cmd_Search2_Click() On Error GoTo error_Capture2 تابع15.Requery Dim rst As DAO.Recordset Dim rst2 As DAO.Recordset Set rst = Me.تابع15.Form.RecordsetClone 'إيرادات rst.Filter = "[نوع السند]='إيرادات'" rst.Sort = "[رقم السند]" Set rst2 = rst.OpenRecordset Me.Erad_From = rst2![رقم السند] rst2.MoveLast Me.Erad_To = rst2![رقم السند] 'اجل rst.Filter = "[نوع السند]='اجل'" rst.Sort = "[رقم السند]" Set rst2 = rst.OpenRecordset Me.Aajel_From = rst2![رقم السند] rst2.MoveLast Me.Aajel_To = rst2![رقم السند] 'مصاريف rst.Filter = "[نوع السند]='مصاريف'" rst.Sort = "[رقم السند]" Set rst2 = rst.OpenRecordset Me.Masareef_From = rst2![رقم السند] rst2.MoveLast Me.Masareef_To = rst2![رقم السند] 'سداد rst.Filter = "[نوع السند]='سداد'" rst.Sort = "[رقم السند]" Set rst2 = rst.OpenRecordset Me.Sadad_From = rst2![رقم السند] rst2.MoveLast Me.Sadad_To = rst2![رقم السند] Exit_error_Capture2: rst.close: Set rst = Nothing rst2.close: Set rst2 = Nothing Exit Sub error_Capture2: If Err.Number = 3021 Then MsgBox "لا توجد بيانات" Resume Exit_error_Capture2 Else Debug.Print Err.Number MsgBox Err.Number & vbCrLf & Err.Description End If End Sub جعفر 688.1.لازام نطوره - Copy.mdb.zip
-
مثل ما قلت لك ، وضعت الكود على زر البحث ، بكرة ان شاء الله جربه على بياناتك الجديدة ، واخبرنا النتيجة 688.لازام نطوره.mdb.zip
-
أخي طارق ، انا وانت لا نتكلم على نفس الموجه ، لهذا السبب تضيع الكثير من التفاصيل ولكن هذه المرة وبعد عناء ، اعتقد بأني فهمت اللي تريد هل تريد نسخ البيانات هكذا: . جعفر
-
عفوا ما فهمت قصدك ، لهذا السبب قلت لك من البداية اعطني مثال والكود يجب وضعه على زر البحث ، وخطأ مني ان وضعته على حدث تحميل النموذج اعمل التغيير ، وشوف اذا لازالت المشكلة موجودة. جعفر
-
طبعا سيكون هناك اكثر من طريقة لعمل المطلوب ، وانا اخترت الطريقة الاسهل لي تفضل الكود ، وقد اعدت مسمى الحقول من والى: Private Sub Form_Load() Me.Form.Caption = DLookup("[user]", "fbi") Dim rst As DAO.Recordset 'إيرادات mySQL = "Select [رقم السند]" mySQL = mySQL & " From السندات" mySQL = mySQL & " Where [نوع السند]='إيرادات'" mySQL = mySQL & " And التاريخ>=#" & Me.n1 & "#" mySQL = mySQL & " And التاريخ<=#" & Me.n2 & "#" mySQL = mySQL & " Order By [رقم السند]" Set rst = CurrentDb.OpenRecordset(mySQL) rst.MoveLast: rst.MoveFirst RC = rst.RecordCount Me.Erad_From = rst![رقم السند] rst.MoveLast Me.Erad_To = rst![رقم السند] 'اجل mySQL = "Select [رقم السند]" mySQL = mySQL & " From السندات" mySQL = mySQL & " Where [نوع السند]='اجل'" mySQL = mySQL & " And التاريخ>=#" & Me.n1 & "#" mySQL = mySQL & " And التاريخ<=#" & Me.n2 & "#" mySQL = mySQL & " Order By [رقم السند]" Set rst = CurrentDb.OpenRecordset(mySQL) rst.MoveLast: rst.MoveFirst RC = rst.RecordCount Me.Aajel_From = rst![رقم السند] rst.MoveLast Me.Aajel_To = rst![رقم السند] 'مصاريف mySQL = "Select [رقم السند]" mySQL = mySQL & " From السندات" mySQL = mySQL & " Where [نوع السند]='مصاريف'" mySQL = mySQL & " And التاريخ>=#" & Me.n1 & "#" mySQL = mySQL & " And التاريخ<=#" & Me.n2 & "#" mySQL = mySQL & " Order By [رقم السند]" Set rst = CurrentDb.OpenRecordset(mySQL) rst.MoveLast: rst.MoveFirst RC = rst.RecordCount Me.Masareef_From = rst![رقم السند] rst.MoveLast Me.Masareef_To = rst![رقم السند] 'سداد mySQL = "Select [رقم السند]" mySQL = mySQL & " From السندات" mySQL = mySQL & " Where [نوع السند]='سداد'" mySQL = mySQL & " And التاريخ>=#" & Me.n1 & "#" mySQL = mySQL & " And التاريخ<=#" & Me.n2 & "#" mySQL = mySQL & " Order By [رقم السند]" Set rst = CurrentDb.OpenRecordset(mySQL) rst.MoveLast: rst.MoveFirst RC = rst.RecordCount Me.Sadad_From = rst![رقم السند] rst.MoveLast Me.Sadad_To = rst![رقم السند] rst.close: Set rst = Nothing End Sub جعفر 688.لازام نطوره.mdb.zip أخي ابو عبد الله انا فكرت في طريقتك ، وبهذه الطريقة يجب علينا زيارة الجدول مرتين لكل نوع من انواع السجلات ، وعندنا اربع سجلات ، فمعناه عندنا 8 زيارات للجدول لأخذ القيم المطلوبة ، ولكنك تأتي بمعلومة واحدة كل مرة بينما الطريقة التي عملتها انا تقوم بـ 4 زيارات فقط ، ولكنها تأتي ببيانات اكثر من بياناتك ، ثم نصفيها والطريقة الافضل هي ان لا نقوم بأي زيارة للجدول ، فالبيانات موجودة في النموذج الفرعي ، وما علينا إلا ان نستخرجها منها جعفر
-
وعليكم السلام أخي وضاح اعطنا مثال لوسمحت بارقام من قاعدة بياناتك جعفر
-
مشكلة في عمود تحرير وسرد داخل مربع قائمة
jjafferr replied to عبد الله قدور's topic in قسم الأكسيس Access
وعليكم السلام اخي عبدالله انا اعتذر منك ، فلم افهم المطلوب ، وياريت مثال توضيحي جعفر -
تحميل ملف من موقع عن طريق رابط ثابت مزود في البرنامج مسبقاً
jjafferr replied to sandanet's topic in قسم الأكسيس Access
السلام عليكم شباب انا ساكت واستمتع بالتطورات ، لكن مخي يمخخ وراح بعيد لكيفية الاستفادة من هذه الخطوة مادمتم قد قطعتوا المشوار في هذا الطريق البديع (شكرا أخي أوس على الفكرة والكود ، ابو عبدالله وشفان على تعديل الكود) ، فبدل ان ابدأ من البداية ، سوف اضع امامكم الفكرة اللي على بالي ، راجيا منكم بلورتها برمجيا خلينا نتوسع في الفكرة شوي ، لتشمل احتياجات المبرمج ، فاللي على بالي هو: 1. البرنامج يدخل على مجلد معين في الموقع (وحاليا كلامنا عن Google Drive) (كما هو الحال الآن) ، ويكون فيه ملف نص txt او xml ، ويُنزل هذا الملف ، 2. هذا الملف يكون فيه اسماء برامجي ، ورقم النسخة الموجودة ، واسم مجلد الموقع الذي فيه هذه البرامج (مجلد آخر في Google Drive ، يعني اعمل مجلد لكل برنامج من برامجي) ، (طبعا نستطيع ان نضيف تاريخ من ، تاريخ الى ، نوع البرنامج: Full او Demo او Activation ، و....) ، والنص يكون هكذا مثلا : Enquiry_Book,2.0,0B9STtJY2DhAoQ1JET3F5N3NiMDQ myAccounting,1.5,0B9STtJY2DhAoQ1JET3F5N3Nuwiu Archiving_Goods,5.23,0B9STtJY2DhAoQ1JET3F5Nlujhft 3. البرنامج يُنزل هذا الملف ويقرأه ، ويقارن نسخة البرنامج (سيكون هناك جدول خاص في البرنامج ، وبه رقم نسخة البرنامج) ، 4. البرنامج سيقارن رقم النسخة من الجدول ، مع رقم نسخة البرنامج الموجودة في ملف النص ، 5. اذا كان رقم النسخة الموجودة في الملف/الموقع اكبر من النسخة الموجودة في البرنامج ، فيعطي رسالة للمستخدم بأنه هناك نسخة احدث للبرنامج ، وسيقوم بإنزالها وتنصيبها ، 6. البرنامج سيقوم بإستخدام نفس الكود اعلاه (طبعا مع تغييرات بسيطة اذا دعى الامر ، او نجعل الكود كوحدة نمطية نستطيع استعمالها لإنزال مختلف الملفات من الموقع) ، ويُنزل البرنامج. بهذه الطريقة المبرمج يستطيع ان يُحدث برامجه عالميا ، وبدون الذهاب الى مكتب المستخدم مجرد فكرة جعفر -
اخي طارق شو الفرق بين هذا الموضوع ، وهذا صحيح العنوان غير ، ولكن المطلوب وحتى المرفق هو نفسه!! جعفر
-
حياك الله اخي طارق يمكنك جلب بيانات الاكسل الى الاكسس ، ثم القيام بالعمل مثل ما عملته لك ، اذا تلاحظ في الاستعلام ، فانا كررت نفس العملية لجميع الحقول ، فجرب القيام بذلك ، واذا صادفتك مشكلة ، فانشاءالله تجد المساعدة منا جعفر
-
عفوا هل انزلت المرفق في مشاركتي الاخيرة؟
-
وعليكم السلام تفضل الاشارة " يمكن الاشارة اليها برقمها ، والذي هو (chr(34 وهذا لباقي ارقام وحروف الكمبيوتر: http://www.asciitable.com/ فعليه ، نستخدم الامر Replace لإزالة هذه الاشارات ، هكذا: Field1: Replace([Field_xyz],chr(34),"") والنتيجة جعفر 687.tarek.accdb.zip
-
الكود مافيه شيء 1. هذا معناه ان الواجهة ليست متصلة دائما بالجداول ، وانما يتم الاتصال وقت حفظ البيانات ، اذا كان هذا صحيح ، فالافضل ان يكون عندك من بداية تشغيل البرنامج نموذج مخفي فيه بيانات من جدول , ويمكن ان يكون جدول فيه اسم/رقم البرنامج فقط ، المهم ان يكون الاتصال بين الواجهة والخلفية مستمر وغير منقطع من بداية تشغيل البرنامج ، 2. ولو انه سؤال سخيف ، هل برنامجك على نفس القرص الذي عليه نظام السيرفر؟ من المهم جدا ان لا تضع قاعدة بياناتك في القرص الذي عليه نظام الكمبيوتر، الوندوز ، سواء على السيرفر او على اي كمبيوتر آخر ، نعم انا قلت قرص ولم اقل partition ، يعني اذا القرص فيه C و D و E ، فلا تضع البرنامج على اي واحد منهم ، وانما ضعه على قرص آخر ليش؟ لاحظ الكمبيوتر او اللابتوب ، وبدون ان تشتغل عليه ، تلقى ضوء القرص دائما يولع وينطفئ ، هذا معناه ان نظام الكمبيوتر ، الوندوز ، يقوم بالعديد من الاعمال في الخلفية ، واذا النظام اعطى امر لتعديل شيء معين فيه ، وفي نفس الوقت قمت انت بطلب شيء معين في قاعدة بياناتك (مثل استعلام او حفظ بيانات او ...) ، ولآن النظام وبرنامجك على نفس القرص ، فالكمبيوتر سيجعل برنامجك ينتظر الى ان ينتهي من امر النظام ، بينما اذا كان برنامجك في قرص مستقل ، فـ CPU سيعطي الامر لكل قرص لعمل اوامره الخاصة به 3. تأكد ان الحقول التي فيها معيار في الاستعلام او في النموذج ، تأكد انها مفهرسة في الجدول ، فالفهرسة تجعل حجم البرنامج اكبر شوي ، ولكنها تجعل التعامل مع بيانات الجدول اسرع الاشياء اللي قلتها: ضغط واصلاح BE و FE ، مكان وجود البرنامج على القرص ، والفهرسة ، هذه جميعا لي تجارب معاها جعفر
-
تفضل ويجب فتح التقرير من النموذج. وللعلم ، برنامجك لا يوجد فيه إلا اسم واحد فقط. جعفر 680.الاجازات - Copy.accdb.zip
-
-
وعليكم السلام تفضل ، ضع هذا الكود على زر التعديل في النموذج الفرعي: Me.Parent.الاسم = Me.Phone Me.Parent.مربع_تحرير_وسرد65 = Me.Country Me.Parent.الادارة = Me.City ولكن: اسماء الحقول في النموذج الرئيسي والنموذج الفرعي ، ماشاءالله تفتح النفس للخطأ فنصيحتي ان تعدل فيهم مادام البرنامج في اوله جعفر
-
وعليكم السلام 1. اعمل ضغط واصلاح لبرنامج البيانات BE ، وكذلك لبرنامج الواجهة FE ، 2. واذا حبيت ، خلينا نشوف الكود ، واللي ممكن نتوصل الى شيء يفيدك. جعفر
-
السلام عليكم وتكملة لإجابة أخي أبو عبدالله في صفحة كود الاكسس ، اعمل بحث لكلمة KeyCode ، وسترى اسماء حروف التي على الكيبورد ، مثل (وهذه نسخة من مساعد الاكسس) : vbKeyEscape vbKeySpace vbKeyPageUp vbKeyPageDown ... normal keys: vbKeyA vbKeyB vbKey8 vbKey9 ... numeric keypad: vbKeyDecimal vbKeyDivide ... function keys: vbKeyF10 vbKeyF11 . والرابط التالي يعطيك اسم الزر ورقمه: https://msdn.microsoft.com/en-us/library/0z084th3(v=vs.90).aspx والآن ، وفي الاكسس ابحث عن Form_KeyDown ، وسترى كود مشابه وعليه ، لتعطيل اي زر ، نستعمل رقمه ، كما ذكره اخي ابو عبدالله ، او كما هو في الاكسس ، هكذا Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKeyF11 KeyCode = 0 Case 16 'vbKeyShify KeyCode = 0 End Select End Sub . والآن الى الشيء الاهم: لما نكون في النموذج ، ونكون نكتب معلومة في حقل نص/مذكرة ، ولا نريد من المستخدم كتابة اشارة التقسيم "/" مثلا ، لذا يجب ان يصطاد النموذج هذا الزر قبل ان يدخل في النص ، لذا يجب عليك ان تعدل في اعدادت النموذج وتجعل اعداد KeyPreview=Yes . او تستعمل حدث تحميل النموذج ، وتضع عليه كود التفعيل اعلاه: Private Sub Form_Load() Me.KeyPreview = True End Sub جعفر
-
تستطيع ان تستعمل الكود الذي اعطيتك في آخر مشاركة ، مع إضافة حقل Auto_Date في الجدول (كما اشرت له سابقا) ، بحيث تحصل على ارقام تسلسل لكل سنه بصيغة 1 2 3 ... 100 101 جعفر
-
وعليكم السلام سؤال: 1. هل قصدك ان الرقم المسلسل يبدأ من اليوم الى ما لا نهاية من السنوات ، او 2. الرقم المسلسل يبدأ سنويا؟ اذا جوابك كان رقم 2 ، فيجب وجود حقل في الجدول فيه معلومة عن تاريخ ادخال السجل ، وانا دائما يكون عندي حقلين في جميع الجداول اللي اعملها: Auto_ID : ترقيم تلقائي ، Auto_Date : نوع تاريخ ، ونضع القيمة الافتراضية التالية في الجدول: Now بهذه الطريقة ، يكون كود الترقيم: If Len(Me.Seq & "") <> 0 Then Exit Sub Me.Seq = Nz(DMax("[Seq]", "tb1", "year([Auto_Date])=" & Year(Now)), 0) + 1 جعفر 679.1.ترقيم جديد كل سنة جديدة وبجداول جديدة.accdb.zip
-
طلب كود حذف الحروف والمسافات والإبقاء على الأرقام فقط
jjafferr replied to حامل المسك's topic in قسم الأكسيس Access
السلام عليكم بما ان أخي شفان جاء بكود اخونا أبو ابراهيم الغامدي ، فاليك التغيير المطلوب لحل مشكلتك: Function GetNumbersOnly(SText) Dim Numbers if len(SText & "")=0 then GetNumbersOnly="" exit function end if For i = 1 To Len(SText) If IsNumeric(Mid(SText, i, 1)) Then Numbers = Numbers & Mid(SText, i, 1) End If Next GetNumbersOnly = Trim(Numbers) End Function جعفر -
تحميل ملف من موقع عن طريق رابط ثابت مزود في البرنامج مسبقاً
jjafferr replied to sandanet's topic in قسم الأكسيس Access
السلام عليكم شباب أخي أوس ، خلينا من اللف والدوران ، والاشارة بين الروابط إذن الفكرة ان كل يرنامج سيكون لديه الصلاحية في الدخول لهذه الصفحة وانزال البرنامج المرفق فيها ، بغض النظر عن الرابط ، اذا الجواب نعم ، ضع برنامجك في موقع معين ، واعطنا صلاحية تغيير الملف ، وخلينا نجرب عليه جعفر -
وعليكم السلام شوف الرابط التالي ، قد يفيدك جعفر
-
أخي محمد المفروض ان تختار الجواب الاصح ، كأفضل مشاركة ، ولا تختار مشاركتك!! ولقد سبق ان قمت بنفس الشيء في مشاركة سابقة ايضا جعفر