بحث مخصص من جوجل فى أوفيسنا
Custom Search
|
-
Posts
2,065 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
51
Community Answers
-
Moosak's post in مساعدة في شروط ادخال البيانات was marked as the answer
وعليكم السلام ورحمة الله وبركاته .. 🙂
استخدم الدالة Trim لحذف المسافات قبل وبعد النص في حدث بعد التحديث للحقل .
-
Moosak's post in احصاء بالعدد ومجموع المبالغ بحسب الجهة was marked as the answer
وعليكم السلام ورحمة الله وبركاته 🙂
أنشيء هذا الاستعلام :
وهذا الناتج :
وبعدها صمم تقرير مبني على هذا الاستعلام .. 🙂
احصاء بالعدد والمبلغ.rar
-
Moosak's post in تقرير واحد للبرنامج was marked as the answer
وعليكم السلام ورحمة الله وبركاته 🙂
لن تحتاج لكل هذه التقارير والاستعلامات ..
وضعت لك استعلام واحد وتقرير واحد لكل الصفوف :
والتقرير حسب الاختيار من القائمة :
درجات الطلاب.accdb
-
Moosak's post in كود لتطبيق السداد عل ى اكثر من سجل بضغطة زر واحدة was marked as the answer
وعليكم السلام ورحمة الله وبركاته 🙂
كتبت لك كود يراعي أن يكون المبلغ المدفوع أقل من أو يساوي المدفوع
وكذلك الكود يكمل على الدفع السابق في حال أنه تم دفع جزء من المبلغ سابقا..
تفضل هذا هو الكود :
Private Sub Command6_Click() Dim PayedAmount As Double, Amount As Double, Remaining As Double Dim RS As DAO.Recordset Dim SQl As String PayedAmount = Nz(Me.Text4, 0) If PayedAmount = 0 Then MsgBox "أدخل المبلغ": Exit Sub Remaining = Nz(DSum("rest", "Table1", "cod = " & [Forms]![Form1]![sh]), 0) If PayedAmount > Remaining Then MsgBox "المبلغ المدفوع أكبر من المبلغ المتبقي للسداد": Exit Sub SQl = "SELECT * FROM Table1 WHERE Table1.rest > 0 AND Table1.cod = " & [Forms]![Form1]![sh] Set RS = CurrentDb.OpenRecordset(SQl) Do While Not RS.EOF RS.Edit If PayedAmount >= RS.Fields("rest") Then Amount = RS.Fields("rest").Value RS.Fields("pye").Value = RS.Fields("pye").Value + RS.Fields("rest") If RS.Fields("rest").Value = 0 Then RS.Fields("valider").Value = True PayedAmount = PayedAmount - Amount Else RS.Fields("pye").Value = RS.Fields("pye").Value + PayedAmount If RS.Fields("rest").Value = 0 Then RS.Fields("valider").Value = True PayedAmount = 0 End If RS.Update If PayedAmount = 0 Then Exit Do RS.MoveNext Loop Me.w.Requery MsgBox "Done" Set RS = Nothing End Sub
pye.accdb
-
Moosak's post in تنسيق خلية was marked as the answer
وعليكم السلام ورحمة الله وبركاته 🙂
يمكنك الاستعانة بهذا الجدول لعمل قناع إدخال بيانات حسب المطلوب :
وحسب سؤالك فأعتقد أن هذا هو القناع المناسب :
طبعا هذا القناع إما أن تضعه في خانة قناع الإدخال للحقل في النموذج :
أو أن تضعه في خانة قناع الإدخال للحقل في الجدول.
-
Moosak's post in سؤال حول عمل الواجهات الجذابة was marked as the answer
أهلا بك أخي أمين 🙂
(تم فصل الموضوع والإشارة للموضوع الأصلي للتنظيم ) 🙂
أولا : تم إصلاح الملف ..
ثانيا : بشرح مبسط الفكرة تعتمد على مسميات الأزرار ..
فالكود يتعرف على الأزرار الرئيسية والأزرار التابعة لها حسب تسمية الزر .. هكذا حسب الصورة التالية :
لذلك في حال الزيادة أو النقصان إنتبه لتسلسل التسميات حسب النمط المتبع 🙂
صفحة رئيسية مطورة (1).rar
-
Moosak's post in فتح الشاشة الرئيسية بعد شاشة الدخول was marked as the answer
تفضل 🙂
New Microsoft Access Database (1).accdb
-
Moosak's post in مساعدة في تعديل كود خاص بصفحة النموذج was marked as the answer
إليك الكود المعدل الذي سيسمح لك بإغلاق صفحات النموذج المحددة بدلاً من إغلاق جميع صفحات النماذج المفتوحة:
Private Sub Form_Current() Dim FormCount As Integer Dim I As Integer Dim FormNamesToClose As Variant ' أضف أسماء صفحات النموذج التي تريد إغلاقها في هذه المصفوفة FormNamesToClose = Array("Form1", "Form2", "Form3") FormCount = Forms.Count For I = FormCount - 1 To 0 Step -1 If IsInArray(Forms(I).Name, FormNamesToClose) Then DoCmd.Close acForm, Forms(I).Name End If Next I End Sub Private Function IsInArray(ByVal stringToSearch As String, ByVal arr As Variant) As Boolean Dim i As Integer For i = LBound(arr) To UBound(arr) If arr(i) = stringToSearch Then IsInArray = True Exit Function End If Next i IsInArray = False End Function هنا كيف يعمل الكود المعدل:
1- مصفوفة FormNamesToClose تحتوي على أسماء صفحات النماذج التي تريد إغلاقها عند فتح النموذج الحالي. يمكنك إضافة أو إزالة أسماء النماذج من هذه المصفوفة حسب الحاجة.
2- دالة Form_Current() تقوم بالتمرير على جميع صفحات النماذج المفتوحة باستخدام خاصية Forms.Count.
3- لكل صفحة نموذج، يتحقق ما إذا كان اسم النموذج موجودًا في مصفوفة FormNamesToClose باستخدام دالة المساعدة IsInArray().
4- إذا كان اسم النموذج موجودًا في مصفوفة FormNamesToClose، يتم استخدام بيان DoCmd.Close لإغلاق تلك صفحة النموذج.
دالة IsInArray() هي دالة مساعدة تتحقق مما إذا كان السلسلة المعطاة موجودة في المصفوفة المقدمة. إنها تُرجع True إذا تم العثور على السلسلة، وFalse خلاف ذلك.
بهذا الكود المعدل، يمكنك الآن تحديد صفحات النماذج التي تريد إغلاقها عند فتح النموذج الحالي، بدلاً من إغلاق جميع صفحات النماذج المفتوحة.
ما يحتاج أخبرك من وين جبت الجواب
-
Moosak's post in تصحيح كود فى اكسيس was marked as the answer
أخي @jo_2010 أنصحك باستخدام منسق الأكواد عند كتابة مواضيعك لكي لتسهل قراءة الكود 🙂 👈🏻
وبالنسبة للحل يمكنك عكس معناها بكتابتها بعدة صيغ هكذا :
If Not IsNull(Me.PNAME) Or Me.PNAME <> "" Then أو If IsNull(Me.PNAME) = False Or Me.PNAME <> vbNullString Then
-
Moosak's post in نقل كافة السجلات من جدول إلى جدول آخر ! was marked as the answer
وعليكم السلام ورحمة الله وبركاته 🙂
Database12.accdb
-
Moosak's post in عرض الوقت بتنسيق محدد was marked as the answer
تفضل عمي @Foksh 🙂 :
Replace(Replace(Format(Time, "hh:mm:ssAM/PM"), "PM", ""), "AM", "") والنتيجة :
-
Moosak's post in الانتقال الى سجل جديد بطريقة مختلفة was marked as the answer
حياك الله أستاذ @jo_2010 🙂
بأمانة قرأت ردك والسؤال الأول أكثر من مرة ولم أفهم المراد بالضبط ، لعل الصيام مأثر علي 😅🖐🏻
ولكن قمت بعمل تعديل على قدر فهمي لطلبك 😊
وهذا شكل الكود بعد التعديل :
عند الضغط على إنتر وهناك عدة تحاليل ينتقل للتحليل التالي حتى يصل للسجل الجديد ..
وعند المواصلة على الضغط على الإنتر 3 مرات عندها ينتقل لسجل جديد في النموذج الرئيسي ..
إذا كان عدد التحاليل صفر حتى لو تم الاستمرار على مفتاح الإنتر أكثر من 3 مرات يضل المؤشر في مكانه ولا ينتقل.
JO-2024.accdb
-
Moosak's post in اخفاء حقول من تقرير بدلالة قيمة معينة was marked as the answer
وعليكم السلام ورحمة الله وبركاته 🙂
تفضل أخي @العبيدي رعد
لا تظهر بيانات إلا من كان في ذمته شيء ..
الكود يكتب في الحدث فورمات للمجموعة أو التقسيمة :
الكود :
القروض 10.rar
-
Moosak's post in البحث فى المنتدى was marked as the answer
يمكنك استخدام هذه الصفحة أيضا للبحث عن المواضيع من خلال عناوينها أو اسم الكاتب :
https://officena.net/team/mas/access.html
🙂
-
Moosak's post in إخفاء وإظهار زر أمر في نموذج آخر ... was marked as the answer
السلام عليكم 🙂
الكود صحيح .. المشكلة فقط هي أن النموذج الثاني يجب أن يكون مفتوح ليعمل الكود ..
هنا أضفت لك سطر للتحقق من أن النموذج الثاني مفتوح قبل تطبيق الكود .. ولو كان مغلق يفتحه
' للتحقق من أن النموذج الثاني مفتوح قبل تطبيق الكود If CurrentProject.AllForms("frm2").IsLoaded = False Then DoCmd.OpenForm "frm2" If Me.on = True Then Forms!frm2.btn.Visible = True Else Forms!frm2.btn.Visible = False End If
-
Moosak's post in هل هناك دالة تحول الرابط الى صورة ؟ كود للتحميل المباشر من جوجل درايف Google drive was marked as the answer
الرابط الموجود في الفورم لم يتم إعداده للمشاركة ( يطلب إذن لتحميله ) ، يجب عليك إتاحة المشاركة للتمكن من التحميل ..
هذا هو كود التحميل من الجوجل درايف :
كود للتحميل المباشر من الجوجل درايف Google drive
شرح الكود:
لتحميل الملفات من جوجل درايف بنفس الاسم والامتداد
فقط تحتاج رابط الملف كاملا وأن يكون الملف عاما (مشاركا مع الجميع)
الكود يعالج مشكلة أسماء الملفات العربية
صالح للنواتين 32بت وكذلك 64بت
يعمل في كل التطبيقات التي تستعمل vba
يوضع هذا الكود في موديول جديد
الكود:
Sub DownloadFromGD(GDriveURL As String) Dim myURL As String Dim FileID As String Dim xmlhttp As Object Dim name0 As Variant Dim oStream As Object FileID = Split(Split(GDriveURL, "/d/")(1), "/")(0) myURL = "http://drive.google.com/u/0/uc?id=" & FileID & "&export=download" Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP") xmlhttp.Open "GET", myURL, False xmlhttp.Send name0 = DECODEURL(xmlhttp.getResponseHeader("Content-Disposition")) If name0 = "" Then MsgBox "الملف غير موجود في الموقع" Exit Sub End If name0 = Split(name0, "*=UTF-8''")(1) 'split after *=UTF-8'' to get utf8 names If xmlhttp.Status = 200 Then Set oStream = CreateObject("ADODB.Stream") oStream.Open oStream.Type = 1 oStream.Write xmlhttp.responseBody oStream.SaveToFile CurrentProject.Path & "\" & name0, 2 ' 1 = no overwrite, 2 = overwrite oStream.Close End If Set xmlhttp = Nothing Set oStream = Nothing MsgBox "تم تحميل الملف في نفس مسار البرنامج باسم: " & vbNewLine & vbNewLine & name0 End Sub Function DECODEURL(varText As Variant) Static objHtmlfile As Object If objHtmlfile Is Nothing Then Set objHtmlfile = CreateObject("htmlfile") objHtmlfile.parentWindow.execScript "function decode(s) {return decodeURIComponent(s)}", "jscript" End If DECODEURL = objHtmlfile.parentWindow.decode(varText) End Function طريقة الاستدعاء (الاستخدام):
طريقة استخدام الكود مثل السطر المكتوب في الإجراء test أو يمكن وضعه عند الضغط على زر مثلا
ويتكون هذا السطر من كتابة اسم الاجراء DpwnloadFromGD ثم رابط الملف المراد تحميله بين علامتي تنصيص
Sub test() DownloadFromGD "https://drive.google.com/file/d/18jrvTxgR1QTzwm8YaJHIvsdOmqj02L2x/view" End Sub
-
Moosak's post in مساعدة في إختيار تحديد was marked as the answer
وعليكم السلام ورحمة الله وبركاته 🙂
هذا الكود لعمل تحديد الكل :
Private Sub btnSelectAll_Click() Dim strSQL As String ' SQL statement to update the "select" field to True strSQL = "UPDATE YourTableName SET [select] = True" ' Execute the SQL statement CurrentDb.Execute strSQL ' Refresh the form to reflect the changes Me.Requery End Sub وهذا لعمل إلغاء تحديد الكل :
Private Sub btnDeselectAll_Click() Dim strSQL As String ' SQL statement to update the "select" field to False strSQL = "UPDATE YourTableName SET [select] = False" ' Execute the SQL statement CurrentDb.Execute strSQL ' Refresh the form to reflect the changes Me.Requery End Sub استبدل "YourTableName" باسم الجدول لديك
واستبدل "select" باسم حقل الاختيار
تفضل أخي العزيز 🙂
الكود الخاص بعمل زر واحد لـ [تحديد / إلغاء تحديد للكل] السجلات في النموذج المستمر :
Private Sub btn_Select_Deselect_All_Click() '(الكود الذي يتم وضعه على زر (تحديد،إلغاء تحديد الكل Dim CountSelected As Long Dim TableName As String Dim SelectField As String '====================================== 'ضع هنا اسم الجدول TableName = "YourTableName" 'ضع هنا اسم حقل التحديد SelectField = "select" '====================================== 'فحص عدد السجلات المختارة CountSelected = DCount(SelectField, TableName) If CountSelected = 0 Then 'لم يتم تحديد أي سجل نشغل استعلام تحديد الكل CurrentDb.Execute "UPDATE " & TableName & " SET [" & SelectField & "] = True" Else ' هناك سجلات محددة لذلك نشغل استعلام إلغاء تحديد الكل CurrentDb.Execute "UPDATE " & TableName & " SET [" & SelectField & "] = False" End If ' تحديث البيانات في النموذج Me.Requery End Sub لا تنس كتابة اسم الجدول مكان : "YourTableName"
واسم حقل التحديد : "select"
-
Moosak's post in تجاوز (ا أ إ آ ة ه ي ى) في البحث was marked as the answer
هذه فكرتي 🙂 ..
Database.rar
-
Moosak's post in اعادة ترتيب ترقيم تسلسل السجلات was marked as the answer
تفضل أخي @Abdelaziz Osman 🙂
جعلته حقل محسوب غير مرتبط بالجدول وذلك لكي يعدل الترقيم نفسه حتى لو تم حذف السجلات ..
وهذه قيمة الحقل :
=IIf(IsNull([معرف]);"";DCount("*";"[Talabat]";"[معرف]<=" & [معرف]))
ترتيب الترقيم.accdb
-
Moosak's post in اختصار الاكواد بوحدة نمطية واستدعاءها عند الحاجه was marked as the answer
تفضل مرفقك أخي @Hamtoooo بعد تطبيق تعليمات معلمنا العود @ابوخليل 🙂
نفس الرسائل والأزرار .. وألق نظرة على محتويات الوحدة النمطية وكذلك جرب تغيير النصوص فيها ولاحظ الفرق في النموذج ..
وهذا محتوى الوحدة النمطية :
Option Compare Database Option Explicit Public Function Default_MSGBOX() 'الرسالة الموحدة MsgBox "هذه الرسالة موحدة", , Default_Title End Function Public Function Default_Title() As String ' العنوان الموحد Default_Title = "( اوفيسنا | الاصدار 3.8 )" End Function Public Function Default_Text() As String ' نص ثابت يكتب في الوحدة النمطية Default_Text = "هذا النص تم استدعائه من الوحدة نمطية" End Function Public Function DeleteBtn_Click() 'أمر عام يوضع على أزرار الحذف لحذف السجلات On Error GoTo Err_DeleteBtn_Click DoCmd.RunCommand acCmdSelectRecord DoCmd.RunCommand acCmdDeleteRecord Exit_DeleteBtn_Click: Exit Function Err_DeleteBtn_Click: MsgBox Err.Description Resume Exit_DeleteBtn_Click End Function
استدعاء الاكواد.accdb
-
Moosak's post in المطلوب عند تطابق المدينة 1 والمدينة 2 يقوم بجلب المسافة تلقائيا من الجدول was marked as the answer
تفضل 🙂
DLookUp("[المسافة]";"[Table1]";"[city1] ='"& [Forms]![Form1]![city1] &"' And [city2] ='"& [Forms]![Form1]![city2] &"' ")
test.rar
-
Moosak's post in إظهار وإخفاء الأيقونات was marked as the answer
وعليكم السلام ورحمة الله وبركاته .. 🙂
في النموذج المستمر من الصعب عمل أوامر برمجية بشكل مباشر من هذا النوع ..
والحل هو أن يتم إخراج الصور من البرنامج كملفات خارجية ويتم الإشارة إليها كرابط ..
وهذه النتيجة 🙂 :
ويمكنك إخفاء المربع الذي في اليسار (Image Source) عند الانتهاء ..
لاحظ يجب أن يكون ملف الصور بجانب البرنامج وعدم تغيير موقعه حتى لايتم فقد الرابط بينهما :
Change Image.zip
-
Moosak's post in المهام الاخيره للموظفين was marked as the answer
وعليكم السلام ورحمة الله وبركاته .. 🙂
تفضل .. ستجد طلبك في الاستعلام Last_Mission_Detail_Q
مهام الموظفين.accdb
-
Moosak's post in هل بالامكان انشاء نقش مثل نقش الهاتف was marked as the answer
الحمدلله أكتملت الفكرة والتنفيذ 🙂
عملت نموذجين .. وتبقى تكملة المشروع لتكون صفحة تسجيل دخول مكتملة 🙂
النمط الأول :
النمط الثاني :
للتحميل :
MoosaK_Pattern_Lock.accdb
-
Moosak's post in هل هذا خطأ في الكود أم لا؟ (إخفاء واجهة أكسيس) was marked as the answer
هذا السطر يتحكم بخاصية ضغط وإصلاح قاعدة البيانات عند الإغلاق ..
وشخصيا أرى أن بقائه مفعلا True في جميع الأحوال هو أمر جيد 🙂
لذلك وضعته True في الحالتين