-
Posts
4011 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
167
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو Foksh
-
ومشاركة مع أستاذنا ابو خليل فصل العدد الكسري.accdb
-
معلمنا الفاضل هذا من حسن حظي بلا شك لا شك أن ألأستاذ @Barna أنتج عمل جميل وذكي ، إلا أن فكرتي كانت بتوسيع المجال ليس إلا
-
تفضل add attachment.accdb
-
هدفي والحمد لله تم تحقيقه تم والحمد لله تعميم الفكرة بحيث يمكن استعمالها في أكثر من جدول ، وحسب الحاجة دون تقييد . أولا انشاء المديول العام :- Function CreateYearsRecords(sourceTableName As String, employeeFieldName As String, startDateFieldName As String, _ endDateFieldName As String, targetTableName As String, targetEmployeeFieldName As String, targetStartDateFieldName As String, targetEndDateFieldName As String, targetYearsFieldName As String) Dim sourceRS As DAO.Recordset Dim targetRS As DAO.Recordset Dim recordStartDate As Date Dim recordEndDate As Date Dim currentYear As Integer DoCmd.SetWarnings False DoCmd.RunSQL "DELETE " & targetTableName & ".* FROM " & targetTableName & ";" DoCmd.SetWarnings True Set sourceRS = CurrentDb.OpenRecordset(sourceTableName) Set targetRS = CurrentDb.OpenRecordset(targetTableName) Do Until sourceRS.EOF recordStartDate = sourceRS.Fields(startDateFieldName) recordEndDate = sourceRS.Fields(endDateFieldName) For currentYear = Year(recordStartDate) To Year(recordEndDate) targetRS.AddNew targetRS.Fields(targetEmployeeFieldName) = sourceRS.Fields(employeeFieldName) targetRS.Fields(targetStartDateFieldName) = sourceRS.Fields(startDateFieldName) targetRS.Fields(targetEndDateFieldName) = sourceRS.Fields(endDateFieldName) targetRS.Fields(targetYearsFieldName) = CStr(currentYear) targetRS.Update Next currentYear sourceRS.MoveNext Loop sourceRS.Close targetRS.Close Set sourceRS = Nothing Set targetRS = Nothing End Function ثانياً يمكن استدعاء الدالة كما يلي :- Call CreateYearsRecords("date1", "t1", "t2", "t3", "TEMP_DATE", "EmployeeName", "StartDate", "EndDate", "Years") بحيث يتم ادراج البيانات في جدول قابل للتغيير واسماء الحقول فيه أيضاً . Get Date.accdb
-
اعتذر منك اخوي على تجاربي التي تكاد تلمس نجاح فكرتك ، اقوم بقراءة الكود نظرياً لعدم وجودي قرب الكمبيوتر في الوقت الحالي سأقوم بتنفيذ الفكرة غداً سعياً لانجاح الفكرة ، فليس من طبعي الوقوف عند تجربة غير ناجحة والاستسلام لها. 🤗
-
تم تعديل الأكواد في المشاركة الأخيرة
-
طيب ، جرب التعديل الاخير على المديول اخي @حامل المسك Function GetYearsBetweenDatesForPerson(personName As String, startDate As Date, endDate As Date) As String Dim yearString As String Dim currentYear As Integer yearString = "" currentYear = Year(startDate) Do While currentYear <= Year(endDate) If yearString <> "" Then yearString = yearString & ", " End If yearString = yearString & currentYear currentYear = currentYear + 1 Loop ' إرجاع السلسلة المكونة من سنوات GetYearsBetweenDatesForPerson = personName & ": " & yearString End Function والاستعلام SELECT [t1] AS [اسم الشخص], [t2] AS [تاريخ البداية], [t3] AS [تاريخ النهاية], GetYearsBetweenDatesForPerson([t1], [t2], [t3]) AS [السنوات] FROM [date1]; وأخبرني بالنتيجة 😊
-
امممممم بعض التعديلات كما يلي ، ونبدأ في المديول :- Function GetYearsBetweenDatesForPerson(personName As String, startDate As Date, endDate As Date) As String Dim yearString As String Dim currentYear As Integer yearString = "" currentYear = Year(startDate) Do While currentYear <= Year(endDate) If yearString <> "" Then yearString = yearString & vbCrLf End If yearString = yearString & personName & ": " & currentYear currentYear = currentYear + 1 Loop GetYearsBetweenDatesForPerson = yearString End Function ثم الاستعلام سيكون على هذا الشكل :- SELECT GetYearsBetweenDatesForPerson([t1], [t2], [t3]) AS [السنوات] FROM [date1]; جرب و وافني بالنتيجة 😊 طبعاً سيكون الإستخدام للمديول عاماً وليس خاصاً ، حيث تستطيع استخدامه لأكثر من جدول مع تغيير اسماء الحقول والجدول في الاستعلام في كل مرة 🤗
-
عذراً في التأخر بالرد بسبب فصل الانترنت لدي فكرة اخرى مشاركة مع استاذي @Barna بحيث لا تتكرر البيانات ابداً . في مديول ضع هذا الكود :- Function GetYearsBetweenDates(startDate As Date, endDate As Date) As String Dim yearString As String Dim currentYear As Integer yearString = Year(startDate) currentYear = Year(startDate) Do While currentYear < Year(endDate) currentYear = currentYear + 1 yearString = yearString & "/" & currentYear Loop GetYearsBetweenDates = yearString End Function ثم استخدم هذا الاستعلام Sql SELECT [t1] AS [اسم الحقل], [date1].[t2] AS [البداية], [date1].[t3] AS [النهاية], GetYearsBetweenDates([t2], [t3]) AS [السنوات] FROM [date1]; 😁 أن تصل متأخراً ، خير من أن لا تصل
-
وأيضاً جرب هذا التعديل SELECT [اسم الحقل], [اسم جدول].[اسم الحقل تاريخ البداية] AS البداية, [اسم جدول].[اسم الحقل تاريخ النهاية] AS النهاية, Concat(Year([تاريخ البداية]), "/", Year([تاريخ البداية])+1, "/", Year([تاريخ البداية])+2) AS [السنوات] FROM [اسم جدول];
-
الأستاذ @Barna قام باقتراح جميل . وهذه تجربة ثانية SELECT [اسم الحقل], [اسم جدول].[اسم الحقل تاريخ البداية] AS البداية, [اسم جدول].[اسم الحقل تاريخ النهاية] AS النهاية, Concat(Year([تاريخ البداية]), "/", Year([تاريخ النهاية])) AS [السنوات] FROM [اسم جدول];
-
اخي الكريم لعدم معرفة اسماء الحقول والجدول ، هذا تصور خيالي ، واستبدل انت اسم الجدول واسم الحقول بما يناسبك SELECT [اسم حقل الإسم], Year([تاريخ البداية]) AS السنة FROM [اسم الجدول] WHERE Year([تاريخ البداية]) >= Year([تاريخ النهاية]) اذا لم تنجح ، فأرسل ملف 😊
-
الصحيح أنا ما فهمت الموضوع لأنها ليست في قاموس الرياضيات اللي اعرفها 🧐 العدد يسار الفاصلة العشرية يسمة عدد صحيح ، والذي على اليمين يسمى العدد الكسري 😊
-
رسالة في الاكسس تم استخدامه من قبل شخص آخر؟
Foksh replied to الماهر522's topic in قسم الأكسيس Access
ارسل مرفقك اخي الكريم لرؤية النماذج التي تستخدم الجدول المحدد . او انك تستخدم الجدول بدلا من استعلام لعرض البيانات في اكثر من نموذج -
أعتقد أن المشكلة تم تجاوزها بعد اكتمال التحديثات الاخيره للمنتدى. واذا استمرت جربي استخدام متصفح آخر مثل Google Chrome أو Brave وأرجح الثاني لأنه لا يظهر الإعلانات الدعائية (PopUp) في بعض المواقع واليوتيوب 😁 . فأنا عن نفسي استخدمه في الكمبيوتر والجوال كمتصفح رئيسي .
-
هذه نقطة دائماً ننوه لها بالابتعاد عن المسميات العربية للحقووول جرب اخي الكريم كتابة اسم الحقل بهذا الشكل البيانات_المستفيد استبدل الفراغ بإشارة _ واخبرنا بالنتيجة 😊
-
نعم صحيح استاذ @kanory بما النواتج ستخرج في مربعات نص فيجب ان نحددها بالإسم أو بمصفوفة متتالية text & i ابدعت استاذ @Barna للإبداع حدود حدها الفضاء 🤝
-
جزاك الله خيرا يا صديقي 🥰 هذا ما لمحت له في كلامي
-
اخي الكريم أنشئ 3 مربعات نص واجعل اسمائهم كالتالي ( Text1 و Text2 و Text3 ) استخدم الكود التالي في حدث عند التحميل للنموذج Dim db As DAO.Database Dim rs As DAO.Recordset Dim strSQL As String Dim formName As String Dim totalSalary As Double strSQL = "SELECT [اسم العامل], SUM(راتب) AS مجموع_الرواتب FROM جدول1 GROUP BY [اسم العامل];" formName = Me.Name Set db = CurrentDb Set rs = db.OpenRecordset(strSQL) Do While Not rs.EOF If rs![اسم العامل] = "محمد" Then Forms(formName).Controls("Text1").Value = rs!مجموع_الرواتب ElseIf rs![اسم العامل] = "علي" Then Forms(formName).Controls("Text2").Value = rs!مجموع_الرواتب ElseIf rs![اسم العامل] = "كمال" Then Forms(formName).Controls("Text3").Value = rs!مجموع_الرواتب End If rs.MoveNext Loop rs.Close Set rs = Nothing Set db = Nothing ونصيحة من أخوك ، ابتعد عن المسميات العربية في اسماء الحقول والكائنات ... الخ
-
، مع انك لو قرأت الكود الذي هو أصلاُ في مشروعك وليس مني لعرفت اين حل مشكلتك ,, على العموم الإضافة بسيطة جداً ، تفضل Me.nn1 = "A" & Me.nn add attachment.accdb
- 1 reply
-
- 1
-
-
تابع صديقي العزيز 20240229_203935.zip
-
الفكرة حالياً قد تكون صغيرة ، ولكن اذا توسعت فيها بعدد الاسماء يا صديقي سيكون الأمر طويلاً , على العموم تنفيذ الفكرة تفضل مثال.accdb
-
افتح موضوع جديد ، حتى لا يتم اغلاق الموضوع لمخالفة قواعد المنتدى
-
في التعديل التالي قمت بتجربة الحفظ لنسختين لنفس الملف بمكانين مختلفين بدون شبكة ( لعدم وجود شبكة داخلية عندي ) ، في الكود تم انشاء متغير اسمه filepathLocal ، فقط استبدل في المسار الجزء التالي "D:\" الى مسار المجلد المستهدف على الشبكة بعنوانه الكامل add attachment.accdb