اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

Foksh

الخبراء
  • Posts

    2,361
  • تاريخ الانضمام

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

  • Days Won

    85

كل منشورات العضو Foksh

  1. فعلا الكود يعمل على نظام 32 بكفاءة ، لكن على نظام 64 فلا يعمل عند إضافة الجزء Ptrsafe كما حاول الأستاذ @عبد اللطيف سلوم 😉 . لربما موضوع أستاذنا جعفر واسع النطاق وأساس الإجابة كما تفضل استاذ خليفة .
  2. لما شرحته في طلبك ، ارفق ملف ليتم العمل عليه 😊
  3. تفضل أخي الكريم @أبو محمد سعيد ، هذا السطر :- Like "*" & [Forms]![Form_Name]![Text_Box] & "*" وهذا مثال تجريبي للفكرة Search By Like.accdb
  4. للأسف ليس لي تجربة حقيقية مع SQL Server لأخدمك بها
  5. وعليكم السلام ورحمة الله وبركاته أخي الكريم ، بالنسبة للأوفيس 365 فأنا لم أجربه للأسف كثيراً ومعتمد على 2016 لاستقراره وعدم مواجهتي لأي مشاكل عند استخدامه . أعتقد هي المشكلة في أوفيس 365 , وعل أحد الأساتذة والأخوة تجربة الكود على إصدار 365 لمن يملكه ! وإفادتنا بالنتيجة
  6. استكمالاً لما سبق في النموذج Home 👆 :- نستكمل العمل لضبط الوقت المتبقي ، و اليوم سنضيف وقت صلاة العشاء وما يتبعه كما يلي :- ✨ في الدالة Salawat داخل النموذج Home ، سنضيف السطرين المسؤولين عن إدراج وقت صلاة العشاء و وقت الإقامة . Me.isha = Format(GetTimes(Me.longitude, Me.latitude, Me.timezone, "Eshaa", Me.tx, dt, mydate), "hh:mm AM/PM") Me.Ish_Eq = Format(DateAdd("n", 10, CDate(Me.isha)), "hh:mm AM/PM") حيث سيكون وقت الإقامة 10 دقائق بعد نهاية الأذان . ✨ في حدث Form_Timer للنموذج Home سنقوم بحجز المتغير [ishaTime As Date] من نوع Date لصلاة العشاء وقيمته [ishaTime = CDate(Me.isha)] ، والحدث الذي سيقوم باحتساب الوقت المتبقي لموعد صلاة العشاء ؛ ليصبح الكود للحدث كما يلي :- Private Sub Form_Timer() On Error Resume Next Dim tfajr As Date, tzohr As Date, tasr As Date, tmagrib As Date, tisha As Date Dim dt As Integer Dim currentTime As Date, nextPrayerTime As Date, timeLeft As Date Dim hoursLeft As Integer, minutesLeft As Integer, secondsLeft As Integer Dim fajrTime As Date, zohrTime As Date, Country_Name As String, ishaTime As Date If Me.daylight = True Then dt = 1 Else dt = 0 End If tfajr = GetTimes(Me.longitude, Me.latitude, Me.timezone, "fajr", Me.tx, dt, Date) currentTime = Time fajrTime = CDate(Me.fajr) zohrTime = CDate(Me.zohr) ishaTime = CDate(Me.isha) Country_Name = DLookup("[city_name]", "City", "ID=" & [city_name]) If currentTime < fajrTime Then Txt_Pry_Name.Value = "الفجر" nextPrayerTime = fajrTime ElseIf currentTime < zohrTime Then Txt_Pry_Name.Value = "الظهر" nextPrayerTime = zohrTime ElseIf currentTime < ishaTime Then Txt_Pry_Name.Value = "العشاء" nextPrayerTime = ishaTime Else Txt_Pry_Name.Value = "الفجر" nextPrayerTime = DateAdd("d", 1, fajrTime) End If If currentTime < nextPrayerTime Then timeLeft = nextPrayerTime - currentTime Else timeLeft = DateAdd("h", 24, nextPrayerTime) - currentTime End If hoursLeft = Hour(timeLeft) minutesLeft = Minute(timeLeft) secondsLeft = Second(timeLeft) If Me.Txt_Time_Count = "00:00" Then Me.Txt_Time_Count = "00:00:59" Me.Txt_Time_Count = Format(hoursLeft, "00") & ":" & Format(minutesLeft, "00") & ":" & Format(secondsLeft, "00") Else Me.Txt_Time_Count = Format(hoursLeft, "00") & ":" & Format(minutesLeft, "00") End If Me.Caption = Country_Name & " " & "بقي لصلاة " & Txt_Pry_Name & " " & Txt_Time_Count & " تقريباً" & " ، في مدينة " If Time() = tfajr Then MsgBox "حان الآن موعد أذان الفجر", , "" End If End Sub Salawat.accdb يتبع ... 👈
  7. جرب هذا التعديل أخي الكريم ، بعد تجربته عندي طبعاً أعتقد أنه مطلبك قاعده بيانات للتجارب - Copy - Copy.mdb
  8. دي تحط تحتها 600 خط أحمر . هو مشروع جميل وفكرته حلوة بالنسبة لي ، ولكنه سيستغرق وقت وجهد طويل فعلاً ، لذا انصحك بانشاء الجداول بدايةً وباتباع اسلوب محدد وهو :- لا تستخدم أسماء عربية في مسميات الحقول . لا تستعمل المسافات بين الأسماء . لا تستعمل اسماء حقول محجوزة للبرنامج مثل ( Name,Date,To,From ..... إلخ ) لا تستعمل رموز ( #، @،$،& .... إلخ ) في مسميات الحقول . لا تستعمل الأرقام في أسماء حقول الجداول أو تبدأ بها . دي بعض الأساسيات بالنسبة لي اللي لازم أتبعها في تأسيس الجداول ، ثم اعتماد الحقل الرئيسي أو اللي لازم اربط فيه الأمور ببعضها ، وهنا هيكون رقم الكتاب المفتاح الفريد أو الغير مكرر . ابتدي وارفع ملفك ونتابع مع بعض لأنه طبعاً مستحيل يكون كل اللي انت وضحته في جلسة وحدة . بالتوفيق
  9. نعم أخي @Zooro1 . حتى تكون الفكرة واضحة
  10. أخي الكريم ، من يقدم المساعدة لا يعلم ما هو مقصودك بـ "مش شغال ؟؟؟؟؟؟؟؟" دون ان تطرح المشكلة ؟؟؟ وإن كان مقصدك بعدم اجراء وتنفيذ امر الطباعة !!!! فذلك لعدم وجود امر الطباعة DoCmd.PrintOut اما هذا السؤال :- فاعتقد حله كود اغلاق التقرير بعد امر الطباعة DoCmd.Close acReport, "SeparetrBySelection" مساهمة مع الأخ @Lover Karo 👍
  11. توضحت الفكرة .. اليك حلين اثنين واختر ما تريده . الأول لو كان الإسم أكبر من 4 مقاطع :- Private Sub comb1_Click() Dim parts() As String parts = Split(txtNm.Value, " ") If UBound(parts) > 3 Then MsgBox "النص أكبر من 4 مقاطع" Exit Sub End If name1 = parts(0) name2 = parts(1) name3 = parts(2) name4 = parts(3) End Sub والثاني تحسباً لو كان الإسم أقل من 4 مقاطع :- Private Sub comb1_Click() Dim parts() As String parts = Split(txtNm.Value, " ") If UBound(parts) > 3 Then MsgBox "النص أكبر من 4 مقاطع" Exit Sub ElseIf UBound(parts) < 3 Then MsgBox "النص أصغر من 4 مقاطع" Exit Sub End If name1 = parts(0) name2 = parts(1) name3 = parts(2) name4 = parts(3) End Sub جرب واخبرني بالنتيجة 😊
  12. للعلم اخي الكريم ، التعديل على برنامج جاهز ليلبي حاجتك قد يستغرق وقت أطول من بداية تصميمه من البداية 😅
  13. حالياً لاني متابع من الموبايل ، اكتب لي بشرح وافي ( ولا تبخل بالشرح الواضح ) الفكرة اللي متخيلها للبرنامج من لحظة أول نموذج ..... الخ 😅
  14. تفضل أخي الكريم Scanner DLL.accdb ارسل الكود الذي لديك لتجربته ومحاولة فهم سلوكه
  15. الصورة من ويندوز 10 وأوفيس 2016 .
  16. أخي @Zooro1 ، ربي يسلمك من كل مكروه لنبدأ غداً إن شاء الله في توضيح بعض النقاط والأساسيات ثم البدء بتصميم الجداول .
  17. تفضل أخي @SAROOK ، تم التعديل على مديول المرفق وتوسيعه ليشمل كلمة "بن" أينما وردت بين مقاطع الإسم ، في الكود التالي :- Public Function qsplit(FullName As String, i As Integer) As String Dim parts() As String Dim j As Integer Dim namePart As String parts = Split(FullName, " ") For j = 0 To UBound(parts) - 1 If InStr(parts(j), "بن") > 0 Then parts(j) = parts(j) & " " & parts(j + 1) parts(j + 1) = "" End If Next j Dim count As Integer For j = 0 To UBound(parts) If parts(j) <> "" Then If count = i Then qsplit = parts(j) Exit Function End If count = count + 1 End If Next j End Function مع بقاء الإستدعاء كما هو في الملف المرفق لك ، وهذا ملفك بعد التعديل :- Splite Names.accdb
  18. هذه الجملة كفيلة بالإجابة وهي ( لا يمكن ) لوجود علاقة بينهم .
  19. أخي @الحياري ، جرب هذا الملف المرفق بنقله إلى أحد المسارات التالية حسب الويندوز لديك :- C:\Windows\System (Windows 95/98/Me), C:\WINNT\System32 (Windows NT/2000), or C:\Windows\System32 (Windows XP, Vista, 7, 8, 8.1, 10). twain_32.zip وأخبرني بالنتيجة إن كانت هكذا ؟
  20. ربي يسلمك من كل مكروه أخي @ابو العزايم ،، أعتذر عن التأخير ، وبالنسبة لطلبك ، انظر لهذا التعديلات في التقرير Copy . وأخبرني بالنتيجة Ac Source.accdb
  21. سلمك الله مهندس قاسم 🥰
  22. تفضل أخي @Bshar ، تم الإستعانة بنموذج مؤقت Temp ، لإدراج قيم الفلترة فيه ومن ثم انشاء تقرير مبني على هذا الجدول . وهذا الكود ليقوم بتنفيذ المهمة :- Private Sub Rep_Btn_Click() ApplyFilter DoCmd.SetWarnings False DoCmd.RunSQL "DELETE FROM Temp" DoCmd.SetWarnings True Dim rs As DAO.Recordset Set rs = Me.tape5.Form.RecordsetClone If IsNull(Foksh) Then DoCmd.CancelEvent Exit Sub Else rs.MoveFirst Do Until rs.EOF Dim selectedValues() As String selectedValues = Split(Me.Foksh, ",") Dim i As Integer For i = LBound(selectedValues) To UBound(selectedValues) If InStr(1, rs!color, Trim(selectedValues(i)), vbTextCompare) > 0 Then CurrentDb.Execute "INSERT INTO Temp (ID, namee, [code-work], [t-namber], type, lincec, color) " & _ "VALUES (" & rs!ID & ", '" & Forms![add-tab]![xxf] & "', " & rs![code-work] & ", '" & rs![t-namber] & "', " & _ "'" & rs![type] & "', '" & rs![lincec] & "', '" & rs![color] & "')" Exit For End If Next i rs.MoveNext Loop rs.Close Set rs = Nothing DoCmd.OpenReport "Table1", acViewPreview End If End Sub Foksh.accdb وأعتذر عن التأخير بسبب ظرف صحي .
  23. ضع كلمة المرور بين علامتي التنصيص ، جرب وبانتظار ردك 🤗
  24. الملف بصيغة ACCDE ولا يمكن التعديل عليه يا صديقي
  25. تم تعديل الكود والتأكد منه وتجربته . انسخه إلى مديول جديد ، واستدعيه بالأمر : ( CopactMyDb ) فقط حدد اسم قاعدة البيانات الخلفية التي بجانب القاعدة الرئيسية . Public Function compactDb(ByVal mydb As String, ByVal mydbb As String, ByVal mypass As String, Optional openIt As Boolean = False) Dim f As Integer Dim filenoext As String, extension As String, Access As String Access = """" & SysCmd(acSysCmdAccessDir) & "MSACCESS.EXE""" filenoext = Left(mydb, InStrRev(mydb, ".")) extension = Right(mydb, Len(mydb) - InStrRev(mydb, ".")) f = FreeFile Open CurrentProject.Path & "\compact.bat" For Output As f Print #f, "CHCP 1256" Print #f, ":checkldb1" Print #f, "if exist """ & filenoext & "l" & extension & """ goto checkldb1" Print #f, Access & " """ & mydbb & """" & mypass & " /compact" If openIt Then Print #f, ":checkldb2" Print #f, "if exist """ & filenoext & "l" & extension & """ goto checkldb2" Print #f, Access & " """ & mydb & """" Else Print #f, "del ""%~f0""" End If Close f End Function Public Function CopactMyDb() On Error Resume Next Dim Mypath, CurrDB, BEndTBL As String BEndTBL = "B-TBL.accdb" 'اسم قاعدة البيانات الخلفية CurrDB = CurrentProject.Path & "\" & CurrentProject.Name Mypath = CurrentProject.Path & "\" & BEndTBL Call compactDb(CurrDB, Mypath, "", True) Shell """" & Left(Mypath, InStrRev(Mypath, "\")) & "\compact.bat""", 0 DoCmd.Quit acQuitSaveAll End Function Desktop.zip
×
×
  • اضف...

Important Information