-
Posts
6,830 -
تاريخ الانضمام
-
Days Won
186
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو ابو جودي
-
جرب الجملة التالية "DELETE FROM tblBounce WHERE (((tblBounce.id) = " & x & "));"
-
قائمة ازرار ديناميكية شخابيط : طى وتوسيع قائمة الازرار
ابو جودي replied to ابو جودي's topic in قسم الأكسيس Access
هلا والله .. والله اشتقنا اذا ايها العبقرى انا عجزت عن عمل شئ برمجيا وتحايلت على الامر بطريقة ما وبخدعة كما اخبرت مسبقا هل عرفت المشكلة والخدعة المستخدمة ؟! وان توصلت اليها هل تستطيع ايجاد حل برمجى لها لاضفاء المرونة والسهولة فى التناول والتعامل مع الفكرة -
طيب مشاركة مع اخوانى الكرام واساتذتى الافاضل بعد التعديلات على الاكواد #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
-
ضع المرفق لتظهر لمن يريد تقديم المساعدة الشروط والافتراضات اللازم توافرها كما اخبرك استاذى الجليل الاستاذ @ناقل هناك اكثر من طريقة ولكن من يحددها الية العمل والشروط الواجب توافرها واخذها فى الحسبان تحياتى
-
وفين دالة NZ ?!
-
السلام عليكم ورحمة الله تعالى وبركاته اخوانى الكرام اساتذتى الاعزاء الموضوع ده بصراحة كان تحدى بينى وبين نفسي تعبت جدا فكرة الموضوع التقليدية هى التعامل بالارقام واسماء العناصر وكتابة الكثير والكثير من الاكواد والزحمة والحسابات و و وبلا بلا بلا بلا... وفى النهاية يبقى التعديل على العمل بالاضافة او التعديل شئ صعب جدا جدا جدا الا انه بفضل الله اقدم اليكم الفكرة الاتية للتجربة اعتمدت فى المقام الاول على ان تكون الاكواد ثابته بحيث يسهل استخدام الفكرة والطريقة ونقلها لاى قاعدة ولكن عجزت عن تحقيق كل شئ برمجيا وتوقفت وعجزت امام نقطة واحدة ووحيدة ولكن تم التغلب بالفهلوة على المشكلة اترك لكم التجربة وباب النقاش مفتوح بعد ذلك ومن يدرى فد اجد حل للمشكلة التى عجزت امامها معكم وعندكم تعديل جديد بتاريخ 31/05/2024 تم تحديث الموضوع باضافة الاصدار الثانى الذى يعتمد كليا على الوحدات النمطية تم حل جميع المشاكل والعقبات برمجيا والتى واجهتنى بالاصدار الاول على الرغم من انه قد تم التغلب عليها وقتها ولكن بحلول غير برمجية الإصدار الأول : expand and collapse button .accdb الإصدار الثاني (المحسن) : expand and collapse button V2.zip
-
مشكلة : النموذج الفرعي لا يقبل التحديث بعد تطبيق فلتر والغاؤه
ابو جودي replied to طير البحر's topic in قسم الأكسيس Access
ممكن مرفق المشكلة لو تكرمت -
رقم سري لفتح نموذج يحتوي معلومات سرية للغاية
ابو جودي replied to عبد اللطيف سلوم's topic in قسم الأكسيس Access
السلام عليكم ورحمة الله تعالى وبركاته وانا فايت لاقيت استاذنا الجليل اخوانا @شايب قلت فى نفسى لا لابد من المرور والقاء السلام ومشاركة مع احبائى فى الله اليكم فكرة بدون دوال وهى الاحب الى قلبى الشرح 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 -
☺ تصميم قاعدة بيانات احترافيه لإدارة يوميات وشئون العاملين
ابو جودي replied to ابو جودي's topic in قسم الأكسيس Access
اعتذر عن الانقطاع لظروف مرضية ان شاء الله سوف نبدأ فى الاستمرار تباعا بامر الله- 4 replies
-
- 7
-
- شئون العاملين
- ادارة يوميات العاملين
-
(و1 أكثر)
موسوم بكلمه :
-
الذكاء الإصطناعي chatGPT في انشاء اكواد VBA
ابو جودي replied to دروب مبرمج's topic in قسم الأكسيس Access
الله يسامحك انا بالنسبة لى كان متخلف وغبى جدا جدا جدا ثلاثه جدا مش واخدة بس اقولكم لك على حاجة مفيش اجمل من ان الواحد يسرح فى بنات افكاره وجمالهم ويتأمل فيهم ويحلم معاهم ويحقق بيهم حلمه صدقونى الطبيعى طبيعى مش تقولوا لى اصطناعى -
توسيط النماذج على طريقة أبو جودي مع إخفاء إطار أكسس.
ابو جودي replied to abofayez1's topic in قسم الأكسيس Access
لا شكر على واجب اهلا بك جزانا والله واياكم خير الجزاء وسعيد جدا والله الحمد انا فى حد بتعجبة شخابيطى وعلشان بتحب الشخبطة خد اخر شخابيطى توسيط واخفاء بطريقة جديدة HideAccess.accdb -
توسيط النماذج على طريقة أبو جودي مع إخفاء إطار أكسس.
ابو جودي replied to abofayez1's topic in قسم الأكسيس Access
للاسف مع الاخفاء لابد من ان تكون Pou Up = yes Modal = YES لكل النماذج والتقارير ولا انصحك باعتماد كود اخفاء اطار الاكسس هذا -
الذكاء الإصطناعي chatGPT في انشاء اكواد VBA
ابو جودي replied to دروب مبرمج's topic in قسم الأكسيس Access
انا جربته مره من باب الفضول لما انت قلت لى عليه بصراحة لم تكت تجربة ممتعة بالمرة احسست وقتها انه سوف يصيبنى بالانفعال الشديد من نتائجه الغبية والمغلوطه -
الذكاء الإصطناعي chatGPT في انشاء اكواد VBA
ابو جودي replied to دروب مبرمج's topic in قسم الأكسيس Access
فعلا انت صح ده كمان صح لما تكون طلبات صريحة وبسيطة بس هو سوف يظل دائما عاجزا و يفتقر للخيال ويفتقر للابداع وصدقنى لو اعتمدت عليه انت رايح فى داهيه لانه غبى هو حافظ مش فاهم كانت التجربه سيئة جدا جدا جدا ودرب من الغباء اعتقد ان تناول العمل مع اكواد الاكسس اصعب من لغات برمجة اخرى ويعتمد اكثر على الابداع والتفكير للحلول خارج الصندوق فى الكثير من الاحوال فهو اكثر تعقيدا من غيره -
لو لاحظت انا كتبت الدالة الاولى وحتكون ثابته على طول لاى جدول ولاى معايير الدالة التانية بس للاستدعاء كل ما عليك تكتب اسم الجدول والحقل والمعيار وتختار ان كان رقمى او نصى او تاريخ واللذيذ ان فى مصفوفة بتجيب لك كل الحقول يعنى تعرف متغير result ويكون مصدر بيانات الحقل result(i) طبعا لو فى عمليات حسابية معقدة داخل الكود تكون اسرع من الاستعلام لو استخدمت فيه دوال المجال وفى الاخير انت الان معاك اكثر من طريقة
-
على طريقة المعقدين امثالى اعمل مديول ضع الوظيفة الاتية 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 وعيش مع الكود ومع بنات افكارك
-
طبعا لا يفتى ومالك فى المدينة اممم تصدق مش عارف اقول اه واللا لاء بس بعد الشرح ده انت قول الاجابة دوال المجـــــــ(Domain Functions)ـــــــــال جزءا من مجموعة من الدوال التي تستخدم للتلاعب بالبيانات في قاعدة البيانات وهى ليست استعلامات هذه الدوال تعتبر جزءا من استعلامات SQL (Structured Query Language) التي تستخدم لاسترجاع وتحديث البيانات دوال المجال تسمح لك بتنفيذ عمليات معينة على البيانات في حقل معين من جدول معين على سبيل المثال : - يمكن استخدام دالة المجال Dlookup للبحث عن قيمة في حقل محدد بناء على شرط معين او عدة شروط هذه الدوال تستخدم ضمن تعبيرات SQL داخل استعلامات يعنى خى ليست استعلامات انما هى تستخدم كجزء داخل الاستعلامات Dlookup >>----> للبحث عن قيمة في حقل معين DCount >>----> لحساب عدد السجلات التي تستوفي شرط محدد DSum >>----> لحساب مجموع قيم حقل معين بناءً على شرط يبقى الاجابة ايه
-
ممكن طريقه ارسال ملفات ب د اف عن طريق الواتس الويب
ابو جودي replied to safaa salem5's topic in قسم الأكسيس Access
للاسف بسبب تحديثات ويندوز الاخيرة الكود مش بشتغل لكن على كل حال لو ملف الاكس اللى معاكى شغال ممكن لو مفتوخ اشوف الاكواد واعدلهولك للاكسس واو مقوفل ممكن اخاول ابعت البيانات من اكسس ليه بس ده مش وعد لان مش عارف شكل الملف ايه -
منكم نتعلم استاذى الجليل ومعلمى القدير هذا من فضل الله سبحانه وتعالى ثم لكلم ولكل اساتذتى العظماء تعرف يا استاذى انا تقريبا بطلت ستخدم DLookup الا فى اضيق الحالات كل ما اجى استخدمها افتكر كلمة استاذ @jjafferr سر قوة الاكسس فى الاستعلامات الان تقريبا اعيد ما اريد من خلال الاستعلامات بدلا من DLookup فعلا الاستعلامات رهيبة جدا جدا جدا جدا
-
ممكن طريقه ارسال ملفات ب د اف عن طريق الواتس الويب
ابو جودي replied to safaa salem5's topic in قسم الأكسيس Access
على سبيل المثال #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 ولكن هذا يتطلب تسجيلًا كشركة واستخدامه لأغراض الأعمال -
ممكن طريقه ارسال ملفات ب د اف عن طريق الواتس الويب
ابو جودي replied to safaa salem5's topic in قسم الأكسيس Access
للاسف مشكلة اى تطبيقات تعمد على وسيط قد تعمل عند البعض ولا تعمل عند اخرين ويرجع ذلك الى اصدارات الوسطاء السبب ان التطبيق يقوم بارسال البيانات عبر دوال للمتصفحات او للتطبيق ومع التحديثات التى تصل الى الويندوز او جوجل كروم او باقى المتصفحات قد تحدث تتغيرات تعود بالسلب على مثل هذه التطبيقات لذلك لا احب استعمال اى وسطاء .. الوسطاء يمتنعون لا يمكن إرسال رسائل WhatsApp من خلال VBA مباشرة باستخدام WhatsApp Desktop أو WhatsApp Web يتم استخدام WhatsApp Desktop و WhatsApp Web للتفاعل مع رقم هاتف مرتبط بحساب WhatsApp على هاتفك المحمول يمكنك التفاعل مع WhatsApp عبر الحوارات النصية والوسائط والمزيد من خلال تلك الوسائل ولكن الوصول إلى واجهة برمجة التطبيقات (API) الخاصة بـ WhatsApp مباشرةً لا يزال مقيدًا ويتم حاليًا توفير واجهة برمجة تطبيقات (API) WhatsApp Business API لأغراض الأعمال إذا كنتم بحاجة إلى التفاعل مع WhatsApp من خلال VBA يمكنك استخدام تقنيات أخرى مثل استخدام السيرفرات الوسيطة والتي تتيح لك التحكم في التطبيق من خلال البرمجة (على الرغم من أن هذا قد يتطلب إعدادات متقدمة والتى لن يكون مسموحًا به أصلا ً من قبل WhatsApp) وذلك بسبب سياسات WhatsApp وشروط الاستخدام الخاصة بها -
وممكن 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#;
-
وانا كمان مثل استاذى الحليل ومعلمى القدير و والدى الخبيب الاستاذ @ابوخليل من تم طرحك للاصدار الأول ، حين اشرع ببناء اي برنامج اذهب الى المكتبة العامرة ( طبعا عارف المكتبه مش محتاج اعرفك ) اول اضافة للمشروع استورد نموذجك علشان اخلص من اللى عليك .. ويبقى محاطا بالعناية والحنان .. والدعوات لك مع كل عملية . حتى نهاية المشروع
- 14 replies
-
- 1
-
- الكاتب الذكي
- دوال المجال
-
(و3 أكثر)
موسوم بكلمه :
-
ولو الحقل كان نصى وانت كاتب فيه ارقام استخدم الاستعلام بالشكل التالى SELECT CLng([FieldName]) AS clngFieldName, * FROM TableName WHERE (((CLng([FieldName])) Between CLng(50) And CLng(80)));
-
وبناء على قول استاذى الجليل ومعلمى القدير الاستاذ @شايب استخدم هذه الطريقة افضل من خلال استعلام SELECT * FROM TableName WHERE FieldName BETWEEN 50 AND 80;