-
Posts
2982 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
117
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو Foksh
-
⭐ هدية ~ طريقة ابداعية للتحديث من خلال الانترنت ⭐
Foksh replied to Foksh's topic in قسم الأكسيس Access
أهلاً اخي الكريم ، نعتذر عن التأخير ، ولكن بسبب تعدد المشاريع لم يسعفني الوقت لاستكمال التحديثات التي وعدتكم بها ، لكن بأقرب فرصة إن شاء الله 😇 . -
المشكلة اللي بتحصل عندك سببها أن التاريخ الذي يتم إدخاله في قاعدة البيانات يتم تفسيره بشكل خاطئ بسبب اختلاف تنسيق التاريخ بين التنسيق (الشهر/اليوم/السنة) والتنسيق الذي تستخدمه (اليوم/الشهر/السنة) . ولحل هذه المشكلة تقدر تستخدم الدالة Format لتنسيق التاريخ بالطريقة الصحيحة التي تفهمها قاعدة البيانات عندك . فاقترح تعديل الكود لاستخدام Format لضمان أن التاريخ يتم إدخاله بالشكل الصحيح . جرب التعديل التالي .. Sub DuplicateRecords() Dim db As DAO.Database Dim rs As DAO.Recordset Dim newPCode As Long Dim todayDate As String Dim sqlInsertLab As String Dim sqlInsertRequest As String Dim sqlInsertTests As String ' فتح قاعدة البيانات الحالية Set db = CurrentDb() todayDate = Format(Date, "mm/dd/yyyy") ' تنسيق التاريخ بالشكل الصحيح ' جلب آخر PCode من جدول tbl_NewLab لتجنب التكرار Set rs = db.OpenRecordset("SELECT MAX(PCode) AS MaxPCode FROM tbl_NewLab") If Not rs.EOF Then newPCode = rs!MaxPCode + 1 Else newPCode = 1 ' في حالة عدم وجود سجلات End If rs.Close ' استبدال المرجع بالصيغة الصحيحة Dim currentPCode As Long currentPCode = Forms!New_Project!newRequest.Form!PCode ' إدراج السجل الجديد في tbl_NewLab sqlInsertLab = "INSERT INTO tbl_NewLab (DDate, PCode, Pname, Name_Month, C_Year, Area, Code_Month, Mon_Year) " & _ "SELECT #" & todayDate & "#, " & newPCode & ", Pname, Name_Month, C_Year, Area, Code_Month, Mon_Year " & _ "FROM tbl_NewLab WHERE PCode = " & currentPCode db.Execute sqlInsertLab ' إدراج السجل الجديد في tbl_NewRequest sqlInsertRequest = "INSERT INTO tbl_NewRequest (PCode, TCode, Date_R, Price_R, Tname_R) " & _ "SELECT " & newPCode & ", TCode, #" & todayDate & "#, Price_R, Tname_R " & _ "FROM tbl_NewRequest WHERE PCode = " & currentPCode db.Execute sqlInsertRequest ' إدراج السجل الجديد في tbl_NewTests (إذا لزم الأمر) sqlInsertTests = "INSERT INTO tbl_NewTests (TCode, TName, Price) " & _ "SELECT TCode, TName, Price " & _ "FROM tbl_NewTests WHERE TCode IN (SELECT TCode FROM tbl_NewRequest WHERE PCode = " & currentPCode & ")" db.Execute sqlInsertTests MsgBox "تم تكرار السجل بنجاح مع تحديث PCode والتاريخ.", vbInformation End Sub Private Sub أمر4030_Click() DuplicateRecords End Sub او انك تعيد تنسيق التاريخ في كمبيوترك لما يتناسب مع المطلوب تحقيقه ..
- 1 reply
-
- 1
-
-
الغاء اول حرف من قيمة الحقل تلقائيا بعد التحديث
Foksh replied to Abdelaziz Osman's topic in قسم الأكسيس Access
تفضل اخي الكريم Private Sub delz_AfterUpdate() If Len(Me.delz) > 0 Then Me.delz = Mid(Me.delz, 2) End If End Sub Private Sub Form_Load() Dim db As DAO.Database Set db = CurrentDb() db.Execute "UPDATE delz " & _ "SET delz = Mid(delz, 2) " & _ "WHERE delz IS NOT NULL AND Len(delz) > 1", dbFailOnError Set db = Nothing Me.Requery End Sub بدون تحديد الشرط 🤗 . -
الغاء اول حرف من قيمة الحقل تلقائيا بعد التحديث
Foksh replied to Abdelaziz Osman's topic in قسم الأكسيس Access
على العموم ، جرب الفكرة التالية Private Sub delz_AfterUpdate() If Left(Me.delz, 1) = "Z" Then Me.delz = Mid(Me.delz, 2) End If End Sub Private Sub Form_Load() Dim db As DAO.Database Set db = CurrentDb() db.Execute "UPDATE delz " & _ "SET delz = Mid(delz, 2) " & _ "WHERE delz IS NOT NULL AND Len(delz) > 1 AND Left(delz, 1) = 'Z'", dbFailOnError Set db = Nothing Me.Requery End Sub -
الغاء اول حرف من قيمة الحقل تلقائيا بعد التحديث
Foksh replied to Abdelaziz Osman's topic in قسم الأكسيس Access
مشاركة مع الأستاذ @أبوبسمله ، لوقرأت الكود في مشاركة سابقة في الموضوع السابق لك ، لكنت حصلت على النتيجة التي تريدها 😉 الفكرة الى حد ما مشابهة، على العموم سؤال ، هل الشرط عندك حرف Z فقط !!!! ام هناك شروط أخرى -
كود ايقاف عمل النموذج بعد عدد معين من الادخالات
Foksh replied to عبد اللطيف سلوم's topic in قسم الأكسيس Access
كلامك سليم 100% ، ولكن الهدف في عدم اغلاق قاعدة البيانات هي تجربة الفكرة . -
كود ايقاف عمل النموذج بعد عدد معين من الادخالات
Foksh replied to عبد اللطيف سلوم's topic in قسم الأكسيس Access
برأيي المتواضع ، اعتقد تحديد عدد سجلات محدد كإدخال للبيانات أمر كما أوضح أستاذنا @شايب ، يمكن تخطيه ضمن نفس الجلسة ,( حتى لو نسبة وإحتمالية الثغرة 1% ), لكنها قابلة للحدوث ، لذا أتوجه بعدم إلزام المستخدم بعدد محدد ، وأتجه لإتجاه آخر وهو عدد مرات الفتح ، أو النسخة التجريبية التي استخدمها حالياً في معظم مشاريعي والتي تعتمد على الريجستري + جوانب أخرى لمتابعة النسخة التجريبية حتى لو بعد الفورمات !!! وهذه محاولتي المتواضعة اوفسنا كود ايقاف_فوكش.accdb -
استيراد من الاكسل ⭐ هدية ~ مستورد السجلات الذكي 2025⭐
Foksh replied to Foksh's topic in قسم الأكسيس Access
-
اضافة dot فى منتصف الكلمة او بعد ثلاث خانات تلقائيا
Foksh replied to Abdelaziz Osman's topic in قسم الأكسيس Access
مشاركة مع الأساتذة ، في حدث بعد التحديث لمربع النص middledot ، استخدم الكود التالي وهو تلقائياً سيقوم باضافة "." بعد التحديث بعد 3 حروف ، او تغيير القيمة حسب حاجتك :- Private Sub middledot_AfterUpdate() Dim txt As String txt = Nz(Me.middledot.Value, "") If Len(txt) = 0 Then Exit Sub txt = Replace(txt, ".", "") If Len(txt) > 3 Then Me.middledot.Value = Left(txt, 3) & "." & Mid(txt, 4) End If Exit Sub End Sub أما عند نسخك سجلات أكثر من 1 على سبيل المثال ، فهذا الاكود في حدث عند التحميل سيقوم بإضاة "." للقيم في الحقل نفسه التي لا تحتوي على "." أساساً . Private Sub Form_Load() Dim db As DAO.Database Set db = CurrentDb() db.Execute "UPDATE Dot " & _ "SET middledot = Left(Replace(middledot,'.',''), 3) & '.' & " & _ "Mid(Replace(middledot,'.',''), 4) " & _ "WHERE middledot IS NOT NULL " & _ "AND Len(middledot) > 3 " & _ "AND Mid(middledot, 4, 1) <> '.'", dbFailOnError Set db = Nothing Exit Sub End Sub وها يضمن عدم اضافة "." للسجلات التي تحتوي أساساً على "." بعد الحرف الثالث .. dot.accdb -
شكراً لك
-
أهلاً وسهلاً بك أخي الكريم ، وبما أنك منتسب جديد ، فمن واجبي لفت انتباهك الى عدة نقاط ، منها :- 1.حاول الإبتعاد عن التسميات العربية للحقول والجداول والنماذج والعناصر والمكونات لقاعدة البيانات ( الاستعلامات - التقارير ... إلخ ) . 2. حاول أن لا تستخدم أسماء من مقطعين وإن اضطررت استخدم إشارة Under Score " _ " للفصل بين المقاطع بدلاً من استخدام المسافة . 3. ابتعد عن التسميات الني تبدأ برموز وحروف خاصة أو أرقام . 4. أيضاً لا تقم باستخدام مسميات محجوزة لآكسيس ، وللتوضيح أكثر تابع هذا الموضوع لأستاذنا @ابوخليل من هنا . 5. تذكر ان اختيار افضل إجابة - ( كما فعلت في اختيارك لمشاركتك كأفضل إجابة ) - يعني انك وجدت الحل وأن هذا الموضوع قد تم اغلاقه . أما بالنسبة لسؤالك ، فلن تستطيع تغيير نوع الحقل ما لم تقم أولاً بإلغاء العلاقة بين الحقول المرتبطة ( بين الجدولين ) !!
-
الكتابة فى مربع نص من خلال مربع قائمة او قائمة منسدلة
Foksh replied to jo_2010's topic in قسم الأكسيس Access
بناءً على ما فهمته منك ، هذه فكرتي البسيطة ,, أولاً في الكومبوبوكس الأول "مربع_تحرير_وسرد4099" ، استخدم الحدث التالي بعد التحديث :- Private Sub مربع_تحرير_وسرد4099_AfterUpdate() Me.PNAME = Me.PNAME & Me.مربع_تحرير_وسرد4099 End Sub وفي الليست بوكس "nname" ، استخدم الحدث التالي عند النقر المزدوج (على سبيل المثال أو أي حدث تريده) :- Private Sub nname_DblClick(Cancel As Integer) Me.PNAME = Me.PNAME & Me.nname End Sub الملف المرفق :- 2025.zip -
للأسف في حقل الترقيم التلقائي ، لا يمكنك اظهار القيمة ما لم تقم بتحرير أو اضافة اي قيمة في اي حقل (مربع نصي ) ، لذا بدلاً من حقل الترقيم التلقائي في الجدول ، استخدم الدالة DMax لإضافة ترقيم في الحقل ، مع ضرورة تغيير نوع الحقل من ترقيم تلقائي الى حقل رقمي . هذا والله أعلم ن ما لم يكن هناك معلومة غير هذه .
-
استيراد من الاكسل ⭐ هدية ~ مستورد السجلات الذكي 2025⭐
Foksh replied to Foksh's topic in قسم الأكسيس Access
😅 هو انتوا لسه شفتوا حاجة 🤗 -
استيراد من الاكسل ⭐ هدية ~ مستورد السجلات الذكي 2025⭐
Foksh replied to Foksh's topic in قسم الأكسيس Access
-
الف سلامة عليك أستاذ @Eng.Qassim .. ولا غنى عنك ،وأسأل الله لك الشفاء من كل سقم
-
تصفية بيانات نموذج فرعي بواسطة كومبوبوكس حسب سنة البحث
Foksh replied to فؤاد الدلوي's topic in قسم الأكسيس Access
حاولت فهم المطلوب لكن للأسف لم افهم -
سيتم اعادة بناء الفكرة لتعتمد RollBack
-
شرح مبسط لما تم تعديله :- 1. قمت بتعديل الكود لتعيين TempVars!UserLevelTemp بشكل ديناميكي بناءً على UserLevel الخاص بالمستخدم الحالي 2. تعديل الاستعلام في النموذج الفرعي frmq1 ليتعامل مع القيم المتغيرة في TempVars!UserLevelTemp الخطوة 1 : في النموذج الرئيسي frmSearch ، قمت بتعديل الكود لتعيين TempVars!UserLevelTemp بشكل ديناميكي كما في الكود التالي بعد التعديل :- Private Sub أمر1_Click() Dim UserLevelTemp As Variant UserLevelTemp = DLookup("[UserLevel]", "tbluser", "[UserNam]='" & Me.txtuser & "'") TempVars!UserLevelTemp = UserLevelTemp DoCmd.OpenForm "frmSearch" End Sub هنا يتم تعيين TempVars!UserLevelTemp مباشرة من قيمة UserLevel الخاصة بالمستخدم الحالي ، سواء كانت تحتوي على قيمة واحدة (مثل 2) أو قيم متعددة (مثل 1, 2) . الخطوة 2 : تعديل الاستعلام في النموذج الفرعي frmq1 ليصبح :- SELECT tblEmp.*, tblEmp.EmpLevel FROM tblEmp WHERE InStr(TempVars!UserLevelTemp, tblEmp.EmpLevel) > 0; شرح الاستعلام :- الدالة InStr : تبحث عن وجود EmpLevel داخل TempVars!UserLevelTemp إذا كانت النتيجة أكبر من 0 ، فهذا يعني أن EmpLevel موجود ضمن TempVars!UserLevelTemp على سبيل المثال: إذا كان TempVars!UserLevelTemp = "1, 2" و EmpLevel = 1 ، فإن InStr ستعيد 1 (لأن 1 موجود في "1, 2") إذا كان TempVars!UserLevelTemp = "2" و EmpLevel = 1 ، فإن InStr ستعيد 0 (لأن 1 غير موجود في "2") ... وهكذا اتمنى ان يكون الشرح وافي لما تم تعديله وتطبيقه .
-
تقبل الله منكم ومنا الطاعات
-
رافع الملفات ⭐ هدية ~ رافع ملفات جوجل درايف 2025⭐
Foksh replied to Foksh's topic in قسم الأكسيس Access
شرفتني مهندس @Moosak بمرورك .- 20 replies
-
- جوجل درايف
- رفع الملفات على جوجل درايف
-
(و1 أكثر)
موسوم بكلمه :
-
لا يمكنك قفل عنصر وهو قيد التركيز ، حتى لو من أي حدث ، ويجب عليك نقل التركيز لعنصر آخر لتنفيذ القفل أو عدم التمكين عليه
-
استيراد من الاكسل ⭐ هدية ~ مستورد السجلات الذكي 2025⭐
Foksh replied to Foksh's topic in قسم الأكسيس Access
لا يتم الاستيراد من قائمة تحتوي على كومبوبوكس يا صديقي ،، للأسف . -
جرب انقل التركيز لزر أو عنصر آخر قبل تعطيل العنصر الهدف ..