-
Posts
2,205 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
134
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
مشاركات المكتوبه بواسطه kanory
-
-
منذ ساعه, SAROOK said:
ولكن لم افهم اين المشكلة
يبدو ان المشكلة عندما عدلت اسماء الحقول بقيت الاسماء القديمة في هذا الاستعلام الموجود في الصورة ..... ولكن عندما قمت باستعراض الاستعلام الموجود في الصورة ( بعرضة او بفتحه على وضع التصميم ) اعاد الاكسس تحديث اسماء الحقول فعمل البرنامج بدون مشاكل ....... جرب الطريقة لديك واعلمنا بالنتيجة
- 1
-
3 ساعات مضت, SAROOK said:
حدث الخطاء المبين بالصور المرفقة ولم استطع الوصول الى سبب الخطاء
المرفق شغال بدون اخطاء ... جرب
- 1
-
7 ساعات مضت, خالد عبد الغفار said:
السلام عليكم ورحمة الله
بالنموذج حقل ( lgna_1) اقوم فيه بادخال رقم اللجنه والتى تتكرر مرتين بواقع 2 معلم ارجو اذا كان نوع الاول والثانى أنثى أى = 2 تظهر رساله عند تحديث الحقل برقم اللجنة تفيد بان المعلمان لا يجوز ان يكون نوعهما = 2 وكذلك الديانة لا يجوز ان يكون المعلمان ديانتهما = 2
وعليكم السلام ورحمة الله ......
تفضل <><><><><><<><>
If DCount("[ID]", "[tb_tashkeel]", "[lgna_1] =" & [Forms]![tashkeel]![lgna_1] & " And [gender] =" & [Forms]![tashkeel]![gender] & " ") = 1 Or DCount("[ID]", "[tb_tashkeel]", "[lgna_1] =" & [Forms]![tashkeel]![lgna_1] & " And [religion] =" & [Forms]![tashkeel]![religion] & " ") = 1 Then MsgBox "هناك تكرار في الجنس او الديانة" Me.lgna_1 = "" End If
-
-
2 ساعات مضت, kams3008 said:
ملاحظة اريد الصورة تتحمل وحدها
طيب هل اسم الصورة هي نفس رقم التعريف للموظف ؟؟؟؟؟؟
اذا امكن مرفق مبسط لدراسته والتعديل عليه ......
-
1 ساعه مضت, سلمان الشهراني said:
الله يعطيك الف الف عافيه والف شكر لك
واياك...
-
منذ ساعه, سلمان الشهراني said:
السلام عليكم واسعد الله اوقات الجميع
1- يوجد استعلام اسمه QRFingerDelete يظهر ارقام المشتركين حسب معايير معينه
2- المطلوب هو البحث عن هذه الارقام في جدول template حقل UsrID
ومن ثم حذف هذه السجلات بالكاملوهذه طريفة اخرى اقل اكواد <><><><><><><>
Dim db As DAO.Database Set db = CurrentDb() db.Execute "DELETE template.UsrID, * FROM template WHERE (((template.UsrID) In (SELECT No_Common FROM QRFingerDelete)))", dbFailOnError Set db = Nothing
- 1
-
وعليكم السلام
تفضل <><><><><><><><>
Dim rs As DAO.Recordset Dim R As Integer Set rs = CurrentDb.OpenRecordset(" SELECT TB_1.No_Common " & _ " FROM TB_1 INNER JOIN TB_2 ON TB_1.No_Common = TB_2.No_Common " & _ " WHERE (((TB_2.End_Date)<=Date()-1) AND ((TB_2.Case_Com)=102) AND ((TB_2.jadd)=False));", dbOpenDynaset) rs.MoveLast rs.MoveFirst R = rs.RecordCount For i = 1 To R DoCmd.SetWarnings False DoCmd.RunSQL "DELETE template.id, template.FingerTmplate, template.UsrID " & _ " FROM template " & _ " WHERE (((template.UsrID)=" & rs!No_Common & "));" DoCmd.SetWarnings True rs.MoveNext Next i rs.Close Set rs = Nothing
- 1
-
35 دقائق مضت, Muhann3d said:
هل من الممكن شرح مبسط لدالة GenerateSequence
طيب ، سأشرح لك الدالة `GenerateSequence`
هذه الدالة تقوم بإنشاء تسلسل رقمي للاسماء المتشابهة في استعلام :
1. `Function GenerateSequence( FullName As String) As Integer`: هذا تعريف الدالة `GenerateSequence` التي تأخذ مُدخل واحد يُسمى ` FullName` من نوع `String` وتُرجع قيمة من نوع `Integer`.
2. `Static dict As Object`: هنا نُعرف متغير `dict` ككائن `Object`. الكلمة `Static` تعني أن الكائن `dict` سيحتفظ بقيمته حتى بعد انتهاء تنفيذ الدالة، وهذا مهم لأننا نريد أن يحتفظ القاموس بالاسماءوالأرقام المتسلسلة التي تم إضافتها سابقًا.
3. `If dict Is Nothing Then Set dict = CreateObject("Scripting.Dictionary")`: هذا الشرط يتحقق إذا كان الكائن `dict` لم يتم إنشاؤه بعد، وفي هذه الحالة يتم إنشاء كائن جديد من نوع "Dictionary" (قاموس).
4. `If Not dict.exists( FullName) Then`: هذا الشرط يتحقق إذا كان الاسم` FullName` غير موجود في القاموس `dict`.
5. `dict.Add FullName, dict.Count + 1`: إذا كان الاسم` FullName` غير موجود، يتم إضافته إلى القاموس مع قيمة تسلسل رقمي جديدة تُحسب بإضافة واحد إلى عدد الاسماء الموجودة في القاموس.
6. `GenerateSequence = dict( FullName)`: في النهاية، تُرجع الدالة القيمة المتسلسلة للاسم` FullName` الموجود في القاموس.
باستخدام هذه الدالة في استعلام، يمكنك إنشاء حقل محسوب يعرض رقمًا متسلسلًا لكل اسم متشابه بناءً على ترتيب ظهوره في الاستعلام. هذا مفيد لتتبع الاسماء وترتيبها بشكل فريد داخل الاستعلام.
- 2
-
- 1
-
-
اقرأ هذا الموضوع وسوف يساعدك في ذلك ...................................
في 23/12/2022 at 11:35, jjafferr said:السلام عليكم 🙂
اذا عندنا تقرير بهذه الطريقة:
.
اليس الافضل دمج بيانات الحقل المتكررة عموديا في حقل واحد ، مثل الوورد مثلا الى :
.
طريقة العمل :
1. اعمل تقريرك بالطريقة اللي تراها مناسبة ، بالفرز والتصفية :
.
او بالمجاميع :
.
2. ولكن قم بوضع جميع الحقول في قسم "التفصيل" Detail :
.
3. ثم اجعل برواز جميع حقول هذا القسم شفافة
.
4. ثم الحقول التي تريد دمجها ، اخفاء المتكرر = نعم ، Hide Duplicates = Yes
.
5. ثم ضع هذه الاحداث للتقرير
Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer) 'Border color not set, use field ForeColor Call Detail_Print_Run_All(5, "'اليوم', 'التاريخ','الزمن'") End Sub Private Sub Report_Open(Cancel As Integer) Call Report_Open_Run(Me.Name) End Sub Private Sub Report_Close() On Error Resume Next Set ctl_ReSize = Nothing End Sub Private Sub Report_Page() Call Report_Page_Run End Sub
.
6. لا تحتاج الى عمل اي تغيير في الاحداث اعلاه ، فقط انسخها من هنا والصقها في تقريرك ،
ما عدا اول جزء :
- عرض البرواز ،
- حيث نخبره باسماء الحقل/الحقول التي نريد دمجها عموديا ،
- لون البرواز يكون حسب اللون الذي نكتبه ،
- او اذا لم نكتب لون البرواز ، فلون البرواز سيكون لون نص الكلمات في الحقل
.
7. نسخ الوحدة النمطية mod_Report_Field_Hieght_ReSize الى تقريرك ن وكذلك بدون عمل اي تغيير فيها :
Option Compare Database Option Explicit Dim rpt_Name_ReSize As String Dim rgb_Border_ReSize As Long, ini_rgb_Border_ReSize As Long Dim Detail_Calc_Height_ReSize As Long Dim Exclude_fld_Name_ReSize As String Dim Add_H_Each_Record_ReSize As Boolean Dim fildMaxHeight_ReSize As Long Dim myDrawWidth As Integer Public ctl_ReSize As Control Dim i_ReSize As Integer, j_ReSize As Integer Dim x_ReSize() As String, tmp_ReSize As String Dim Count_Pages_ReSize As Integer Dim sfld_Name_ReSize() As String, sfld_Value_ReSize() As String, _ sfld_Count_ReSize() As Integer Dim L_ReSize As Single, T_ReSize As Single, W_ReSize As Single, H_ReSize As Single ' Function Detail_Print_Run_All(LineWidth As Integer, myFields As String, Optional border_Color As Long = 1) 'we can this Function in the following ways, indicating Border Color 'Call Detail_Print_Run_All(5, "'c1', 'save', 'b1'", RGB(0, 0, 0)) 'Border color is RGB Value 'Call Detail_Print_Run_All(5, "'c1', 'save', 'b1'", vbBlack) 'Border color is Black 'Call Detail_Print_Run_All(5,"'c1', 'save', 'b1'", vbMagenta) 'Border color is Magenta 'Call Detail_Print_Run_All(5,"'c1', 'save', 'b1'") 'Border color not set, use field ForeColor 'Call Detail_Print_Run_All(5,"'b1'", RGB(0, 0, 0)) '5 is Line Width 'we get most the Lines drawn in Detail Section, 'except for the Last Record in each page, where we use Report Page event (the last page is easy) ini_rgb_Border_ReSize = border_Color rgb_Border_ReSize = ini_rgb_Border_ReSize Exclude_fld_Name_ReSize = myFields Add_H_Each_Record_ReSize = False myDrawWidth = LineWidth 'make an array of the fields x_ReSize = Split(Exclude_fld_Name_ReSize, ",") ReDim Preserve sfld_Name_ReSize(UBound(x_ReSize)) ReDim Preserve sfld_Value_ReSize(UBound(x_ReSize)) ReDim Preserve sfld_Count_ReSize(UBound(x_ReSize)) '1 'do the Detail Lines for the remaining fields Call Detail_Sec_Max_Height '2 'now work on the special fields Lines For i_ReSize = 0 To UBound(x_ReSize) 'remove the ' , and the extra spaces from the Left and Right tmp_ReSize = RTrim(LTrim(Replace(x_ReSize(i_ReSize), "'", ""))) sfld_Name_ReSize(i_ReSize) = tmp_ReSize Call Scale_Box_Lines(tmp_ReSize) Next i_ReSize End Function Function Report_Open_Run(rpt_Name_ReSize_1) rpt_Name_ReSize = rpt_Name_ReSize_1 'Reset the variables from here Count_Pages_ReSize = 0 Erase sfld_Name_ReSize Erase sfld_Value_ReSize Erase sfld_Count_ReSize Detail_Calc_Height_ReSize = 0 End Function Function Report_Page_Run() 'make an array of the fields x_ReSize = Split(Exclude_fld_Name_ReSize, ",") 'now work on the special fields Lines For j_ReSize = 0 To UBound(x_ReSize) 'remove the ' , and the extra spaces from the Left and Right tmp_ReSize = RTrim(LTrim(Replace(x_ReSize(j_ReSize), "'", ""))) sfld_Name_ReSize(j_ReSize) = tmp_ReSize Set ctl_ReSize = Reports(rpt_Name_ReSize)(tmp_ReSize) If ini_rgb_Border_ReSize = 1 Then rgb_Border_ReSize = ctl_ReSize.ForeColor End If 'make it simple to understand L_ReSize = ctl_ReSize.Left W_ReSize = ctl_ReSize.Width T_ReSize = ctl_ReSize.Top 'H_ReSize = ctl_ReSize.Height 'we have to add the Sections/Fields ABOVE the Detail Section If Reports(rpt_Name_ReSize).Page = 1 Then H_ReSize = Detail_Calc_Height_ReSize + _ Reports(rpt_Name_ReSize).PageHeaderSection.Height + _ Reports(rpt_Name_ReSize).ReportHeader.Height Else H_ReSize = Detail_Calc_Height_ReSize + _ Reports(rpt_Name_ReSize).PageHeaderSection.Height End If Reports(rpt_Name_ReSize).DrawWidth = myDrawWidth Reports(rpt_Name_ReSize).Line (L_ReSize, T_ReSize + H_ReSize)-(L_ReSize + W_ReSize, T_ReSize + H_ReSize), rgb_Border_ReSize 'Bottom Line Next j_ReSize Detail_Calc_Height_ReSize = 0 End Function Public Function Scale_Box_Lines(fld_Name As String) Set ctl_ReSize = Reports(rpt_Name_ReSize)(fld_Name) 'make it simple to understand L_ReSize = ctl_ReSize.Left W_ReSize = ctl_ReSize.Width T_ReSize = ctl_ReSize.Top H_ReSize = ctl_ReSize.Height If ini_rgb_Border_ReSize = 1 Then rgb_Border_ReSize = ctl_ReSize.ForeColor End If 'take the highst Height If fildMaxHeight_ReSize > H_ReSize Then H_ReSize = fildMaxHeight_ReSize End If If ctl_ReSize.Text <> sfld_Value_ReSize(i_ReSize) Then sfld_Value_ReSize(i_ReSize) = ctl_ReSize.Text sfld_Count_ReSize(i_ReSize) = 1 End If 'Box the cells 'Left and Right ctl_ReSize.BorderColor = vbWhite Reports(rpt_Name_ReSize).DrawWidth = myDrawWidth Reports(rpt_Name_ReSize).Line (L_ReSize, T_ReSize)-(L_ReSize, H_ReSize), rgb_Border_ReSize 'Left Line Reports(rpt_Name_ReSize).Line (L_ReSize + W_ReSize, T_ReSize)-(L_ReSize + W_ReSize, H_ReSize), rgb_Border_ReSize 'Right Line 'Top and Bottom If Reports(rpt_Name_ReSize).Page <> Count_Pages_ReSize Then 'first Count_Pages_ReSize = Count_Pages_ReSize + 1 Reports(rpt_Name_ReSize).Line (L_ReSize, T_ReSize)-(L_ReSize + W_ReSize, T_ReSize), rgb_Border_ReSize 'Top Line ElseIf sfld_Count_ReSize(i_ReSize) = 1 Then 'First Record Reports(rpt_Name_ReSize).Line (L_ReSize, T_ReSize)-(L_ReSize + W_ReSize, T_ReSize), rgb_Border_ReSize 'Top Line End If sfld_Count_ReSize(i_ReSize) = sfld_Count_ReSize(i_ReSize) + 1 End Function Public Function Detail_Sec_Max_Height() fildMaxHeight_ReSize = 0 'get the max Height For Each ctl_ReSize In Reports(rpt_Name_ReSize).Section(0).Controls If ctl_ReSize.Height > fildMaxHeight_ReSize Then fildMaxHeight_ReSize = ctl_ReSize.Height End If Next 'Draw lines around the fields For Each ctl_ReSize In Reports(rpt_Name_ReSize).Section(0).Controls If InStr(Exclude_fld_Name_ReSize, "'" & ctl_ReSize.Name & "'") = 0 Then Reports(rpt_Name_ReSize).DrawWidth = myDrawWidth Reports(rpt_Name_ReSize).Line (ctl_ReSize.Left, ctl_ReSize.Top)-Step(ctl_ReSize.Width, fildMaxHeight_ReSize), ctl_ReSize.ForeColor, B 'just add the Heighs of ONE Record If Add_H_Each_Record_ReSize = False Then Detail_Calc_Height_ReSize = Detail_Calc_Height_ReSize + fildMaxHeight_ReSize Add_H_Each_Record_ReSize = True End If End If Next End Function
.
8. ما عدا هذا الجزء ، والذي يجب ان نضع فيه اسماء جميع الاقسام التي فوق "قسم التفصيل" ، والتي بها ارتفاع :
.
من هنا نعرف اسم هذه الاقسام :
.
وهذه نتائج بعض التقارير التي تم النجربة عليها :
.
.
.
.
ولم اتوصل لطريقة لجعل الكلمات في منتصف الحقل عموديا ، هكذا:
جعفر
- 1
-
ممكن في وحدة نمطية وتناديها من النموذج
او تعمل زر وتلصق الكود مباشرة فيه
بالتوفيق
-
Dim rs As DAO.Recordset Dim rs1 As DAO.Recordset Dim R As Integer Dim firstRecordFields As String Dim firstRecordFields1 As String Set rs1 = CurrentDb.OpenRecordset("SELECT Table1.الاسم FROM Table1 GROUP BY Table1.الاسم;", dbOpenDynaset) rs1.MoveLast: rs1.MoveFirst R = rs1.RecordCount For i = 1 To R Set rs = CurrentDb.OpenRecordset("SELECT Table1.الاسم, Table1.العمل1, Table1.العمل2, Table1.اللجنة1, Table1.اللجنة2 " & _ " FROM Table1 " & _ " WHERE (((Table1.الاسم)=""" & rs1!الاسم & """));", dbOpenDynaset) If Not (rs.BOF And rs.EOF) Then rs.MoveLast firstRecordFields = rs!العمل1 firstRecordFields1 = rs!اللجنة1 rs.MoveFirst rs.Edit rs!العمل2 = firstRecordFields rs!اللجنة2 = firstRecordFields1 rs.Update End If rs1.MoveNext Next i rs.Close rs1.Close Set rs = Nothing Set rs1 = Nothing
لهذا كان السؤال .... لان الكود أو البرنامج ممكن يعلق يوقف يحدث خطأ ما ... عندها لن تستطيع العودة لتلك البيانات .... على العموم جرب هذا الكود وبدون حذف ,,, فقط تحديث للبيانات
-
1 ساعه مضت, اشرف السيد يوسف said:
المطلوب دمج السجلين بسجل واحد مع تحريك البيانات من السجل الثانى الى مواضع الجقول الموضحة بالصورة
رغم ان العنوان لا يمثل المطلوب وهذا مخالف لترتيبات وقوانين المنتدى .....
لكن بعد الدمج ماهو مصير السجل الثاني ( هل يحذف أم يبقى في الجدول ) .......
- 1
-
33 دقائق مضت, Foksh said:
هذا ما لمحت له في كلامي
طيب ممكن نستخدم هذه الطريقة .... ولكن يبقى ايضا نقطة مربعات التسمية وعددها في النموذج ؟؟؟؟؟
Dim db As Object Dim rst As DAO.Recordset Dim mySQL As String Dim i, m As Integer mySQL = "SELECT DISTINCT جدول1.[اسم العامل], DSum(""راتب"",""جدول1"",""[اسم العامل] ='"" & [اسم العامل] & ""'"") AS Expr1 FROM جدول1;" Set rst = CurrentDb.OpenRecordset(mySQL) rst.MoveLast: rst.MoveFirst If Not rst.BOF Then rst.MoveFirst Dim ctl As Control For i = 1 To rst.RecordCount Me.Controls("a" & i).Caption = "مجموع" & " " & rst.Fields(0) Me.Controls("b" & i).Caption = rst.Fields(1) rst.MoveNext Next i rst.Close Set rst = Nothing
-
1 ساعه مضت, waheidi2005 said:
المطلوب
هل هناك طريقة بمجرد اختيار الاسم يظهر الترتيب وعدد الصف الكلي في خانة الرقم تلقائي
جرب المرفق .....................
- 1
-
6 ساعات مضت, kanory said:
وحصلت منك على اجابه مختصرة وبخيلا فيها لا تفيد سؤالي
في 25/2/2024 at 09:46, Abdelaziz Osman said:1 ساعه مضت, Abdelaziz Osman said:تقريبا مش شغال معايا الكود
انا اعتذر منك على المواصلة .....
- 1
-
53 دقائق مضت, Abdelaziz Osman said:
هو تمام اوك اول سجل طريقة طيبة ان شاء الله
وجيدة ان كنت بسأل على فكرة السجلات جميعها ربما احد يقوم بتغيير قيم الحقول
وجزاكم الله خيرا إليكم جميعا على تفاعلكم واهتمامكم بالغ التقدير
وبالنسبة للتغيير اعرف كيف احمى الحقول من التغيير
جرب هذا ........
Private Sub Order_No_AfterUpdate() D_R = DateAdd("d", -3, Date) On Error GoTo Errw DoCmd.GoToRecord , , acFirst For i = 1 To Me.Recordset.RecordCount If Me.supplier = "مرفوض" And Me.mark = 0 And Format(Me.inday, "dd/mm/yyyy") <= Format(D_R, "dd/mm/yyyy") And IsNull(Me.P_Odate) Then DoCmd.GoToRecord , , acLast DoCmd.SetWarnings False DoCmd.RunCommand acCmdDeleteRecord Me.Order_No.SetFocus MsgBox "لايمكن اضافة جديد" Exit Sub Else Me.Order_No.SetFocus End If DoCmd.GoToRecord , , acNext Next i Exit Sub Errw: End Sub
-
تغضل طبق على مثالك
في 23/8/2022 at 15:36, kanory said: -
واياك اخي الكريم
-
عشان كده انا سئلتك هنا هذا السؤال
في 24/2/2024 at 23:44, kanory said:وحصلت منك على اجابه مختصرة وبخيلا فيها لا تفيد سؤالي
في 25/2/2024 at 09:46, Abdelaziz Osman said:@kanory التسلسل مرتب لا يجوز تجاوزه
قلت اضع لك اجابة وعندما تجرب تضطر الى استخراج اجابات مطولة . كما حصل الان ..
3 ساعات مضت, Abdelaziz Osman said:يا مدير
بالنسبة لتانى سطر فى كود الحدث
DoCmd.GoToRecord , , acFirst
ده معناه انه هيطبق الشروط على أول سجل فقط صح كده
طيب ما ينفعش يطبق الشروط على كل السجلات السابقة
بالغ التحية
طيب ممكن طبعا ... جاري التعديل ولكن عندما اعود الى المكتب ... بارك الله فيك
-
-
في 22/2/2024 at 01:07, Abdelaziz Osman said:
اربع شروط معا
وهم اذا الحقل الأول خالى
والحقل الثانى قبل ثلاث ايام من تاريخ السيستم
والحقل الثالث به كلمة "مرفوض"
والحقل الرابع خالى
اذا تحققت تلك الشروط الاربع معا
كما هو بالصورة
عندما اقوم باضافة سجل جديد بداية من حقل order no والكتابة بداخل هذا الحقل ثم اقوم بالضغط enter يتم الغاء الادخال اي يتم تنفيذ امر undo
راجع المرفق وتأكد فقط الان من الشروط الاربعة هل تحققت ..........
- 1
- 1
رسالة تنبيه
في قسم الأكسيس Access
قام بنشر
تفضل <><><><><><><><><>
If DCount("[ID]", "[tb_tashkeel]", "[lgna_1] =" & [Forms]![tashkeel]![lgna_1] & " And [gender] =" & [Forms]![tashkeel]![gender] & " And [gender] =2 ") = 1 Then MsgBox "هناك تكرار في الجنس" Me.lgna_1 = "" ElseIf DCount("[ID]", "[tb_tashkeel]", "[lgna_1] =" & [Forms]![tashkeel]![lgna_1] & " And [religion] =" & [Forms]![tashkeel]![religion] & " ") = 1 Then MsgBox "هناك تكرار في الديانة" Me.lgna_1 = "" End If