-
Posts
6,830 -
تاريخ الانضمام
-
Days Won
186
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو ابو جودي
-
على العموم فى موديول ضع الكود الاتى Public gMouseOver As Boolean Public gOriginalWidth As Single Public gOriginalHeight As Single Public Sub ResizeButtonOnMouseOver(btn As Access.CommandButton) gMouseOver = True If gOriginalWidth = 0 Then gOriginalWidth = btn.Width gOriginalHeight = btn.Height End If btn.Width = gOriginalWidth * 1.5 btn.Height = gOriginalHeight * 1.5 End Sub Public Sub RestoreButtonSizeOnMouseLeave(btn As Access.CommandButton) If gMouseOver Then btn.Width = gOriginalWidth btn.Height = gOriginalHeight gMouseOver = False Else Exit Sub End If End Sub ولابد فى النموذج من عمل Box حول الازرار وليكن اسمه BoxBtn فى الحدث عند مرور الماوس على اى زر تريد تنفذ الحدث عليه ضع الكود ResizeButtonOnMouseOver Me.BtnName ثم فى الحدث عند مرور الماوس للـ BtnBox RestoreButtonSizeOnMouseLeave Me.BtnName طبعا استبدل BtnName باسم زر الامر الحالى عند المرور الماوس
-
ۈعـَلـْيگمّ السَلٱمٌ -ۈرحـْمّـٌة ٱللـّہ ﯙبُرگـّاتہ انا ممكن انفذ لك طلبك بالضبط لكن مش حيكون ظريف ممكن ترفق قاعدة بيانات فيها النموذج الرئيسى بالازرار فقط بدون اى اكواد علشان اكون فاهم شكل النموذج ايه وممكن اقول لك على فكرة افضل
-
مطلوب استخراج اسم الجدول من مصدر بيانات صف مربع تحرير
ابو جودي replied to ابوخليل's topic in قسم الأكسيس Access
هات كل ما عندكم استاذى الجليل ومعلمى القدير و والدى الحبيب نتضرع فقط الى الله عزوجل ان يجعلنا عند حسن ظنكم وان لا يحعلنا نقصر معكم فمهما قدم اليكم كل طلاب العلم ما يملكون لن يوفيكم هذا حقكم مثقال ذرة -
مطلوب استخراج اسم الجدول من مصدر بيانات صف مربع تحرير
ابو جودي replied to ابوخليل's topic in قسم الأكسيس Access
مشاركتى مع الاستاذ @Moosak Sub ExtractTableNameFromRowSource(cbo As ComboBox) ' Check if RowSource is not empty If cbo.rowSource = "" Then MsgBox "RowSource is empty", vbExclamation, "Warning" Exit Sub End If ' Extract table name from RowSource Dim tableName As String tableName = GetTableNameFromRowSource(cbo.rowSource) ' Remove trailing semicolon if exists If Right(tableName, 1) = ";" Then tableName = Left(tableName, Len(tableName) - 1) End If ' Display the table name without additional message MsgBox tableName, vbInformation, "Table Information" End Sub Function GetTableNameFromRowSource(rowSource As String) As String ' Find the part that starts with "FROM" in RowSource Dim fromIndex As Integer fromIndex = InStr(1, rowSource, "FROM ", vbTextCompare) ' Make sure the word "FROM" is in RowSource If fromIndex = 0 Then MsgBox "RowSource does not contain the word 'FROM'", vbExclamation, "Warning" Exit Function End If ' Extract the part of the text that contains the table name after "FROM" Dim tableNamePart As String tableNamePart = Mid(rowSource, fromIndex + Len("FROM ")) ' Find the position of the first space or semicolon after the table name Dim delimiterIndex As Integer delimiterIndex = InStr(1, tableNamePart, " ") ' Check for semicolon and remove it Dim semicolonIndex As Integer semicolonIndex = InStr(1, tableNamePart, ";") ' Check for "ORDER BY" and remove it Dim orderByIndex As Integer orderByIndex = InStr(1, tableNamePart, "ORDER BY", vbTextCompare) If delimiterIndex > 0 Then ' If a space is found, extract the part before it GetTableNameFromRowSource = Trim(Left(tableNamePart, delimiterIndex - 1)) ElseIf orderByIndex > 0 Then ' If "ORDER BY" is found, extract the part before it GetTableNameFromRowSource = Trim(Left(tableNamePart, orderByIndex - 1)) End If End Function المرفق .. DatabaseUp8.rar -
مطلوب استخراج اسم الجدول من مصدر بيانات صف مربع تحرير
ابو جودي replied to ابوخليل's topic in قسم الأكسيس Access
بالنسبة لى سأحقق المطلوب بهذة الدالة Sub GetTableName(cbo As ComboBox) ' Check if the query is empty If cbo.RowSource = "" Then MsgBox "No specific query for this combo box", vbExclamation, "Warning" Exit Sub End If ' Check if the query contains the word "FROM" If InStr(1, cbo.RowSource, "FROM ", vbTextCompare) = 0 Then MsgBox "The query does not contain the word 'FROM'", vbExclamation, "Warning" Exit Sub End If ' Check if the query contains a comma before the word "FROM" Dim fromIndex As Integer fromIndex = InStr(1, cbo.RowSource, "FROM ", vbTextCompare) If InStr(1, Mid(cbo.RowSource, 1, fromIndex - 1), ";") > 0 Then MsgBox "Invalid query, it contains a comma before 'FROM'", vbExclamation, "Warning" Exit Sub End If ' Get the full text of the query Dim queryText As String queryText = cbo.RowSource ' Find the position of "FROM" in the query Dim startIndex As Integer startIndex = InStr(1, queryText, "FROM ", vbTextCompare) + Len("FROM ") ' Find the position of the semicolon after the table name Dim endIndex As Integer endIndex = InStr(startIndex, queryText, ";") ' Get the table name Dim tableName As String tableName = Mid(queryText, startIndex, endIndex - startIndex) ' Remove extra spaces tableName = Trim(tableName) MsgBox "Table Name: " & tableName, vbInformation, "Table Information" End Sub -
السلام عليكم ورحمة الله تعالى وبركاته نظرا للطلب والتساؤلات الكثيرة حول الموضوع او نقاط فرعيه منه قاصدا من ذلك أن يكون الموضوع شاملا ومرجعا للراغبين فى ذلك والدراسبن اليكم بناء القاعدة والذى اتمنى على الله تعالى ان يبدأ البناء وينتهى بشكل احترافى بقدر الإمكان وسوف نبدأ من الصفر تباعا ان شاء الله سوف يتم تحديث الموضوع تباعا الموضوع بأمر الله سوف اضع له الخطوط العريضة طبقا للمؤسسة التى اعمل بها لاننى أصلا سوف اقوم بقاعدة البيانات لمؤسستى وبقدر الإمكان سوف أضع فى الحسبان ان يكون التصميم عام بقدر الإمكان ليتناسب ويتماشى مع الجميع ومع رغباتهم بقدر الإمكان اهلا بكل من يريد المشاركة فى ادراة الموضوع والافكار والتعديل او الاضافة و ...... مبدئيا خلونا نتفق وقتى ضيق فى الفترة المقبلة لما انا مقدم عليه فلذلك ارجو الاعتذار مقدما ان لم التفت الى اى تساؤلات والتى وإن حدث سوف يتم تأجيلها حتى ينتهى مشروع اعداد التطبيق لمؤسستى تماما ان شاء الله بسم الله وعلى بركة الله بداية المشروع اول شئ تصيد وتسجيل الاخطاء بجدول وده وظيفته تسجيل الحطأ باسم الحدث أو الدالة المستخدمة فى الكود عند تنفيذ امر ما ورقم الخطا وصفه للمساعدة مستقبلا فى الوقوف على اماكن الاخطاء لعمل الصيانة اللازمة طبعا تم التطرق اليه فى هذا الموضوع: ويمكنكم الذهاب اليه والمتابعة من هنا طيب حلو جدا جدا وعلشان انا هبدأ بالأكواد ملاحظات هامة جدا جدا جدا جدا لبداية صحيحة واحترافيه : كتابة كود احترافي تتطلب ممارسات جيدة واتباع مبادئ برمجية صحيحة. فيما يلي بعض النصائح التي يمكن أن تساعدك في كتابة كود احترافي: توضيح الكود: استخدم تعليقات لشرح الجزء العلوي من الكود وللأمور المعقدة. اختر أسماء مفيدة وواضحة للمتغيرات والدوال تدل على وظائفها التى تمت كتابتها من اجلها. التنظيم: استخدم الهندسة المعمارية لتنظيم البرنامج إلى وحدات صغيرة وقابلة لإعادة الاستخدام. قم بتقسيم البرنامج إلى وحدات ووظائف مستقلة. الأداء: ابتعد عن الأكواد المكررة وقدّم الأكواد القابلة لإعادة الاستخدام في وحدات. حافظ على الأداء بتجنب العمليات الزائدة غير الضرورية. اختبار الوحدات: قم بكتابة اختبارات للتأكد من أن وحدات الكود الخاصة بك تعمل كما هو متوقع. الأمان: تحقق دائمًا من صحة البيانات الواردة والخارجة من الدوال. تفادى استخدام الأكواد المعرضة لثغرات أمان. تحسين الأداء: استخدم الهندسة العكسية لتحسين الأداء. ابحث عن فرص لتحسين الكفاءة والسرعة. استخدام التعليمات البرمجية النظيفة: ابتعد عن استخدام المتغيرات العالمية عندما لا تكون ضرورية. تجنب الأكواد التي تعتمد على التبديلات الطويلة. توثيق الكود: وفر توثيقًا جيدًا للكود ليسهل على المطورين الآخرين أو نفسك فهم كيف يعمل البرنامج. متابعة المعايير: اتبع معايير البرمجة المتعارف عليها . التحسين المستمر: كن مستعدًا لتحسين الكود الخاص بك بناءً على التعلم وتغييرات متطلبات المشروع. الالتزام بتلك المبادئ يمكن أن يساعدك في كتابة كود أكثر احترافية وقابل للصيانة. حلو الكلام وكل ده هيبان بقدر المستطاع فى التعليمات البرمجية التى سوف تتم تباعا يمكنك استخدام البادئات التالية لتسمية العناصر والكائنات بشكل منظم ويجعل الشيفرة أكثر وضوحًا. البادئات تعتمد على النوع أو الدور الذي تقوم به العناصر: وعلى سبيل المثال وليس الحصر المتغيرات: int للأعداد الصحيحة. dbl للأعداد العشرية. str للنصوص. bool للقيم البولية اى True , False أو Yes , No . Dim intCounter As Integer Dim dblAmount As Double Dim strName As String Dim boolIsValid As Boolean المصفوفات: arr للمصفوفات. Dim arrNames() As String الدوال: Function للدوال التي تعيد قيمة. Sub للإجراءات (دوال بدون إرجاع قيمة). Function CalculateTotal() As Double Sub DisplayMessage() الكائنات: frm للنماذج (Forms). rpt للتقارير (Reports). tbl للجداول (Tables). qry للاستعلامات (Queries). cls للكائنات أو الفئات لتعريف الكلاسات (Classes). bas وحدات الشيفرة- الوحدات النمطية (Modules). tbl للجداول (Tables). qry للاستعلامات (Queries). Dim frmCustomer As Form Dim rptSales As Report Dim tblData As TableDef Dim qryFilteredData As QueryDef الثوابت: c للثوابت. Const cMaxValue As Integer = 100 المتغيرات العامة: g للمتغيرات العامة. Public gCounter As Integer المتغيرات المؤقتة: temp للمتغيرات المؤقتة. Dim tempValue As Integer التعليقات: REM لتعليقات الشيفرة. REM هذا تعليق لشرح الشيفرة الأشكال والعناصر الرسومية: btn للأزرار (Buttons). lbl للتسميات (Labels). txt لحقول النص (Textboxes). chk لمربعات الاختيار (Checkboxes). القوائم والمراقبين: cmb لقائمة الاختيار (Comboboxes). lst لقوائم الاختيار (Listboxes). cb لمراقبات الصندوق (Checkboxes). الكائنات الأخرى: app لكائن التطبيق (Application). cnn لكائن الاتصال (Connection). doc لكائن المستند (Document). الحقول والأعمدة: fld لحقول البيانات (Fields). col لعمود البيانات (Column).
- 4 replies
-
- 17
-
- شئون العاملين
- ادارة يوميات العاملين
-
(و1 أكثر)
موسوم بكلمه :
-
اوك انتظر وابشر
-
انا اقصد المرفق الاصلى الاجنبى قبل اى تعديل من حضرتك يا افندم
-
ممكن المرفق الاصلى من فضلك
-
طيب انا افضل الطريقة الثانية SELECT t1.namee, t1.reg_date AS MaxDate, t1.amount FROM Table1 AS t1 WHERE t1.reg_date = ( SELECT TOP 1 t2.reg_date FROM Table1 AS t2 WHERE t2.namee = t1.namee ORDER BY t2.reg_date DESC ) ORDER BY t1.namee; وليه انا افضل هذه الطريقة لانها أكثر مرونه حسب رغبات المصمم يعنى مثلا ممكن عاوزين اعلى تاريخين لكل عميل تبقى جملة الاستعلام بالشكل الاتى SELECT t1.namee, t1.reg_date AS MaxDate, t1.amount FROM Table1 AS t1 WHERE t1.reg_date IN ( SELECT TOP 2 t2.reg_date FROM Table1 AS t2 WHERE t2.namee = t1.namee ORDER BY t2.reg_date DESC ) ORDER BY t1.namee, t1.reg_date DESC; وبارك الله فيكم وحفظكم ولا داعى للشكر اهلا بكم
-
Documents_2.rar
-
اتفضل SELECT t1.namee, t1.reg_date AS MaxDate, t1.amount FROM Table1 AS t1 WHERE t1.reg_date = ( SELECT MAX(t2.reg_date) FROM Table1 AS t2 WHERE t2.namee = t1.namee ); الطريقة الثانيه SELECT t1.namee, t1.reg_date AS MaxDate, t1.amount FROM Table1 AS t1 WHERE t1.reg_date = ( SELECT TOP 1 t2.reg_date FROM Table1 AS t2 WHERE t2.namee = t1.namee ORDER BY t2.reg_date DESC ) ORDER BY t1.namee;
-
شوفت بقى الكلام اختلف ازاى كده مش بقول لك
-
استعلام لاختيار اخر طلب تم تسجيله بالجدول من حيث الوقت والتاريخ
ابو جودي replied to figo82eg's topic in قسم الأكسيس Access
طيب بعد اذن اساتذتى ممكن اقول فكرتى المتواضعة اولا فى الجدول tabl2 اضف حقل جديد نوعه تاريخ واعطه الاسم TimeNow وفى القيمة الافتراضية للحقل من الجدول ضع Now() استخدام TOP 1 مع ORDER BY على حقل الوقت (Timenow) هو طريقة شائعة للعثور على أحدث سجل بناء على الزمن هذه الطريقة تعتبر فعالة وسريعة بالنسبة لاستخدام SELECT Max قد يكون ذلك فعالا ولكن قد يكون لديه بعض التأثيرات على الأداء في حالة كانت كمية السجلات كبيرة عموما الفرق في الأداء قد يكون غير ملحوظ في العديد من الحالات والاختيار بين الطريقتين يعتمد على الاحتياجات الدقيقة لتطبيقك يفضل اختيار الطريقة التي تفي بمتطلبات تطبيقك وتتناسب مع نمط البيانات الخاص بك في حالة استفادتك من TOP 1 مع ORDER BY يمكنك الاستمرار في استخدامها بثقة اخيرا الاستعلام يكون بالشكل الاتى: SELECT TOP 1 tabl2.id, tabl2.INAME, tabl2.sal_price, tabl2.Qty, tabl2.No_tawla, tabl2.sal_price * tabl2.Qty AS Price FROM tabl2 ORDER BY tabl2.TimeNow DESC; -
كلام حضرتك من غير تفصيل انا مش قادر احد عاوز اعلى قيمة واللا تبحث بمعايير محدده ؟؟ لو اعلى قيمة استحدم الاتى فى الاستعلام SELECT Amount FROM Table1 WHERE RegDate = (SELECT Max(RegDate) FROM Table1); أو ممكن SELECT TOP 1 Amount FROM Table1 ORDER BY RegDate DESC;
-
طلبلك مش واضح ياريت تقول انت عاوز تعمل ايه بالضبط يعنى انت عاوز ايه بالتفصيل انت بخيل فى شرحك تتوقع تلاقى كرم فى الرد عليك ؟؟؟
-
تسجيل رقم +(اول حرف من الاسم يكون بصفة الية)
ابو جودي replied to ايناس's topic in قسم الأكسيس Access
بعد اذن استاذى الجليل الاستاذ @kkhalifa1960 اختنا السائلة الاستاذة @ايناس استخدمت الكود صح لكن يحتاج الى هذا التعديل فقط =Left(Replace([REGION],"<div>",""),1) & "" وهذا لان مربع النص REGION استخدمت فيه اختنا الغالية خاصية Rich Text -
مطلوب تحديث حقل في جدول بناء على مصدر بيانات مربع تحرير
ابو جودي replied to ابوخليل's topic in قسم الأكسيس Access
استاذى الجليل ومعلمى القدير و والدى الحبيب الاستاذ @ابوخليل جزاكم الله خيــــرا على دعواتكم الطيبة اسأل الله تعالى ان يرزقكم فضلها واجرها اضعافا مضاعفة لكم كل الفضل بعد رب العزة سبحانه وتعالى انضممت اليكم ولا اعلم عن الاكسس الا اسمه فجزاكم الله خيـرا على رعايتكم بحب وتحملكم بحلم شكر الله لكم انتم وكل اساتذتى الذين اتعلم منهم واخيـــــر وليس آخرا احبكم فى الله -
طلب تعديل كود عمل نسخة احتياطية للجداول المرتبطة فقط
ابو جودي replied to moho58's topic in قسم الأكسيس Access
انتظر وان شاء الله ابشـر بالخيـر -
مطلوب تحديث حقل في جدول بناء على مصدر بيانات مربع تحرير
ابو جودي replied to ابوخليل's topic in قسم الأكسيس Access
ومن قال انه يكفينى انا ؟! ومن قال اننى فى حل اعتذر عن التأخير كنت صائم بل روعة حياتنا هم اساتذتنا العظماء الذين اناروا افكارنا شكرا لكم استاذى الجليل و معلمى القدير و والدى الحبيب استاذ @ابوخليل سعادة الحياة أن تكون بجانبك وتساندك روح طيبة وكريمة تمنحك وتهديك الفرح والسرور وتدخل على نفوس من حولها الفرح و السعادة ولا أزكيكم على الله وكل اساتذتنا المبجلين كل كلمات ومعان الشكر والعرفان بالجميل لا تكفيكم وتوفيكم قدر حقكم بارك الله لكم فى عمركم وفى علمكم و عملكم واهلكم وأسال الله تعالى لكم سعادة الدارين وان يزيدكم من فضله كما تدخلون السرور على قلوب طلاب العلم دائما تكثرون من العطاء وبكل سخاء دون كلل ولا ملل احسن الله اليكم كما تحسنون الى طلاب العلم دائما ----- اتفضل استاذى الجليل ومعلمى القدير ووالدى الحبيب اولا الدالة الاتية لاحضار اسماء الحقول Function GetFieldNameFromRowSource(ComboRowSource As String, columnIndex As Integer) As String Dim columns As Variant Dim columnName As String ' Split the RowSource to get the column names columns = Split(Mid(ComboRowSource, InStr(ComboRowSource, "SELECT") + Len("SELECT")), ",") ' Extract the column name from the specified index columnName = Trim(Split(Split(columns(columnIndex - 1), "AS")(0), ".")(1)) ' Return the column name GetFieldNameFromRowSource = columnName End Function وهذه الدالة التى يتم التحديث من خلالها Sub GetComboBoxNameAndUpdateTableRecords(frm As Form) Dim ctrl As Control Dim ComboRowSource As String Dim FldData As String Dim FldID As String Dim strSQL As String ' Loop through all controls on the form For Each ctrl In frm.Controls ' Check if the control is a TextBox or a ComboBox If TypeOf ctrl Is comboBox Then ' Perform your custom action for each control ' For example, print the name and set a default value If Not ctrl Is Nothing Then ' Debug.Print "Control Name: " & ctrl.Name ComboRowSource = ctrl.rowSource FldID = GetFieldNameFromRowSource(ComboRowSource, 1) FldData = GetFieldNameFromRowSource(ComboRowSource, 2) Dim varConditionFieldValue As Variant Dim varUpdateFieldValue As Variant ' Open the database Dim db As DAO.Database Set db = CurrentDb ' Verify RowSource If Len(ComboRowSource) = 0 Then ' Debug.Print "RowSource is empty for control " & ctrl.Name Exit For End If ' Open a recordset for the values in targetComboBox Dim rsCombo As DAO.Recordset Set rsCombo = db.OpenRecordset(ComboRowSource, dbOpenSnapshot) ' Verify Recordset If rsCombo.EOF Then ' Debug.Print "Recordset is empty for control " & ctrl.Name rsCombo.Close Set rsCombo = Nothing Set db = Nothing Exit For End If Do Until rsCombo.EOF Dim TableName As String Dim FieldToUpdate As String Dim ConditionFieldNameTable As Variant Dim ConditionComboBoxFieldNameTable As Variant ' Get the value from the current record in targetComboBox varConditionFieldValue = rsCombo.Fields(FldID).Value varUpdateFieldValue = rsCombo.Fields(FldData).Value ' Table and Field Names TableName = "Table1" FieldToUpdate = "textNm" ConditionFieldNameTable = "frmNm" ConditionComboBoxFieldNameTable = "FieldNm" ' Construct the SQL update statement strSQL = "UPDATE " & TableName & " " & _ "SET " & FieldToUpdate & "='" & Nz(varUpdateFieldValue, "") & "' " & _ "WHERE " & TableName & "." & ConditionComboBoxFieldNameTable & "= '" & ctrl.Name & "' AND " & _ TableName & "." & ConditionFieldNameTable & "= '" & Nz(frm.Name, "") & "' AND " & _ TableName & "." & FieldToUpdate & "= '" & varConditionFieldValue & "';" ' Debug.Print strSQL ' Execute the query db.Execute strSQL, dbFailOnError rsCombo.MoveNext Loop ' Close the recordset and the database rsCombo.Close Set rsCombo = Nothing Set db = Nothing End If End If Next ctrl End Sub ونستدعى الدالة فقط من خلال GetComboBoxNameAndUpdateTableRecords Me هى سوف تقوم بكل شئ بالنيابة عنك لا تقلق منها يا معلملى هى دالة ذكية ليست مثلى طبعا يا استاذى الجليل ومعلمى القدير و والدى الحبيب الاستاذ @ابوخليل ان اردت اضافة هذه المعاملات ( parameters ) الى رأس الدالة لتكتبها عند الاستدعاء ان كانت متغيرة فلا بأس بذلك سبق التعامل معها فى الامثلة السابقة ' Table and Field Names TableName = "Table1" FieldToUpdate = "textNm" ConditionFieldNameTable = "frmNm" ConditionComboBoxFieldNameTable = "FieldNm" بــــــس خلاص أخيرا خلصت الواجب الحمد لله واخيرا المرفق DatabaseUp7.rar -
شكلى هاروح المدرسة لوحدى واوقف نفسى طابور وادى الدرس لنفسى واسال نفسى واجاوب على نفسى واعلم الواجب لنفسى ولما اغلط اوقف نفسى ع السبورة وارفع ايدى بس بغض النظر عن اللى فات ده هاختار افضل اجابه لنفسى اومااااااااااال
- 16 replies
-
- 2
-
- label
- edit label caption
- (و12 أكثر)
-
مطلوب تحديث حقل في جدول بناء على مصدر بيانات مربع تحرير
ابو جودي replied to ابوخليل's topic in قسم الأكسيس Access
استاذى الجليل ومعلمى القدير و والدلى الحبيب الاستاذ @ابوخليل اعتذر انا فى العمل الان لذلك اعتذر عن التأخير فى الرد وهذا التعديل الاخير بناء على رغباتكم اتمنى ان شاء الله أن يكون ملائما ومناسبا بصراحة مش قادر اسهل التعامل مع الدالة باستدعائها باكتر من ذلك اعرف ان كود الاستدعاء اصبح كبير جدا ويحتوى على العديد من المعاملات parameters Sub UpdateTableRecordsFromComboBox(TableName As String, _ FieldToUpdate As String, _ ConditionFieldNameTable As String, _ ConditionComboBoxFieldNameTable As String, _ frm As Form, _ TargetComboBox As ComboBox, _ ConditionFieldName As String, _ UpdateValueFieldName As String) Dim db As DAO.Database Dim strSQL As String Dim varConditionFieldValue As Variant Dim varUpdateFieldValue As Variant Dim rsCombo As DAO.Recordset ' Check if the tableName is specified If Nz(TableName, "") = "" Then MsgBox "Please specify the table name.", vbExclamation Exit Sub End If ' Check if the FieldToUpdate is specified If Nz(FieldToUpdate, "") = "" Then MsgBox "Please specify the target field name to update.", vbExclamation Exit Sub End If ' Check if the targetComboBox is valid If TargetComboBox Is Nothing Then MsgBox "Please select a valid ComboBox.", vbExclamation Exit Sub End If ' Check if the conditionFieldTable is specified If Nz(ConditionFieldNameTable, "") = "" Then MsgBox "Please specify the condition field name for the table.", vbExclamation Exit Sub End If ' Check if the conditionField is specified If Nz(ConditionFieldName, "") = "" Then MsgBox "Please specify the condition field name.", vbExclamation Exit Sub End If ' Check if the updateValueField is specified If Nz(UpdateValueFieldName, "") = "" Then MsgBox "Please specify the update field name.", vbExclamation Exit Sub End If ' Check if the ConditionComboBoxFieldNameTable is specified If Nz(ConditionComboBoxFieldNameTable, "") = "" Then MsgBox "Please specify the condition ComboBox field name for the table.", vbExclamation Exit Sub End If ' Open the database Set db = CurrentDb ' Open a recordset for the values in targetComboBox Set rsCombo = db.OpenRecordset(TargetComboBox.RowSource, dbOpenSnapshot) ' Disable the error handling temporarily On Error Resume Next ' Loop through each record in targetComboBox Do Until rsCombo.EOF ' Get the value from the current record in targetComboBox varConditionFieldValue = rsCombo.Fields(ConditionFieldName).Value varUpdateFieldValue = rsCombo.Fields(UpdateValueFieldName).Value ' Construct the SQL update statement strSQL = "UPDATE " & TableName & " " & _ "SET " & FieldToUpdate & "='" & Nz(varUpdateFieldValue, "") & "' " & _ "WHERE " & TableName & "." & ConditionComboBoxFieldNameTable & "= '" & TargetComboBox.Name & "' AND " & _ TableName & "." & ConditionFieldNameTable & "= '" & Nz(frm.Name, "") & "' AND " & _ TableName & "." & FieldToUpdate & "= '" & varConditionFieldValue & "';" ' Debugging information ' Dbug.Print "SQL Statement: " & strSQL ' Execute the query db.Execute strSQL ' Check for errors If Err.Number <> 0 Then ' Clear the error Err.Clear ' Move to the next record without processing the error Resume Next End If ' Move to the next record in targetComboBox rsCombo.MoveNext Loop ' Enable the normal error handling On Error GoTo 0 ' Close the recordset and the database rsCombo.Close Set rsCombo = Nothing Set db = Nothing strSQL = vbNullString varConditionFieldValue = vbNullString varUpdateFieldValue = vbNullString End Sub المرفق.. DatabaseUp6.rar -
مطلوب تحديث حقل في جدول بناء على مصدر بيانات مربع تحرير
ابو جودي replied to ابوخليل's topic in قسم الأكسيس Access
استاذى الجليل ومعلمى القدير و والدى الحبيب الاستاذ @ابوخليل فى المشاركة السابقة كان الروتين لابد من تمرير له -مربع السرد مصدر البيانات -اسم حقل الشرط -اسم الحقل الذى يحوى القيم المراد التحديث مثلها --------------------------------------------------------------------------------------- فى هذاالتعديل اضفت اسم الجدول واسم الحقل المراد تحديثه كذلك ليكون الروتين عام بذلك لن نحتاج الى تعديل اى شئ فى بناء الكود مستقبلا مهما اختلفت الاسماء للجداول والحقول بذلك يكون متاح لحضرتك كل الافكار فتدلل واختر منها ما يتماشى مع رغباتك ويلائم احتياجاتك وافكارك تحديث جديد لتمرير اسم الجدول كذلك للروتين على ان يكون الاستدعاء UpdateTableRecordsFromComboBox "Table1", "text1", Me.Combo0, "id", "sName" Sub UpdateTableRecordsFromComboBox(TableName As String, _ FieldToUpdate As String, _ TargetComboBox As ComboBox, _ ConditionFieldName As String, _ UpdateValueFieldName As String) Dim db As DAO.Database Dim strSQL As String Dim intConditionFieldValue As Integer Dim strUpdateFieldValue As String Dim rsCombo As DAO.Recordset ' Check if the tableName is specified If Nz(TableName, "") = "" Then MsgBox "Please specify the table name.", vbExclamation: Exit Sub ' Check if the FieldToUpdate is specified If Nz(FieldToUpdate, "") = "" Then MsgBox "Please specify the target field name to update.", vbExclamation: Exit Sub ' Check if the targetComboBox is valid If TargetComboBox Is Nothing Then MsgBox "Please select a valid ComboBox.": Exit Sub ' Check if the conditionField is specified If Nz(ConditionFieldName, "") = "Please specify the condition field name." Then MsgBox "": Exit Sub ' Check if the updateValueField is specified If Nz(UpdateValueFieldName, "") = "" Then MsgBox "Please specify the update field name.": Exit Sub ' Open the database Set db = CurrentDb ' Open a recordset for the values in targetComboBox Set rsCombo = db.OpenRecordset(TargetComboBox.RowSource, dbOpenSnapshot) ' Disable the error handling temporarily On Error Resume Next ' Loop through each record in targetComboBox Do Until rsCombo.EOF ' Get the value from the current record in targetComboBox intConditionFieldValue = rsCombo.Fields(ConditionFieldName).Value strUpdateFieldValue = rsCombo.Fields(UpdateValueFieldName).Value ' Construct the SQL update statement strSQL = "UPDATE " & TableName & " " & _ "SET " & FieldToUpdate & "= '" & Nz(strUpdateFieldValue, "") & "' " & _ "WHERE " & TableName & "." & FieldToUpdate & "= '" & intConditionFieldValue & "';" ' Execute the query db.Execute strSQL ' Check for errors If Err.Number <> 0 Then ' Clear the error Err.Clear ' Move to the next record without processing the error Resume Next End If ' Move to the next record in targetComboBox rsCombo.MoveNext Loop ' Enable the normal error handling On Error GoTo 0 ' Close the recordset and the database rsCombo.Close Set rsCombo = Nothing Set db = Nothing End Sub DatabaseUp4.rar -
مطلوب تحديث حقل في جدول بناء على مصدر بيانات مربع تحرير
ابو جودي replied to ابوخليل's topic in قسم الأكسيس Access
اتفضل استاذى الجليل ومعلمى القدير و والدى الحبيب Sub UpdateTableRecordsFromComboBox(targetComboBox As ComboBox, conditionField As String, updateField As String) Dim db As DAO.Database Dim strSQL As String Dim intconditionFieldValue As Integer Dim strupdateFieldValue As String Dim rsCombo As DAO.Recordset If targetComboBox Is Nothing Then MsgBox "Please select a valid ComboBox.": Exit Sub If Nz(conditionField, "") = "Please specify the condition field name." Then MsgBox "": Exit Sub If Nz(updateField, "") = "" Then MsgBox "Please specify the update field name.": Exit Sub ' Open the database Set db = CurrentDb ' Open a recordset for the values in targetComboBox Set rsCombo = db.OpenRecordset(targetComboBox.RowSource, dbOpenSnapshot) ' Disable the error handling temporarily On Error Resume Next ' Loop through each record in targetComboBox Do Until rsCombo.EOF ' Get the value from the current record in targetComboBox intconditionFieldValue = rsCombo.Fields(conditionField).Value strupdateFieldValue = rsCombo.Fields(updateField).Value ' Construct the SQL update statement strSQL = "UPDATE Table1 " & _ "SET text1 = '" & Nz(strupdateFieldValue, "") & "' " & _ "WHERE Table1.text1 = '" & intconditionFieldValue & "';" ' Execute the query db.Execute strSQL ' Check for errors If Err.Number <> 0 Then ' Clear the error Err.Clear ' Move to the next record without processing the error Resume Next End If ' Move to the next record in targetComboBox rsCombo.MoveNext Loop ' Enable the normal error handling On Error GoTo 0 ' Close the recordset and the database rsCombo.Close Set rsCombo = Nothing Set db = Nothing End Sub وللاستدعاء UpdateTableRecordsFromComboBox Me.Combo0, "id", "sName" DatabaseUp3.rar