اذهب الي المحتوي
أوفيسنا

ابو جودي

أوفيسنا
  • Posts

    6,830
  • تاريخ الانضمام

  • Days Won

    186

كل منشورات العضو ابو جودي

  1. جرب الجملة التالية "DELETE FROM tblBounce WHERE (((tblBounce.id) = " & x & "));"
  2. هلا والله .. والله اشتقنا اذا ايها العبقرى انا عجزت عن عمل شئ برمجيا وتحايلت على الامر بطريقة ما وبخدعة كما اخبرت مسبقا هل عرفت المشكلة والخدعة المستخدمة ؟! وان توصلت اليها هل تستطيع ايجاد حل برمجى لها لاضفاء المرونة والسهولة فى التناول والتعامل مع الفكرة
  3. طيب مشاركة مع اخوانى الكرام واساتذتى الافاضل بعد التعديلات على الاكواد #If VBA7 Then #If Win64 Then Private Declare PtrSafe Function GetWindow Lib "user32" (ByVal hWnd As LongPtr, ByVal wCmd As Long) As LongPtr Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr Private Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, lParam As Any) As LongPtr #Else Private Declare PtrSafe Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long #End If #Else Private Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long #End If Private Const GW_CHILDREN As Long = 5 Private Const WM_COMMAND As Long = &H111 Private Sub Btn_Hide_Click() Dim toggleDesktopCommand As Long Dim hWnd As LongPtr toggleDesktopCommand = &H7402 hWnd = FindWindow("Progman", "Program Manager") If hWnd <> 0 Then hWnd = GetWindow(hWnd, GW_CHILDREN) If hWnd <> 0 Then SendMessage hWnd, WM_COMMAND, toggleDesktopCommand, ByVal 0& If Btn_Hide.Caption = "Hide Icon" Then Me.Btn_Hide.Caption = "Show Icon" Me.Caption = " Desktop Icon Hide" Else Me.Btn_Hide.Caption = "Hide Icon" Me.Caption = " Desktop Icon Show" End If Else MsgBox "Failed to find child window of Program.", vbExclamation End If Else MsgBox "Failed to find Program window.", vbExclamation End If End Sub Private Sub Form_Load() Me.Caption = "" End Sub Hide Icon Desktop.accdb
  4. ضع المرفق لتظهر لمن يريد تقديم المساعدة الشروط والافتراضات اللازم توافرها كما اخبرك استاذى الجليل الاستاذ @ناقل هناك اكثر من طريقة ولكن من يحددها الية العمل والشروط الواجب توافرها واخذها فى الحسبان تحياتى
  5. السلام عليكم ورحمة الله تعالى وبركاته اخوانى الكرام اساتذتى الاعزاء الموضوع ده بصراحة كان تحدى بينى وبين نفسي تعبت جدا فكرة الموضوع التقليدية هى التعامل بالارقام واسماء العناصر وكتابة الكثير والكثير من الاكواد والزحمة والحسابات و و وبلا بلا بلا بلا... وفى النهاية يبقى التعديل على العمل بالاضافة او التعديل شئ صعب جدا جدا جدا الا انه بفضل الله اقدم اليكم الفكرة الاتية للتجربة اعتمدت فى المقام الاول على ان تكون الاكواد ثابته بحيث يسهل استخدام الفكرة والطريقة ونقلها لاى قاعدة ولكن عجزت عن تحقيق كل شئ برمجيا وتوقفت وعجزت امام نقطة واحدة ووحيدة ولكن تم التغلب بالفهلوة على المشكلة اترك لكم التجربة وباب النقاش مفتوح بعد ذلك ومن يدرى فد اجد حل للمشكلة التى عجزت امامها معكم وعندكم تعديل جديد بتاريخ 31/05/2024 تم تحديث الموضوع باضافة الاصدار الثانى الذى يعتمد كليا على الوحدات النمطية تم حل جميع المشاكل والعقبات برمجيا والتى واجهتنى بالاصدار الاول على الرغم من انه قد تم التغلب عليها وقتها ولكن بحلول غير برمجية الإصدار الأول : expand and collapse button .accdb الإصدار الثاني (المحسن) : expand and collapse button V2.zip
  6. السلام عليكم ورحمة الله تعالى وبركاته وانا فايت لاقيت استاذنا الجليل اخوانا @شايب قلت فى نفسى لا لابد من المرور والقاء السلام ومشاركة مع احبائى فى الله اليكم فكرة بدون دوال وهى الاحب الى قلبى الشرح 1- انشاء وحدة نمطية عامة وظيفتها الاعلان عن متغيرات عامة وهى كالاتى Public strPasswordPrompt As String Public boolPasswordPrompt As Boolean 2- ننشئ نموذج لكلمة السر على ان يكون اسمه frmPasswordPrompt وبه مربع النص لكتابة كلمة السر على ان يكون اسمه txtPassword زر امر التأكيد على ان يكون اسمه btnConfirmation ونضع الكود الاتى لزر الامر boolPasswordPrompt = True strPasswordPrompt = Nz(Me.txtPassword.Value) DoCmd.Close acForm, Me.Name وهنا نطلب منه انه يلحق القيمة True الى المتغير العام boolPasswordPrompt وان يلحق القيمة التى سوف يتم كتابتها فى مربع النص txtPassword الى المتغير العام strPasswordPrompt ثم يغلق النموذج زر امر الالغاء على ان يكون اسمه btnCancel ونضع الكود الاتى لزر الامر boolPasswordPrompt = False DoCmd.Close acForm, Me.Name وهنا نطلب منه انه يلحق القيمة False الى المتغير العام boolPasswordPrompt ثم يغلق النموذج الان يمكن استخدام كلمة سر فى اى مكان فى النموذج اما للحذف او للطباعة او لفتح نموذج حسب رغبة المصمم والان الية استدعاء هذا النموذج للعمل على زر الامر المراد قتح النموذج السرى من خلاله نضع الاكواد الاتية Const CORRECT_PASSWORD As String = "123" Const MSG_ENTER_PASSWORD As String = "Please enter a password to proceed." Const MSG_INCORRECT_PASSWORD As String = "Incorrect password. Operation canceled." Const MSG_PROCEED_SUCCESSFULLY As String = "proceed successfully!" Const MSG_OPERATION_CANCELED As String = "Operation canceled" Do DoCmd.OpenForm "frmPasswordPrompt", , , , , acDialog Select Case True Case boolPasswordPrompt Select Case True Case Nz(strPasswordPrompt, "") = "" MsgBox MSG_ENTER_PASSWORD, vbExclamation Case strPasswordPrompt <> CORRECT_PASSWORD MsgBox MSG_INCORRECT_PASSWORD, vbExclamation Case Else MsgBox MSG_PROCEED_SUCCESSFULLY DoCmd.OpenForm ChrW("1587") & ChrW("1585") & ChrW("1610") Exit Do End Select Case Else MsgBox MSG_OPERATION_CANCELED, vbExclamation Exit Do End Select Loop هذا شرح مبسط للفكرة العامة ولكن ان اردنا العمل اكثر احترافية ومرونة من خلال الاكواد فى وحدة نمطية انظر المرفق الاتى رقم سري.accdb
  7. اعتذر عن الانقطاع لظروف مرضية ان شاء الله سوف نبدأ فى الاستمرار تباعا بامر الله
  8. الله يسامحك انا بالنسبة لى كان متخلف وغبى جدا جدا جدا ثلاثه جدا مش واخدة بس اقولكم لك على حاجة مفيش اجمل من ان الواحد يسرح فى بنات افكاره وجمالهم ويتأمل فيهم ويحلم معاهم ويحقق بيهم حلمه صدقونى الطبيعى طبيعى مش تقولوا لى اصطناعى
  9. لا شكر على واجب اهلا بك جزانا والله واياكم خير الجزاء وسعيد جدا والله الحمد انا فى حد بتعجبة شخابيطى وعلشان بتحب الشخبطة خد اخر شخابيطى توسيط واخفاء بطريقة جديدة HideAccess.accdb
  10. للاسف مع الاخفاء لابد من ان تكون Pou Up = yes Modal = YES لكل النماذج والتقارير ولا انصحك باعتماد كود اخفاء اطار الاكسس هذا
  11. انا جربته مره من باب الفضول لما انت قلت لى عليه بصراحة لم تكت تجربة ممتعة بالمرة احسست وقتها انه سوف يصيبنى بالانفعال الشديد من نتائجه الغبية والمغلوطه
  12. فعلا انت صح ده كمان صح لما تكون طلبات صريحة وبسيطة بس هو سوف يظل دائما عاجزا و يفتقر للخيال ويفتقر للابداع وصدقنى لو اعتمدت عليه انت رايح فى داهيه لانه غبى هو حافظ مش فاهم كانت التجربه سيئة جدا جدا جدا ودرب من الغباء اعتقد ان تناول العمل مع اكواد الاكسس اصعب من لغات برمجة اخرى ويعتمد اكثر على الابداع والتفكير للحلول خارج الصندوق فى الكثير من الاحوال فهو اكثر تعقيدا من غيره
  13. لو لاحظت انا كتبت الدالة الاولى وحتكون ثابته على طول لاى جدول ولاى معايير الدالة التانية بس للاستدعاء كل ما عليك تكتب اسم الجدول والحقل والمعيار وتختار ان كان رقمى او نصى او تاريخ واللذيذ ان فى مصفوفة بتجيب لك كل الحقول يعنى تعرف متغير result ويكون مصدر بيانات الحقل result(i) طبعا لو فى عمليات حسابية معقدة داخل الكود تكون اسرع من الاستعلام لو استخدمت فيه دوال المجال وفى الاخير انت الان معاك اكثر من طريقة
  14. على طريقة المعقدين امثالى اعمل مديول ضع الوظيفة الاتية Enum TypeWHERE asString asDate asNumeric End Enum Dim rsArryFieldName As Variant Function RetrieveData(ByRef tableName As String, _ ByRef fieldName As String, _ Optional varMyWHERE As Variant = "", _ Optional TypeMyWHERE As TypeWHERE = TypeWHERE.asString, _ Optional LinkCriteria As String = "") As Variant ' This function retrieves data from the specified table and field based on the provided criteria. ' Translate the criteria type to the appropriate SQL syntax Select Case TypeMyWHERE Case TypeWHERE.asDate LinkCriteria = "[" & fieldName & "] = #" & varMyWHERE & "#" '| Date Case TypeWHERE.asNumeric LinkCriteria = "[" & fieldName & "] = " & varMyWHERE '| Numeric Case TypeWHERE.asString LinkCriteria = "[" & fieldName & "] = '" & varMyWHERE & "'" '| String End Select ' Declare a DAO Recordset variable Dim rs As DAO.Recordset ' Open a recordset based on the provided table and field names Set rs = CurrentDb.OpenRecordset("SELECT * FROM " & tableName & " WHERE " & LinkCriteria) ' Check if the recordset is not empty If Not rs.EOF Then ' Create an array to hold values of all fields in the record Dim fieldValues() As Variant ReDim fieldValues(1 To rs.fields.Count) Dim i As Integer ' Populate the array with values from all fields For i = 1 To rs.fields.Count fieldValues(i) = rs.fields(i - 1).Value Next i ' Return the array containing values of all fields RetrieveData = fieldValues Else ' Return an empty string if no matching record is found RetrieveData = "" End If ' Close the recordset rs.Close Set rs = Nothing End Function وشوف التجربة من خلال هذا الروتين Sub ExampleUsage() ' Set the table name and field name Dim tableName As String Dim fieldName As String Dim criteriaValue As Variant Dim criteriaType As TypeWHERE ' Set default values tableName = "YourTableName" ' | << Set the table name fieldName = "YourFieldName" ' | << Set the field name criteriaValue = "YourCriteriaValue" ' | << Set Your Criteria Value criteriaType = TypeWHERE.asString ' | << Set the type of criteria and You can change it based on the case type of criteria ' Call the RetrieveData procedure Dim result As Variant result = RetrieveData(tableName, fieldName, criteriaValue, criteriaType) ' Display values of all fields in the array If IsArray(result) Then Dim i As Integer For i = 1 To UBound(result) Debug.Print i & ": " & result(i) Next i ' Display the value of field number 3 (For example, EmployeeName) Debug.Print result(3) Else ' If no matching record is found, show an appropriate message MsgBox "No matching record found for the specified criteria." End If End Sub وعيش مع الكود ومع بنات افكارك
  15. طبعا لا يفتى ومالك فى المدينة اممم تصدق مش عارف اقول اه واللا لاء بس بعد الشرح ده انت قول الاجابة دوال المجـــــــ(Domain Functions)ـــــــــال جزءا من مجموعة من الدوال التي تستخدم للتلاعب بالبيانات في قاعدة البيانات وهى ليست استعلامات هذه الدوال تعتبر جزءا من استعلامات SQL (Structured Query Language) التي تستخدم لاسترجاع وتحديث البيانات دوال المجال تسمح لك بتنفيذ عمليات معينة على البيانات في حقل معين من جدول معين على سبيل المثال : - يمكن استخدام دالة المجال Dlookup للبحث عن قيمة في حقل محدد بناء على شرط معين او عدة شروط هذه الدوال تستخدم ضمن تعبيرات SQL داخل استعلامات يعنى خى ليست استعلامات انما هى تستخدم كجزء داخل الاستعلامات Dlookup >>----> للبحث عن قيمة في حقل معين DCount >>----> لحساب عدد السجلات التي تستوفي شرط محدد DSum >>----> لحساب مجموع قيم حقل معين بناءً على شرط يبقى الاجابة ايه
  16. للاسف بسبب تحديثات ويندوز الاخيرة الكود مش بشتغل لكن على كل حال لو ملف الاكس اللى معاكى شغال ممكن لو مفتوخ اشوف الاكواد واعدلهولك للاكسس واو مقوفل ممكن اخاول ابعت البيانات من اكسس ليه بس ده مش وعد لان مش عارف شكل الملف ايه
  17. منكم نتعلم استاذى الجليل ومعلمى القدير هذا من فضل الله سبحانه وتعالى ثم لكلم ولكل اساتذتى العظماء تعرف يا استاذى انا تقريبا بطلت ستخدم DLookup الا فى اضيق الحالات كل ما اجى استخدمها افتكر كلمة استاذ @jjafferr سر قوة الاكسس فى الاستعلامات الان تقريبا اعيد ما اريد من خلال الاستعلامات بدلا من DLookup فعلا الاستعلامات رهيبة جدا جدا جدا جدا
  18. على سبيل المثال #If VBA7 Then Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) #Else Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) #End If Public Function SendWhatsAppMsg(toNumber As String, Optional Msg As String, Optional FilePathh As String) Dim IE As Object Set IE = CreateObject("InternetExplorer.Application") IE.Visible = False IE.Navigate "whatsapp://send?phone=" & toNumber & "&Text=" & Nz(Msg, "") Sleep 2000 If Len(FilePathh) > 5 Then SendKeys "+{TAB}" SendKeys "~" Sleep 2000 SendKeys "{UP}" SendKeys "{UP}" SendKeys "~" Sleep 2000 SendKeys Nz(FilePathh, "") SendKeys "~" Sleep 3000 Else 'MsgBox "No" End If SendKeys "~" SendKeys "{NUMLOCK}", True Set IE = Nothing End Function هذا الكود يستخدم VBA لفتح WhatsApp Web (WhatsApp عبر المتصفح) وإرسال رسالة نصية أو رسائل معينة تعتمد هذه الطريقة على استخدام إطار الإنترنت (InternetExplorer.Application) لفتح WhatsApp Web ومحاكاة إرسال الرسائل باستخدام SendKeys. ومع ذلك، يجب أن ألفت انتباهكم إلى أن استخدام SendKeys يعتبر طريقة غير موثوقة وقد تتعرض للمشاكل في بيئات مختلفة تعتمد هذه الطريقة على تحكم البرنامج في العناصر التفاعلية في واجهة المستخدم وهو شيء قد يتغير في التحديثات المستقبلية لتطبيقات المتصفح وبالفعل تم وقف التعامل مع هذا المتصفح نهائيا فى تحديثات ونسخ الويندوز الحديثة فأصبح غير معتمد نهائيا إذا كنتم بحاجة إلى التفاعل مع واتساب بشكل برمجي يمكن الأفضل استخدام واجهة برمجة تطبيقات WhatsApp Business API ولكن هذا يتطلب تسجيلًا كشركة واستخدامه لأغراض الأعمال
  19. للاسف مشكلة اى تطبيقات تعمد على وسيط قد تعمل عند البعض ولا تعمل عند اخرين ويرجع ذلك الى اصدارات الوسطاء السبب ان التطبيق يقوم بارسال البيانات عبر دوال للمتصفحات او للتطبيق ومع التحديثات التى تصل الى الويندوز او جوجل كروم او باقى المتصفحات قد تحدث تتغيرات تعود بالسلب على مثل هذه التطبيقات لذلك لا احب استعمال اى وسطاء .. الوسطاء يمتنعون لا يمكن إرسال رسائل WhatsApp من خلال VBA مباشرة باستخدام WhatsApp Desktop أو WhatsApp Web يتم استخدام WhatsApp Desktop و WhatsApp Web للتفاعل مع رقم هاتف مرتبط بحساب WhatsApp على هاتفك المحمول يمكنك التفاعل مع WhatsApp عبر الحوارات النصية والوسائط والمزيد من خلال تلك الوسائل ولكن الوصول إلى واجهة برمجة التطبيقات (API) الخاصة بـ WhatsApp مباشرةً لا يزال مقيدًا ويتم حاليًا توفير واجهة برمجة تطبيقات (API) WhatsApp Business API لأغراض الأعمال إذا كنتم بحاجة إلى التفاعل مع WhatsApp من خلال VBA يمكنك استخدام تقنيات أخرى مثل استخدام السيرفرات الوسيطة والتي تتيح لك التحكم في التطبيق من خلال البرمجة (على الرغم من أن هذا قد يتطلب إعدادات متقدمة والتى لن يكون مسموحًا به أصلا ً من قبل WhatsApp) وذلك بسبب سياسات WhatsApp وشروط الاستخدام الخاصة بها
  20. وممكن SELECT VAL([ID]) AS valID, * FROM tblEmployees WHERE VAL([ID]) BETWEEN 50 AND 80; وممكن استخدام دالة CDBL لتحويل إلى رقم مزدوج (Double): SELECT CDBL([ID]) AS cdblID, * FROM tblEmployees WHERE CDBL([ID]) BETWEEN 50 AND 80; وممكن استخدام دالة CDATE للتحويل إلى تاريخ (إذا كان يمكن تفسير القيم كتواريخ) SELECT CDATE([FieldName]) AS cdateFieldName, * FROM TableName WHERE CDATE([FieldName]) Between #50# And #80#;
  21. وانا كمان مثل استاذى الحليل ومعلمى القدير و والدى الخبيب الاستاذ @ابوخليل من تم طرحك للاصدار الأول ، حين اشرع ببناء اي برنامج اذهب الى المكتبة العامرة ( طبعا عارف المكتبه مش محتاج اعرفك ) اول اضافة للمشروع استورد نموذجك علشان اخلص من اللى عليك .. ويبقى محاطا بالعناية والحنان .. والدعوات لك مع كل عملية . حتى نهاية المشروع
  22. ولو الحقل كان نصى وانت كاتب فيه ارقام استخدم الاستعلام بالشكل التالى SELECT CLng([FieldName]) AS clngFieldName, * FROM TableName WHERE (((CLng([FieldName])) Between CLng(50) And CLng(80)));
  23. وبناء على قول استاذى الجليل ومعلمى القدير الاستاذ @شايب استخدم هذه الطريقة افضل من خلال استعلام SELECT * FROM TableName WHERE FieldName BETWEEN 50 AND 80;
×
×
  • اضف...

Important Information