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

jjafferr

أوفيسنا
  • Posts

    8,115
  • تاريخ الانضمام

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

  • Days Won

    321

Community Answers

  1. jjafferr's post in تعديل على احد الأكواد was marked as the answer   
    وعليكم السلام 🙂
     
    استعمل الكود مرتين:
    Private Sub CRN_DblClick(Cancel As Integer) File_Path = Application.CurrentProject.Path & "\CONTACT\" File_Name = Me.crn & ".pdf" Name_Path = File_Path & File_Name If Dir(Name_Path) <> "" Then Application.FollowHyperlink Name_Path Else MsgBox "المستندات غير محفوظة" End If File_Path = Application.CurrentProject.Path & "\NEW FOLDER\" File_Name = Me.crn & ".pdf" Name_Path = File_Path & File_Name If Dir(Name_Path) <> "" Then Application.FollowHyperlink Name_Path Else MsgBox "المستندات غير محفوظة" End If End Sub  
    جعفر
  2. jjafferr's post in وجود أكثر من خطأ في حدث واحد أو أوprocedure was marked as the answer   
    وعليكم السلام 🙂
     
    اذا فهمت قصدك:
    في بداية الكود عندك كود هكذا مثلا (اخذته من احد برامجي 🙂 ) :
    نستعمل On Error Goto err_Form_Close في البداية ، بحيث اي خطأ يحدث في الكود سيذهب الى السطر :err_Form_Close من مكان هناك ، بدل الامر Goto ، نستعمل الامر Resume فبدل عن  Goto Exit_Form_Close ، نستعمل Resume Exit_Form_Close  
    Private Sub Form_Close() On Error GoTo err_Form_Close ..... Exit_Form_Close: Exit Sub err_Form_Close: If Err.Number = 2450 Then 'ignor Resume Next 'تخطى هذا الخطأ وانتقل الى السطر التالي ElseIf Err.Number = 52 Then 'Folders don't exist, its a new location, ignor Exit Sub 'اخرج من الحدث ElseIf Err.Number = 76 Then 'path not found MsgBox "مسار مجلد النسخ الاحتياطية غير موجود على حاسبتك" Resume Exit_Form_Close ' Exit_Form_Close اذهب الى السطر Else MsgBox Err.Number & vbCrLf & Err.Description End If Resume Exit_Form_Close End Sub  
    جعفر
  3. jjafferr's post in توسيط النص داخل حقل قابل للنمو بالتقرير was marked as the answer   
    تفضل 🙂
    افتح التقرير rpt_Vertically_center_Fields
     
    الدالة التي تقوم بالعمل ، وعملت لها وحدة نمطية مستقلة ، حتى يمكننا الاستفادة منها لأكثر من تقرير:
    Public Sub VerticalAlignCenter(ByRef ctl As Control) ' 'From: https://www.vbforums.com/showthread.php?505561-VB-VBA-Set-TextBox-and-Label-text-to-Vertically-Align-Center&p=3675142&viewfull=1#post3675142 ' 'Sets the vertical alignment of a label or textbox to "Center" 'NOTE: 'MinimumMargin: the value of the smallest margin Access allows in twips. If you set the .TopMargin 'to "0", Access will actually place a gap equal to 1 point (or 20 twips) rather than actually 'placing the text at the very top border of the control. FURTHER NOTE: Access sucks. ' 'BorderWidth: half the value of .BorderWidth in twips. As you increase the border (Hairline, 1pt, 2pt, etc..) 'Access expands the border equally from the center. We're only concerned with the "inner" section of the border. ' 'TwipsPerPoint: global constant set to 20 On Error GoTo ErrorCode Dim MinimumMargin As Integer Dim BorderWidth As Integer Dim TwipsPerPoint TwipsPerPoint = 20 If Not ((TypeOf ctl Is TextBox) Or (TypeOf ctl Is Label)) Then Exit Sub 'Figure out how many lines it is Dim LenOfText, WidOfBox, NumberOfLines, HtOfText If TypeOf ctl Is TextBox Then LenOfText = ctl.Text Else: LenOfText = ctl.Caption End If 'how wide is this puppy? WidOfBox = ctl.Width LenOfText = (Len(LenOfText) * TwipsPerPoint * ctl.FontSize) / 2 NumberOfLines = Int(LenOfText / WidOfBox) + 1 HtOfText = NumberOfLines * TwipsPerPoint * ctl.FontSize MinimumMargin = 1 * TwipsPerPoint BorderWidth = (ctl.BorderWidth * TwipsPerPoint) / 2 ctl.TopMargin = ((ctl.Height - HtOfText) / 2) - MinimumMargin - BorderWidth ErrorCode: Exit Sub End Sub .
    ثم في التقرير ، انقر على فاصل قسم التفصيل Detail ، وفي حدث "عند الطباعة" (ولن يعمل يأي حدث آخر ، فهو آخر حدث قبل الطباعة ، بينما للاحداث الاخرى يكون فات الاوان لهذا العمل) ، ننادي الدالة اعلاه بإسم الكائن الذي نريد توسيطه :
    Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer) VerticalAlignCenter Me.save VerticalAlignCenter Me.a1 End Sub .
    والنتيجة :

    .
     
    كما يوجد مثال عند ملك دوال الاكسس الثقيلة المتقاعد في : http://www.lebans.com
    http://www.lebans.com/DownloadFiles/A2KVerticalJustify.zip
     
    جعفر
    1293.1.Report_Draw_BoxLine.accdb.zip
  4. jjafferr's post in كيف أطبع تقرير سجلات النموذج المستمر was marked as the answer   
    السلام عليكم 🙂
     
    الظاهر انك تتب طريقة خاصة في عمل فاتورة جديدة ، او انك وضعت الكود في حدث آخر !!
    لأن الكود الذي اعطيتك هو عينا نفس الكود الذي اعطاك الاخ خالد ، والاثنين يعطون تقرير برقم الفاتورة الموجودة في النموذج او النموذج الفرعي !!
     
    على العموم ، هذه صورة عن مكان الكود الذي وضعته انا :

    .
    وهذا تعديل بسيط لحفظ السجل قبل طباعة التقرير:
    Dim stDocName As String If Me.Dirty Then Me.Dirty = False stDocName = "re3" 'DoCmd.OpenReport stDocName, acNormal, , "[invo]=" & Me.invo DoCmd.OpenReport stDocName, acViewPreview, , "[invo]=" & Me.invo  
    جعفر
  5. jjafferr's post in تحديد عدد السجلات في كل ورقة من التقرير was marked as the answer   
    لا تهتم ببقية الكود ، فقط اهتم بكود قسم التفصيل 🙂
     
    وعلى العموم ، الكود فقط لإعادة الترقيم !!
    والطريقة تعتمد على اللعب يدويا بارتفاع هامش راس التقرير وذيله ، حتى لا يكون مجال لطباعة سجلات اكثر من طلبك ، والمهم في رلحصول على النتيجة الصحيحة ، هو ان تستعمل معاينة الطباعة Print Preview ، وليس معاينة التقرير Report Preview .
     
    نعم هناك طريقة لتحدد عدد السجلات ، وبدون اللعب براس وذيل التقرير ،
    ويكون عن طريق اضافة فاصل Page Break ، وتجعله مخفي ، الى ان يصل عندك رقم التسلسل (حقل انت تقوم بعمله في التقرير ، حيث مصدره =1 ، وممكن ان يكون مخفي) الى الرقم 20 (او جميع الارقام التي تقبل القسمة على 20 وبدون باقي) ، حينها تجعل الفاصل Page Break مرئي ، كما في المثال المرفق :
     
     
     
    او
     
    جعفر
  6. jjafferr's post in تحديد عدد السجلات في كل ورقة من التقرير was marked as the answer   
    لا تهتم ببقية الكود ، فقط اهتم بكود قسم التفصيل 🙂
     
    وعلى العموم ، الكود فقط لإعادة الترقيم !!
    والطريقة تعتمد على اللعب يدويا بارتفاع هامش راس التقرير وذيله ، حتى لا يكون مجال لطباعة سجلات اكثر من طلبك ، والمهم في رلحصول على النتيجة الصحيحة ، هو ان تستعمل معاينة الطباعة Print Preview ، وليس معاينة التقرير Report Preview .
     
    نعم هناك طريقة لتحدد عدد السجلات ، وبدون اللعب براس وذيل التقرير ،
    ويكون عن طريق اضافة فاصل Page Break ، وتجعله مخفي ، الى ان يصل عندك رقم التسلسل (حقل انت تقوم بعمله في التقرير ، حيث مصدره =1 ، وممكن ان يكون مخفي) الى الرقم 20 (او جميع الارقام التي تقبل القسمة على 20 وبدون باقي) ، حينها تجعل الفاصل Page Break مرئي ، كما في المثال المرفق :
     
     
     
    او
     
    جعفر
  7. jjafferr's post in مساعدة في كشف الاعوام السابقة was marked as the answer   
    وعليكم السلام 🙂
     
    عملت تغيير في الاستعلام pv ، واسم وطريقة عمل النموذج الفرعي ، واستدعائه ، فرجاء تلقي نظرة عليه كذلك ، حتى يتماشى مع برنامجك :
     

    .
    والنتيجة

    .
    جعفر
    1397.New Microsoft Access Database.accdb.zip
  8. jjafferr's post in تمدد وتقلص حقول التقرير was marked as the answer   
    تفضل يا سيدي 🙂
     

    .
    وهذا الجزء من الكود الذي تم تعديله:
    Me.FilterOn = True Me.Filter = "[yer] = " & MyYear & " and [num] ='" & MyNumnf & "' and [nu] ='" & MyMntj & "' and [NameEmb] ='" & MyMonth & "' and [jh] ='" & MyNoa & "'" ' يتم حساب عدد الحقول التي بها أرقام For i = 1 To 74 fld_value = DSum("fld" & i, "tbl", "[yer] = " & MyYear & " and [num] ='" & MyNumnf & "' and [nu] ='" & MyMntj & "' and [NameEmb] ='" & MyMonth & "' and [jh] ='" & MyNoa & "'") If fld_value > 0 Then 'Debug.Print fld_value 'If DSum("fld" & i, "tbl", "[Name1]='" & Myfilter & "'") > 0 Then flCnt = 1 + flCnt 'إظهار الحقول غير الفارغة Me("fld" & i & "").visible = True Me("lbl" & i & "").visible = True Me("s" & i & "").visible = True ' حساب عرض كل حقل Me("fld" & i & "").Width = Len(CStr(fld_value)) * 145.5 Me("LBL" & i & "").Width = Len(CStr(fld_value)) * 145.5 Me("s" & i & "").Width = Len(CStr(fld_value)) * 145.5 End If Next i If flCnt = 0 Then MsgBox "لا توجد حقول بها قيمة", , "خطأ" DoCmd.CancelEvent Exit Sub End If ' حساب عرض كل حقل 'For i = 1 To 74 'Me("fld" & i & "").Width = Me.Name1.Left / flCnt 'Me("LBL" & i & "").Width = Me.Name1.Left / flCnt 'Me("s" & i & "").Width = Me.Name1.Left / flCnt 'Next i ' إعادة توزيع الحقول غير الفارغة For i = 74 To 1 Step -1 Me("fld" & i & "").Left = WidthFld Me("lbl" & i & "").Left = WidthFld Me("s" & i & "").Left = WidthFld If Me("fld" & i & "").visible Then 'WidthFld = Me("fld" & i & "").Width + WidthFld WidthFld = Me("s" & i & "").Width + WidthFld End If Next i  
    جعفر
     
    مطابقة موجودات2.zip
  9. jjafferr's post in مساعدة في دالة شرطية iif was marked as the answer   
    وعليكم السلام 🙂
     
    اسمح لي اشرح لك طريقة سهلة في التعامل مع الدالة الشرطية iif (ملاحظة: حسب اعدادات كمبيوترك ، فقد تستعمل الدالة الفاصلة المنقوطة ; او الفاصلة , والاكسس سيخبرك برسالة خطأ وسيكون المؤشر واقف على الفاصلة فقم بتغييرها الى فاصلة منقوطة او العكس) :
    هذه القاعدة : اذا عندك شرط 1 ، فاقفل نهايه الدالة بقوس 1 ،
    واذا عندك شرطين 2 ، فاقفل نهاية الدالة بقوسين 2 ،
    واذا عندك شروط 3 ، فاقفل نهادية الدالة باقواس 3 ، وهكذا :
    Condition And / Or Conditions = شرط او / و شروط True = نتيجة الشروط صحيحة False = نتيجة الشروط خطأ بشرط 1 A: iif( (Condition1 And Or Conditions1) ; True ; False ) ونعيد كتابة الدالة بحيث نكتب نتيجة الشرط الخطأ في السطر التالي A: iif( (Condition1 And Or Conditions1) ; True ; False ) بشرطين 2 A: iif( (Condition1 And Or Conditions1) ; True ; iif( (Condition2 And Or Conditions2) ; True ; False )) A: iif( (Condition1 And Or Conditions1) ; True ; iif( (Condition2 And Or Conditions2) ; True ; False )) بشروط 3 A: iif( (Conditions1) ; True ; iif( (Conditions2) ; True ; iif( (Conditions3) ; True ; False ))) A: iif( (Conditions1) ; True ; iif( (Conditions2) ; True ; iif( (Conditions3) ; True ; False )))  
    والآن الى معادلتك ، وبنفس الطريقة :
    1 karar: IIf([moy_bem]>=10);"ناجح"; "اعادة") karar: IIf([moy_bem]>=10);"ناجح"; "إعادة") 2 karar: IIf(([moy_bem]>=10);"ناجح"; IIf(([moy_bem]<10 And [yaer]<=2003);"يوجه"; "إعادة")) karar: IIf(([moy_bem]>=10);"ناجح"; IIf(([moy_bem]<10 And [yaer]<=2003);"يوجه"; "إعادة")) 3 karar: IIf(([moy_bem]>=10);"ناجح"; IIf(([moy_bem]<10 And [yaer]<=2003);"يوجه"; IIf(([moy_bem]>=10 And [moy_admi]<10);"ناجح"; "إعادة"))) karar: IIf(([moy_bem]>=10);"ناجح"; IIf(([moy_bem]<10 And [yaer]<=2003);"يوجه"; IIf(([moy_admi]>=10 And [moy_bem]<10);"ناجح"; "إعادة")))  
    ولما تنتهي من عمل الدالة ، اجمعها في سطر واحد 🙂
    وبسبب وجود كلمات عربية في الدالة ، فقد تلاحظ ان متغيرات الدالة قفزت من مكانها الى مكان آخر ، فلا تهتم لهذه النقطة ، فالاكسس سيعرف موقعهم الصحيح 🙂
     
    جعفر
  10. jjafferr's post in dsum was marked as the answer   
    الكود صح 100% حسب شرحك 🙂
    ما عدا المسافة الزائدة هنا :

    .
     
    1. رجاء عرض رسالة الخطأ والسطر الذي به الخطأ ،
    2. التأكد من نوع الحقول في الجدول ،
    3. الحقلين : Forms!Fatora_be!Fat_num و Forms!Fatora_be!Kind_haraka يجب ان يكونوا : أ. اسماء الحقول في النموذج وليس ب. مصدر الحقول

    .
    جعفر
  11. jjafferr's post in التعديل على كود التصدير الى اكسيل was marked as the answer   
    وعليكم السلام 🙂
     
    تفضل :
    بدل هذا السطر 'curPath = DTPath & "\salah- " & Format(Date, "dd-mm-yyyy") & ".xlsx" استعمل هذا curPath = DTPath & "\" & Me.ChooseTble & ".xlsx"  
    وكذلك تم تغيير مكان هذه الاسطر في الكود ، ليصبح كود التصدير الى اكسل:
    Private Sub أمر26_Click() On Error Resume Next Dim curPath As String Dim xlApp1 As Object 'Excel.Application Dim xlWB1 As Object 'Excel.Workbook If IsNull(Me.ChooseTble) Then Beep MsgBox "اختر الجداول المراد تصديرهم" Exit Sub End If If Box.ItemsSelected.Count = 0 Then Beep MsgBox "اختر الحقول مراد تصديرهم" Exit Sub End If DTPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") 'curPath = DTPath & "\salah- " & Format(Date, "dd-mm-yyyy") & ".xlsx" curPath = DTPath & "\" & Me.ChooseTble & ".xlsx" Dim Ssql As String For Each varItm In Box.ItemsSelected Ssql = Ssql & "[" & Box.ItemData(varItm) & "] ," Next varItm Ssql = Mid(Ssql, 1, Len(Ssql) - 1) Ssql = "select " & Ssql Ssql = Ssql & " from " & ChooseTble Set QFEx = CurrentDb.CreateQueryDef("Qtoexport", Ssql) DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Qtoexport", curPath, , "Qtoexport" 'DoCmd.OutputTo acOutputQuery, "Qtoexport", acViewPreview DoCmd.DeleteObject acQuery, "Qtoexport" Set xlApp1 = CreateObject("Excel.Application") xlApp1.Visible = False 'True Set xlWB1 = xlApp1.Workbooks.Open(curPath) Set xlWs1 = xlWB1.Worksheets("Qtoexport") xlWs1.DisplayRightToLeft = True xlWB1.Save xlApp1.Quit Set xlWs1 = Nothing Set xlWB1 = Nothing Set xlApp1 = Nothing MsgBox "لقد تم تصدير البيانات بنجاح" End Sub  
    جعفر
  12. jjafferr's post in رسالة خطا فى ويندوز ١٠ نطام ٦٤ was marked as the answer   
    اخي محمد ، الاوفيس لا علاقة له بالموضوع ،
    هي فقط اعدادات الوندوز ، الصورة رقم 4 من الرابط اعلاه ، واختيار دولة عربية في اختيارات Unicode ، والتأكد من عدم اختيار المربع Beta.
    ثم يجب اعادة تشغيل الكمبيوتر 🙂
     
    جعفر
  13. jjafferr's post in رسالة خطا فى ويندوز ١٠ نطام ٦٤ was marked as the answer   
    اخي محمد ، الاوفيس لا علاقة له بالموضوع ،
    هي فقط اعدادات الوندوز ، الصورة رقم 4 من الرابط اعلاه ، واختيار دولة عربية في اختيارات Unicode ، والتأكد من عدم اختيار المربع Beta.
    ثم يجب اعادة تشغيل الكمبيوتر 🙂
     
    جعفر
  14. jjafferr's post in رسالة خطا فى ويندوز ١٠ نطام ٦٤ was marked as the answer   
    اخي محمد ، الاوفيس لا علاقة له بالموضوع ،
    هي فقط اعدادات الوندوز ، الصورة رقم 4 من الرابط اعلاه ، واختيار دولة عربية في اختيارات Unicode ، والتأكد من عدم اختيار المربع Beta.
    ثم يجب اعادة تشغيل الكمبيوتر 🙂
     
    جعفر
  15. jjafferr's post in مساعدة في تعديل كود حساب بين تاريخين بعدد السنوات was marked as the answer   
    وعليكم السلام 🙂
     
    تفضل :
    Private Sub yars_AfterUpdate() '1 Dim ys as Date ys = DateAdd("yyyy", Me.WARRNTY, Me.BDATE) + DateAdd("yyyy", 0, Me.BDATE) - BDATE Me.EDATE = DateAdd("D", -1, ys) 'Or '2 Dim ys As Date ys = Me.BDATE - 1 Me.EDATE = DateAdd("yyyy", Me.WARRNTY, ys) + DateAdd("yyyy", 0, ys) - ys End Sub  
    جعفر
  16. jjafferr's post in استخدام دالة الاكسل sumproduct في برنامج الاكسس (معدل) was marked as the answer   
    وعليكم السلام 🙂
     
    معظم الوقت هناك بدائل في الاكسس (وليس دائما) ، عن معادلات الاكسل 🙂
    فالافضل ان تفهم عمل دالة الاكسل ، ثم تعمل على البديل في الاكسس ، كما قال اخي حسنين 🙂
     
    اما اذا كنت تعمل على الاكسس ، ولكن تريد ان تستعمل دالة/مكتبة الاكسل ، فنعم ممكن:
    1. اختيار مكتبة الاكسل / مثلا:

    .
    2. ثم اجعل معادلتك التي في الاكسل هنا ، مثل:
    MsgBox Excel.WorksheetFunction.SumProduct(array1, array2, array3) .
    وبهذه البساطة 🙂
     
     
     
    وهنا اخونا @رمهان وضع مثال لدالة اخرى:
    .
     
    جعفر
  17. jjafferr's post in تغير اسم صوره في مجلد بناء علي اسم حقل برمجيا was marked as the answer   
    الكود يعمل نسخة من قيمة الحقل Emp_Name ويضعه في الذاكرة ،
    ثم يفتح متصفح الملفات ، يفتح البارتيشن \:C (اذا الملفات على مجلد معين ، تقدر تغير المسار من الكود ، بحيث يفتح المتصفح هذا المجلد مباشرة) :
    Private Sub cmd_Open_File_Explorer_Click() Me.EMP_NAME.SetFocus DoCmd.RunCommand acCmdCopy 'Application.FollowHyperlink "C:\" 'or 'Dim Foldername As String 'Foldername = "\\server\Instructions\" 'Shell "C:\WINDOWS\explorer.exe """ & Foldername & "", vbNormalFocus 'or Shell "C:\WINDOWS\explorer.exe c:\", vbNormalFocus 'Open Windows Explorer, C partition End Sub .
    ومنها تتصفح الى المجلد المطلوب ،
    ولما تريد ان تغير اسم ملف ، انقر على الملف بالفأرة اليسار مرة واحدة ، ثم انقر على F2 من لوحة المفاتيح يدويا ، وسيكون الملف جاهز لتغيير الاسم ، اضغط على لوحة المفاتيح Ctrl+V للصق الاسم الجديد.
     
    جعفر
  18. jjafferr's post in التاكد من وجود كلمة ضمن جملة في مربع نص اكسس was marked as the answer   
    وعليكم السلام 🙂
     
    مربع نص اسم الامراض= str_Sickness
    مربع نص مرض مزمن= str_chronic

     
    if instr(me.str_Sickness,"سكر")>0 or instr(me.str_Sickness,"ضغط")>0 then me.str_chronic="مزمن" end if  
    جعفر
  19. jjafferr's post in التاكد من وجود كلمة ضمن جملة في مربع نص اكسس was marked as the answer   
    وعليكم السلام 🙂
     
    مربع نص اسم الامراض= str_Sickness
    مربع نص مرض مزمن= str_chronic

     
    if instr(me.str_Sickness,"سكر")>0 or instr(me.str_Sickness,"ضغط")>0 then me.str_chronic="مزمن" end if  
    جعفر
  20. jjafferr's post in التاكد من وجود كلمة ضمن جملة في مربع نص اكسس was marked as the answer   
    وعليكم السلام 🙂
     
    مربع نص اسم الامراض= str_Sickness
    مربع نص مرض مزمن= str_chronic

     
    if instr(me.str_Sickness,"سكر")>0 or instr(me.str_Sickness,"ضغط")>0 then me.str_chronic="مزمن" end if  
    جعفر
  21. jjafferr's post in في التقرير مطلوب حقل يظهر فيه قيم مختلفة من حقول أخرى was marked as the answer   
    هممم
    انت تنظر لها: تريد الحقل اللي فيه المبلغ فقط ، مثلا السجل الاول = 6093.69 ،
    وانا انظر لها: نجمع الحقول (وليس نعرضهم جنب بعض) ،  مثلا السجل الاول = 6093.69 +0 +0 = 6093.69 ،
    والنتيجة ، الطريقتين تعطي نفس النتيجة 🙂
     
    هل كلامي صحيح ؟
  22. jjafferr's post in بخصوص FileDialog(msoFileDialogFilePicker was marked as the answer   
    استعمل هذا الحدث بدل الموجود عندك :
    Private Sub btn_search_Click() Dim FileDialog As Object With Application.FileDialog(3) .Title = "Please select a File" .Filters.Clear .Filters.Add "extensions", "*.xls, *.xlsx, *.txt" .AllowMultiSelect = False .InitialFileName = "" If .Show = -1 Then Me.path = .SelectedItems(1) End If End With End Sub  
    جعفر
  23. jjafferr's post in مشكلة عند تغيير حجم الشاشة was marked as the answer   
    وعليكم السلام 🙂
     
    اهنئك على الشجاعة في اتخاذ هذا القرار ، وتأكد بأنك على الطريق الصحيح 🙂
     
    ولجعل جميع الكائنات في اتجاه واحد من الشاشة :
    اختار جميع الكائنات ، ثم اختار احد الجهات التسعة التي تريد تثبيت الكائنات بها ، والتجربة خير برهان :

    .
    جعفر
  24. jjafferr's post in تحديد الجنس استناداً إلى الاسم was marked as the answer   
    وعليكم السلام 🙂
     
    طريقة الاخ خالد هي الصحيحة ،
    ولكن وبما انك طلبت هذه الطريقة الاخرى ، فاليك الطريقة:
    1. اعمل استعلام لجدول الذكور ، وأخر لجدول الاناث ، ثم استعلام لجدول الطلبة ،
    2. في الاستعلام ، نطلب منه ان يستخرج لنا الاسم الاول من الاسم الكامل ، كما نراه في الحقل F ،
    3. نعمل حقل اضافي لتعريف نوع الجنس ، واسمه G :

    .
    وهذه النتيجة:

    .
    4. نعمل استعلام لتحديث اسماء الذكور ، وآخر لتحديث اسماء الاناث ،
    5. الرابط بين الاستعلامات هو الاسم الاول :

    .
    والنتيجة:

    .
    تم تحديث جميع الاسماء الموجودة في جدولي الذكور والاناث ، 
    اما الاسماء الغير موجودة ، فيكون الحقل فيها فارغ ، لذلك ارجع واقول:
    طريقة الاخ خالد هي الصحيحة 🙂
     
    جعفر
    1368.if-name-set-gendre.mdb.zip
  25. jjafferr's post in مساعدة في دالة case is او دالة value was marked as the answer   
    في جزئية كنت ناوي اكتبها مع مشاركتي السابقة ، بس لما اخبرتني ام العيال ان الغدى جاهز ، طارت عن بالي 🙂
     
    بعض الاوقات يكون عندنا مربع سرد فيه اكثر من عمود ، ونكون عملنا كود على الحدث "بعد تحديث" المربع ، حتى يضع قيمة العمود الثاني او الثالث في  حقل او حقلين ، وعليه يكون الكود هكذا /
    Private Sub Form_Current() Dim nRow As Long, nColumn As Long 'nRow = رقم السطر 'nColumn = رقم العمود nColumn = 0 For nRow = 0 To Me.typ.ListCount - 1 If Me.typ.Column(nColumn, nRow) = "Y" Then Me.typ.Value = Me.typ.ItemData(nRow) Call typ_AfterUpdate '<==== Exit For End If Next i End Sub Private Sub typ_AfterUpdate() '<==== Me.Typ2 = Me.typ.Column(1) End Sub  
    جعفر
×
×
  • اضف...

Important Information