safaa salem5 قام بنشر يوليو 29 قام بنشر يوليو 29 السلام عليكم لو عايزه اجيب قيمة reference_value من جدول بس بشروط Dim reference_value As Variant reference_value = DLookup("Reference", "normals_tbl", _ "Gender = '" & Forms("pt_frm")("gender").value & "' AND " & _ "Ageunit = '" & Forms("pt_frm")("ageunit").value & "' AND " & _ "tcode = 144 AND " & _ "age >= [from] AND age <= [to]") If Not IsNull(reference_value) Then Forms!pt_frm!pt_r.value = reference_value End If دا شكل الجدول اللى عايزه منه قيمة Reference بيدينى ايرور على كلمة age تفتكرو ليه normals_tbl num tcode Gender from to Ageunit Low High unit Reference 1 1 Male 1 10 Days 10 90 µg/mL 10-90 2 1 Female 1 10 Days 15 20 µg/mL 15-20 3 1 Male 11 20 Days 11 44 µg/mL 11-44 4 1 Female 11 20 Days 15 58 µg/mL 15-58 7 144 Male 1 50 Years 10 50 % 10-50
safaa salem5 قام بنشر يوليو 29 الكاتب قام بنشر يوليو 29 (معدل) مع العلم الكود هيكون تحت زرار عشان يفتح الفورم اللى اسمه pt_frm والفورم دا هيكون موجود فيه حقول غير منضمه بالاسماء التاليه age و gender و ageunit بالشكل التالى ----------------------------------------------------------------------------------------------- Private Sub RE_cmd_Click() OpenFormAndSetFields "PT_frm" ------------------------------------------------------------------------------------------- Private Sub OpenFormAndSetFields(formName As String) DoCmd.OpenForm formName, , , "[ID]=" & Me.ID Forms(formName)!ID = Me.ID Forms(formName)!gender = Forms![visit_frm]![gender] Forms(formName)!age = Forms![visit_frm]![age] Forms(formName)!ageunit = Forms![visit_frm]![ageunit] Forms(formName)!pname = Forms![visit_frm]![pname] End Sub تم تعديل يوليو 29 بواسطه safaa salem5
ابوخليل قام بنشر يوليو 29 قام بنشر يوليو 29 فضلا عند ادراج الكود استخدمي هذه الأداة .. من اجل عرض الكود بشكل افضل للقراءة
safaa salem5 قام بنشر يوليو 29 الكاتب قام بنشر يوليو 29 Private Sub RE_cmd_Click() OpenFormAndSetFields "PT_frm" ------------------------------------------------------------------------------------------- Private Sub OpenFormAndSetFields(formName As String) DoCmd.OpenForm formName, , , "[ID]=" & Me.ID Forms(formName)!ID = Me.ID Forms(formName)!gender = Forms![visit_frm]![gender] Forms(formName)!age = Forms![visit_frm]![age] Forms(formName)!ageunit = Forms![visit_frm]![ageunit] Forms(formName)!pname = Forms![visit_frm]![pname] End Sub Dim reference_value As Variant reference_value = DLookup("Reference", "normals_tbl", _ "Gender = '" & Forms("pt_frm")("gender").value & "' AND " & _ "Ageunit = '" & Forms("pt_frm")("ageunit").value & "' AND " & _ "tcode = 144 AND " & _ "age >= [from] AND age <= [to]") If Not IsNull(reference_value) Then Forms!pt_frm!pt_r.value = reference_value End If Private Sub RE_cmd_Click() OpenFormAndSetFields "PT_frm" ------------------------------------------------------------------------------------------- Private Sub OpenFormAndSetFields(formName As String) DoCmd.OpenForm formName, , , "[ID]=" & Me.ID Forms(formName)!ID = Me.ID Forms(formName)!gender = Forms![visit_frm]![gender] Forms(formName)!age = Forms![visit_frm]![age] Forms(formName)!ageunit = Forms![visit_frm]![ageunit] Forms(formName)!pname = Forms![visit_frm]![pname] End Sub هل ممكن انه مش قادر يقرأ قيمة age ممكن اكتبها بالشكل دا reference_value = DLookup("Reference", "normals_tbl", _ "Gender = '" & Forms("pt_frm")("gender").value & "' AND " & _ "Ageunit = '" & Forms("pt_frm")("ageunit").value & "' AND " & _ "tcode = 144 AND " & _ "Forms!pt_frm!age >= [from] AND Forms!pt_frm!age <= [to]") 1
safaa salem5 قام بنشر يوليو 29 الكاتب قام بنشر يوليو 29 انا خلاص قدرت اخليها تنتقل فى الحقل بس فاضل مشكله مجرد اضغط اوك بتختفى
safaa salem5 قام بنشر يوليو 29 الكاتب قام بنشر يوليو 29 2 minutes ago, ابو جودي said: هههههههه مش حقول لك خلاص انا هحاول مع نفسى متشكره 1
ابو جودي قام بنشر يوليو 29 قام بنشر يوليو 29 جربى الكود ده كده Dim reference_value As Variant Dim gender As String Dim ageUnit As String Dim age As Integer gender = Forms("pt_frm")("gender").Value ageUnit = Forms("pt_frm")("ageunit").Value age = Forms("pt_frm")("age").Value reference_value = DLookup("Reference", "normals_tbl", _ "Gender = '" & gender & "' AND " & _ "Ageunit = '" & ageUnit & "' AND " & _ "tcode = 144 AND " & _ age & " >= [from] AND " & _ age & " <= [to]") If Not IsNull(reference_value) Then Forms!pt_frm!pt_r.Value = reference_value End If وطبعا بقول لك جربى لانى مش فاهم شئ والقاعدة مش قدامى يعنى ياريا لو تتكرمى وتتعطفى علينا بمرفق ثغنون كده
ابو جودي قام بنشر يوليو 29 قام بنشر يوليو 29 2 دقائق مضت, safaa salem5 said: خلاص انا هحاول مع نفسى متشكره اقسم بالله حاسس انى باتعامل مع جودى بنتى والله بتطلع عينى وبتعمل اللى انتى بتعمليه ده بالظبط يا استاذة يا ست الدكتورة احنا هنا اخوات والاخوات مبيزعلوش من بعض يالعوى تعالى شوفى انا عملت ايه فى @Foksh من شوية يالهوى بيتهيألى لو انتى مكانه باللى عملته فيه كنتى طلعتى لى من الشاشة وجيبتينى من شعرى خلاص يا دكتور مش هأهزر تانى ولا هأعلق تانى على شئ حجاوب من سكات سكتم بكتم حلو كده يا دكتور ياريت مرفق بقه علشان نخلص ونحل الواجب لاننا مش هنضرب الودع احنا 1 1
hanan_ms قام بنشر يوليو 29 قام بنشر يوليو 29 (معدل) حبيبتي صفاء اشتقنا لج والله 😘🌹❤️ جربي طرفتين =============(1) Next ======(2) DOA انا شيرة بدالة استاذي @ابو جودي 🌹❤️ 😘😘😘 قسمي DlookUp // IF او استخدمي DOA Reference =للفحص ثم جلب قيمة ================= dim Gender as string dim Ageunit as string dim tcode as string dim age as string dim age_to string ====================== dim rung as integer dim wht as long wht =0 Gender = DLookup("Reference", "normals_tbl", "Gender = '" & gender & "' ) Ageunit = DLookup("Reference", "normals_tbl", "Ageunit = '" & ageUnit & " ) tcode = DLookup("Reference", "normals_tbl", "tcode = 144 ") age = DLookup("Reference", "normals_tbl", age & " >= [from] " ) age_to = DLookup("Reference", "normals_tbl",age & " <= [to]" ) for rung = 1 to1 if Gender = "X1" then wht = wht +1 end if if Ageunit = "X"2 then wht = wht +1 end if if tcode = "X3" then wht = wht +1 end if if age = "X4" then wht = wht +1 end if if age_to = "X5" then wht = wht +1 end if next if wht =5 then me.textbox1 = Gender me.textbox2 = Ageunit me.textbox3 = tcode me.textbox4 = age me.textbox5 = age_to msgbox " Chack after run " Gender & Ageunit & tcode & age & age_to wht =0 else msgbox " Close order " wht =0 end if ================ Dim db As DAO.Database Dim td As DAO.TableDef Dim fld As DAO.Field Set td = db.TableDefs(normals_tbl) For Each fld In td.Fields if td.Fields =[Gender] = "gender" and [Ageunit] = '" ageUnit"' and [tcode] = 144 and [age] >= [from] then me.box = ![Reference] end if Set db = Nothing تم تعديل يوليو 29 بواسطه hanan_ms
safaa salem5 قام بنشر يوليو 30 الكاتب قام بنشر يوليو 30 On 7/29/2024 at 9:01 PM, ابو جودي said: اقسم بالله حاسس انى باتعامل مع جودى بنتى والله بتطلع عينى وبتعمل اللى انتى بتعمليه ده بالظبط يا استاذة يا ست الدكتورة احنا هنا اخوات والاخوات مبيزعلوش من بعض يالعوى تعالى شوفى انا عملت ايه فى @Foksh من شوية يالهوى بيتهيألى لو انتى مكانه باللى عملته فيه كنتى طلعتى لى من الشاشة وجيبتينى من شعرى خلاص يا دكتور مش هأهزر تانى ولا هأعلق تانى على شئ حجاوب من سكات سكتم بكتم حلو كده يا دكتور ياريت مرفق بقه علشان نخلص ونحل الواجب لاننا مش هنضرب الودع احنا انا عرفت سبب المشكله .... لما بغير اسم الحقل من pt_r الى اى اسم تانى واحط الاسم دا فى الكود القيمه بتظهر بشكل طبعى بجد مش عارفه اى السبب وانا عايزه الاسم مايتغيرش لانه داخل فى احتمالات تانيه ودا الكود كامل ' فتح النموذج PT_frm وتعيين الحقول المختلفة اعتمادًا على gender و normalType OpenFormAndSetFields "PT_frm" ' تعريف المتغيرات الخاصة بالنموذج PT_frm Dim gender As String Dim age As Integer Dim ageunit As String Dim ptRValue As Variant Dim ptLValue As Variant Dim ptHValue As Variant Dim conc_rValue As Variant Dim INR_rValue As Variant Dim ratio_rValue As Variant Dim normalType As String ' استخراج قيم gender و age و ageunit من النموذج pt_frm gender = Forms!pt_frm!gender age = Forms!pt_frm!age ageunit = Forms!pt_frm!ageunit ' استخراج normalType من جدول test_tbl بناءً على قيمة tcode = 144 normalType = DLookup("normal_type", "test_tbl", "tcode = 144") ' نفترض أن tcode 144 يحدد نوع الطبيعة ' التحقق من normalType و gender لتحديد السيناريو المناسب If normalType = "sex" Then If gender = "female" Then ' استخراج القيم المطلوبة للإناث ptRValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptLValue = DLookup("lfemale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptHValue = DLookup("hfemale", "test_tbl", "normal_type = 'sex' AND tcode = 144") conc_rValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 145") INR_rValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 146") ratio_rValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 147") ElseIf gender = "male" Then ' استخراج القيم المطلوبة للذكور ptRValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptLValue = DLookup("lmale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptHValue = DLookup("hmale", "test_tbl", "normal_type = 'sex' AND tcode = 144") conc_rValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 145") INR_rValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 146") ratio_rValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 147") End If ElseIf normalType = "sex and age" Then Dim reference_value As Variant ' استرجاع القيمة المرجعية من جدول "normals_tbl" reference_value = DLookup("Reference", "normals_tbl", _ "Gender = '" & Forms("pt_frm")("gender").value & "' AND " & _ "Ageunit = '" & Forms("pt_frm")("ageunit").value & "' AND " & _ "tcode = 144 AND " & _ "Forms!pt_frm!age >= [from] AND Forms!pt_frm!age <= [to]") ' التحقق مما إذا كانت القيمة المرجعية غير فارغة If Not IsNull(reference_value) Then ' تعيين القيمة المرجعية المسترجعة إلى الحقل pt_r Forms("pt_frm")("pt_r1").value = reference_value Else ' إذا لم يتم العثور على قيمة مرجعية، عرض رسالة بذلك MsgBox "لم يتم العثور على قيمة مرجعية للشروط المحددة.", vbExclamation ' قد ترغب في مسح القيمة الموجودة في حقل pt_r إذا لم تكن هذه هي السلوك المرغوب ' Forms("pt_frm")("pt_r").Value = "" End If End If ----------------------------------------------------------------------------------- ' دالة لفتح النموذج المحدد وتعيين الحقول Private Sub OpenFormAndSetFields(formName As String) ' ?? ??? ??? ????? ??? ?? ?? ?????? ??????? ???? ??? ???????? ????? ?? ??? ??? DoCmd.OpenForm formName, , , "[ID]=" & Me.ID Forms(formName)!ID = Me.ID Forms(formName)!pname = Forms![visit_frm]![pname] Forms(formName)!gender = Forms![visit_frm]![gender] Forms(formName)!age = Forms![visit_frm]![age] Forms(formName)!code = Forms![visit_frm]! Forms(formName)!vdate = Forms![visit_frm]![vdate] Forms(formName)!ageunit = Forms![visit_frm]![ageunit] Forms(formName)!tcode = Me.tcode Forms(formName)!sub = Me.test Forms(formName)!dtitle = Me.Parent![dtitle] Forms(formName)!ref_by = Me.Parent![ref_by] Forms(formName)!ptitle = Me.Parent![ptitle] End Sub
ابو جودي قام بنشر يوليو 30 قام بنشر يوليو 30 جربى الكود ده ولو سمحتى انا بكلمنيش فمتخلنيش اتكلم من غير كلام ماشى Private Sub OpenFormAndSetFields(formName As String) DoCmd.OpenForm formName, , , "[ID]=" & Me.ID With Forms(formName) .ID = Me.ID .pname = Forms![visit_frm]![pname] .gender = Forms![visit_frm]![gender] .age = Forms![visit_frm]![age] .code = Forms![visit_frm]![code] .vdate = Forms![visit_frm]![vdate] .ageunit = Forms![visit_frm]![ageunit] .tcode = Me.tcode .Sub = Me.test .dtitle = Me.Parent![dtitle] .ref_by = Me.Parent![ref_by] .ptitle = Me.Parent![ptitle] End With End Sub Dim gender As String Dim age As Integer Dim ageunit As String Dim ptRValue As Variant Dim ptLValue As Variant Dim ptHValue As Variant Dim conc_rValue As Variant Dim INR_rValue As Variant Dim ratio_rValue As Variant Dim normalType As String OpenFormAndSetFields "PT_frm" If Not CurrentProject.AllForms("PT_frm").IsLoaded Then MsgBox "نموذج PT_frm غير مفتوح.", vbExclamation Exit Sub End If With Forms("PT_frm") gender = .gender age = .age ageunit = .ageunit End With normalType = DLookup("normal_type", "test_tbl", "tcode = 144") If normalType = "sex" Then If gender = "female" Then ptRValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptLValue = DLookup("lfemale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptHValue = DLookup("hfemale", "test_tbl", "normal_type = 'sex' AND tcode = 144") conc_rValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 145") INR_rValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 146") ratio_rValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 147") ElseIf gender = "male" Then ptRValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptLValue = DLookup("lmale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptHValue = DLookup("hmale", "test_tbl", "normal_type = 'sex' AND tcode = 144") conc_rValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 145") INR_rValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 146") ratio_rValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 147") End If ElseIf normalType = "sex and age" Then Dim reference_value As Variant reference_value = DLookup("Reference", "normals_tbl", _ "Gender = '" & gender & "' AND " & _ "Ageunit = '" & ageunit & "' AND " & _ "tcode = 144 AND " & _ age & " >= [from] AND " & age & " <= [to]") If Not IsNull(reference_value) Then Forms("PT_frm")("pt_r1").Value = reference_value Else MsgBox "لم يتم العثور على قيمة مرجعية للشروط المحددة.", vbExclamation End If End If انا مش فاهم حاجة على فكرة انا الاول حاولت ارتب الكود على قد ما قدرت علشان تجربى وتقولى لى فى ايه
safaa salem5 قام بنشر يوليو 30 الكاتب قام بنشر يوليو 30 7 minutes ago, ابو جودي said: جربى الكود ده ولو سمحتى انا بكلمنيش فمتخلنيش اتكلم من غير كلام ماشى Private Sub OpenFormAndSetFields(formName As String) DoCmd.OpenForm formName, , , "[ID]=" & Me.ID With Forms(formName) .ID = Me.ID .pname = Forms![visit_frm]![pname] .gender = Forms![visit_frm]![gender] .age = Forms![visit_frm]![age] .code = Forms![visit_frm]![code] .vdate = Forms![visit_frm]![vdate] .ageunit = Forms![visit_frm]![ageunit] .tcode = Me.tcode .Sub = Me.test .dtitle = Me.Parent![dtitle] .ref_by = Me.Parent![ref_by] .ptitle = Me.Parent![ptitle] End With End Sub Dim gender As String Dim age As Integer Dim ageunit As String Dim ptRValue As Variant Dim ptLValue As Variant Dim ptHValue As Variant Dim conc_rValue As Variant Dim INR_rValue As Variant Dim ratio_rValue As Variant Dim normalType As String OpenFormAndSetFields "PT_frm" If Not CurrentProject.AllForms("PT_frm").IsLoaded Then MsgBox "نموذج PT_frm غير مفتوح.", vbExclamation Exit Sub End If With Forms("PT_frm") gender = .gender age = .age ageunit = .ageunit End With normalType = DLookup("normal_type", "test_tbl", "tcode = 144") If normalType = "sex" Then If gender = "female" Then ptRValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptLValue = DLookup("lfemale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptHValue = DLookup("hfemale", "test_tbl", "normal_type = 'sex' AND tcode = 144") conc_rValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 145") INR_rValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 146") ratio_rValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 147") ElseIf gender = "male" Then ptRValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptLValue = DLookup("lmale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptHValue = DLookup("hmale", "test_tbl", "normal_type = 'sex' AND tcode = 144") conc_rValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 145") INR_rValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 146") ratio_rValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 147") End If ElseIf normalType = "sex and age" Then Dim reference_value As Variant reference_value = DLookup("Reference", "normals_tbl", _ "Gender = '" & gender & "' AND " & _ "Ageunit = '" & ageunit & "' AND " & _ "tcode = 144 AND " & _ age & " >= [from] AND " & age & " <= [to]") If Not IsNull(reference_value) Then Forms("PT_frm")("pt_r1").Value = reference_value Else MsgBox "لم يتم العثور على قيمة مرجعية للشروط المحددة.", vbExclamation End If End If نفس المشكله ماتزال قائمه
ابو جودي قام بنشر يوليو 30 قام بنشر يوليو 30 ويعنى انا مش عاجبنى اننا نستخدم DLookup دى كتير بالشكل ده ده يأثر على كفاءة وسرعة الاداء وممكن نستخدم مصفوفة وده هيكون شكل الكود بعد التعديل باستخدام المصفوفة لتخزين أكواد الاختبار مع حلقة For لتمرير القيم إلى الحقول Private Sub OpenFormAndSetFields(formName As String) DoCmd.OpenForm formName, , , "[ID]=" & Me.ID With Forms(formName) .ID = Me.ID .pname = Forms![visit_frm]![pname] .gender = Forms![visit_frm]![gender] .age = Forms![visit_frm]![age] .code = Forms![visit_frm]![code] .vdate = Forms![visit_frm]![vdate] .ageunit = Forms![visit_frm]![ageunit] .tcode = Me.tcode .Sub = Me.test .dtitle = Me.Parent![dtitle] .ref_by = Me.Parent![ref_by] .ptitle = Me.Parent![ptitle] End With End Sub Dim gender As String Dim age As Integer Dim ageunit As String Dim ptValues As Variant Dim normalType As String OpenFormAndSetFields "PT_frm" If Not CurrentProject.AllForms("PT_frm").IsLoaded Then MsgBox "نموذج PT_frm غير مفتوح.", vbExclamation Exit Sub End If With Forms("PT_frm") gender = .gender age = .age ageunit = .ageunit End With normalType = DLookup("normal_type", "test_tbl", "tcode = 144") If normalType = "sex" Then Dim fieldPrefix As String If gender = "female" Then fieldPrefix = "rfemale" ElseIf gender = "male" Then fieldPrefix = "rmale" End If ' مصفوفة لتخزين القيم ptValues = Array(144, 145, 146, 147) Dim i As Integer For i = LBound(ptValues) To UBound(ptValues) Select Case ptValues(i) Case 144 Forms("PT_frm")!ptRValue = DLookup(fieldPrefix, "test_tbl", "normal_type = 'sex' AND tcode = 144") Forms("PT_frm")!ptLValue = DLookup(fieldPrefix, "test_tbl", "normal_type = 'sex' AND tcode = 144") Forms("PT_frm")!ptHValue = DLookup(fieldPrefix, "test_tbl", "normal_type = 'sex' AND tcode = 144") Case 145 Forms("PT_frm")!conc_rValue = DLookup(fieldPrefix, "test_tbl", "normal_type = 'sex' AND tcode = 145") Case 146 Forms("PT_frm")!INR_rValue = DLookup(fieldPrefix, "test_tbl", "normal_type = 'sex' AND tcode = 146") Case 147 Forms("PT_frm")!ratio_rValue = DLookup(fieldPrefix, "test_tbl", "normal_type = 'sex' AND tcode = 147") End Select Next i ElseIf normalType = "sex and age" Then Dim reference_value As Variant reference_value = DLookup("Reference", "normals_tbl", _ "Gender = '" & gender & "' AND " & _ "Ageunit = '" & ageunit & "' AND " & _ "tcode = 144 AND " & _ age & " >= [from] AND " & age & " <= [to]") If Not IsNull(reference_value) Then Forms("PT_frm")!pt_r1.Value = reference_value Else MsgBox "لم يتم العثور على قيمة مرجعية للشروط المحددة.", vbExclamation End If End If ايون ايه هى المشكلة طيب علشان افهم فى ايه ؟انا مش فاهم
safaa salem5 قام بنشر يوليو 30 الكاتب قام بنشر يوليو 30 ' تعريف المتغيرات الخاصة بالنموذج PT_frm Dim gender As String Dim age As Integer Dim ageunit As String Dim ptRValue As Variant Dim ptLValue As Variant Dim ptHValue As Variant Dim conc_rValue As Variant Dim INR_rValue As Variant Dim ratio_rValue As Variant Dim normalType As String OpenFormAndSetFields "PT_frm" If Not CurrentProject.AllForms("PT_frm").IsLoaded Then MsgBox "نموذج PT_frm غير مفتوح.", vbExclamation Exit Sub End If With Forms("PT_frm") gender = .gender age = .age ageunit = .ageunit End With normalType = DLookup("normal_type", "test_tbl", "tcode = 144") If normalType = "sex" Then If gender = "female" Then ptRValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptLValue = DLookup("lfemale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptHValue = DLookup("hfemale", "test_tbl", "normal_type = 'sex' AND tcode = 144") conc_rValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 145") INR_rValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 146") ratio_rValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 147") ElseIf gender = "male" Then ptRValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptLValue = DLookup("lmale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptHValue = DLookup("hmale", "test_tbl", "normal_type = 'sex' AND tcode = 144") conc_rValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 145") INR_rValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 146") ratio_rValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 147") End If ElseIf normalType = "sex and age" Then Dim reference_value As Variant reference_value = DLookup("Reference", "normals_tbl", _ "Gender = '" & gender & "' AND " & _ "Ageunit = '" & ageunit & "' AND " & _ "tcode = 144 AND " & _ age & " >= [from] AND " & age & " <= [to]") If Not IsNull(reference_value) Then Forms("PT_frm")("pt_r").value = reference_value Else MsgBox "لم يتم العثور على قيمة مرجعية للشروط المحددة.", vbExclamation End If End If ' تعيين قيمة ptRValue للحقل pt_r (خارج التحققات الشرطية) Forms!pt_frm!pt_r = ptRValue Forms!pt_frm!pt_h = ptHValue Forms!pt_frm!pt_l = ptLValue Forms!pt_frm!conc_r = conc_rValue Forms!pt_frm!inr_r = INR_rValue Forms!pt_frm!ratio_r = ratio_rValue ' استرداد الوحدات والقيم الافتراضية Forms!pt_frm!pt_u = DLookup("unit", "test_tbl", "normal_type = '" & normalType & "' AND tcode = 144") Forms!pt_frm!control = DLookup("default", "test_tbl", "normal_type = '" & normalType & "' AND tcode = 148") Forms!pt_frm!conc_u = DLookup("unit", "test_tbl", "normal_type = '" & normalType & "' AND tcode = 145") Forms!pt_frm!inr_u = DLookup("unit", "test_tbl", "normal_type = '" & normalType & "' AND tcode = 146") Forms!pt_frm!ratio_u = DLookup("unit", "test_tbl", "normal_type = '" & normalType & "' AND tcode = 147") 22 ساعات مضت, ابو جودي said: ويعنى انا مش عاجبنى اننا نستخدم DLookup دى كتير بالشكل ده ده يأثر على كفاءة وسرعة الاداء وممكن نستخدم مصفوفة وده هيكون شكل الكود بعد التعديل باستخدام المصفوفة لتخزين أكواد الاختبار مع حلقة For لتمرير القيم إلى الحقول Private Sub OpenFormAndSetFields(formName As String) DoCmd.OpenForm formName, , , "[ID]=" & Me.ID With Forms(formName) .ID = Me.ID .pname = Forms![visit_frm]![pname] .gender = Forms![visit_frm]![gender] .age = Forms![visit_frm]![age] .code = Forms![visit_frm]![code] .vdate = Forms![visit_frm]![vdate] .ageunit = Forms![visit_frm]![ageunit] .tcode = Me.tcode .Sub = Me.test .dtitle = Me.Parent![dtitle] .ref_by = Me.Parent![ref_by] .ptitle = Me.Parent![ptitle] End With End Sub Dim gender As String Dim age As Integer Dim ageunit As String Dim ptValues As Variant Dim normalType As String OpenFormAndSetFields "PT_frm" If Not CurrentProject.AllForms("PT_frm").IsLoaded Then MsgBox "نموذج PT_frm غير مفتوح.", vbExclamation Exit Sub End If With Forms("PT_frm") gender = .gender age = .age ageunit = .ageunit End With normalType = DLookup("normal_type", "test_tbl", "tcode = 144") If normalType = "sex" Then Dim fieldPrefix As String If gender = "female" Then fieldPrefix = "rfemale" ElseIf gender = "male" Then fieldPrefix = "rmale" End If ' مصفوفة لتخزين القيم ptValues = Array(144, 145, 146, 147) Dim i As Integer For i = LBound(ptValues) To UBound(ptValues) Select Case ptValues(i) Case 144 Forms("PT_frm")!ptRValue = DLookup(fieldPrefix, "test_tbl", "normal_type = 'sex' AND tcode = 144") Forms("PT_frm")!ptLValue = DLookup(fieldPrefix, "test_tbl", "normal_type = 'sex' AND tcode = 144") Forms("PT_frm")!ptHValue = DLookup(fieldPrefix, "test_tbl", "normal_type = 'sex' AND tcode = 144") Case 145 Forms("PT_frm")!conc_rValue = DLookup(fieldPrefix, "test_tbl", "normal_type = 'sex' AND tcode = 145") Case 146 Forms("PT_frm")!INR_rValue = DLookup(fieldPrefix, "test_tbl", "normal_type = 'sex' AND tcode = 146") Case 147 Forms("PT_frm")!ratio_rValue = DLookup(fieldPrefix, "test_tbl", "normal_type = 'sex' AND tcode = 147") End Select Next i ElseIf normalType = "sex and age" Then Dim reference_value As Variant reference_value = DLookup("Reference", "normals_tbl", _ "Gender = '" & gender & "' AND " & _ "Ageunit = '" & ageunit & "' AND " & _ "tcode = 144 AND " & _ age & " >= [from] AND " & age & " <= [to]") If Not IsNull(reference_value) Then Forms("PT_frm")!pt_r1.Value = reference_value Else MsgBox "لم يتم العثور على قيمة مرجعية للشروط المحددة.", vbExclamation End If End If ايون ايه هى المشكلة طيب علشان افهم فى ايه ؟انا مش فاهم بص حقل pt_r الموجود فى فورم pt_frm هتيجى قيمته بناء على شرطين الشرط الاول بناء على قيمة الحقل normal_type من جدول الاعدادات فى حالة لو قيمة الحقل دا تساوى sex وكمان قيمة حقل gender الموجود فى فورمpt_frm تساوى female فى الحاله دى قيمة حقل pt_r هتيجى من حقل اسمه rfemale من جدول test_tbl ----------------------------------------- اما لو قيمة حقل gender الموجود فى فورمpt_frm تساوى male فى الحاله دى قيمة حقل pt_r هتيجى من حقل اسمه rmaleجدول test_tbl ------------------------------------------------------------------ normal_type اما لو قيمة حقل تساوى sex and age فى الحالة دى قيمة الحقل pt_r هتيجى من جدول اخر اسمه normals_tbl بحيث انه يجيب القيمه اللى تتوافر فيه الشروط الثلاث الاتيه تتساوى القيم gender ,sex,ageunit مع نظيراتها فى الجدول كما ان حقل age فى الفورم يكون بين القيمه from ,to فى الجدول او يساويهم كل الشروط دى شغاله تمام معايا بس فى حالة الاخيره مبيدنيش اى خطأ وبيدينى قيمة حقل pt_r فاضيه فلما غيرت اسم الحقل من pt_r الى pt_r1 فى الكود فى الحاله الاخيره وانشأت حقل بنفس الاسم pt_r1 تظهر القيمه بشكل طبيعى مع العلم كما قلت سابقا انها تظهر فى الحقل بدون تغيير الاسم فى الحالتين الاولى والثانيه بشكل طبيعى ودا كل الكود بسلطاته باباغنوجه ----------------------------------------------------------------------------------------------------------------------------- OpenFormAndSetFields "PT_frm" ' تعريف المتغيرات الخاصة بالنموذج PT_frm Dim gender As String Dim age As Integer Dim ageunit As String Dim ptRValue As Variant Dim ptLValue As Variant Dim ptHValue As Variant Dim conc_rValue As Variant Dim INR_rValue As Variant Dim ratio_rValue As Variant Dim normalType As String ' استخراج قيم gender و age و ageunit من النموذج pt_frm gender = Forms!pt_frm!gender age = Forms!pt_frm!age ageunit = Forms!pt_frm!ageunit ' استخراج normalType من جدول test_tbl بناءً على قيمة tcode = 144 normalType = DLookup("normal_type", "test_tbl", "tcode = 144") ' نفترض أن tcode 144 يحدد نوع الطبيعة ' التحقق من normalType و gender لتحديد السيناريو المناسب If normalType = "sex" Then If gender = "female" Then ' استخراج القيم المطلوبة للإناث ptRValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptLValue = DLookup("lfemale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptHValue = DLookup("hfemale", "test_tbl", "normal_type = 'sex' AND tcode = 144") conc_rValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 145") INR_rValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 146") ratio_rValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 147") ElseIf gender = "male" Then ' استخراج القيم المطلوبة للذكور ptRValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptLValue = DLookup("lmale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptHValue = DLookup("hmale", "test_tbl", "normal_type = 'sex' AND tcode = 144") conc_rValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 145") INR_rValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 146") ratio_rValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 147") End If ElseIf normalType = "sex and age" Then Dim reference_value As Variant ' استرجاع القيمة المرجعية من جدول "normals_tbl" reference_value = DLookup("Reference", "normals_tbl", _ "Gender = '" & Forms("pt_frm")("gender").value & "' AND " & _ "Ageunit = '" & Forms("pt_frm")("ageunit").value & "' AND " & _ "tcode = 144 AND " & _ "Forms!pt_frm!age >= [from] AND Forms!pt_frm!age <= [to]") ' التحقق مما إذا كانت القيمة المرجعية غير فارغة If Not IsNull(reference_value) Then ' تعيين القيمة المرجعية المسترجعة إلى الحقل pt_r Forms("pt_frm")("pt_r").value = reference_value Else ' إذا لم يتم العثور على قيمة مرجعية، عرض رسالة بذلك MsgBox "لم يتم العثور على قيمة مرجعية للشروط المحددة.", vbExclamation ' قد ترغب في مسح القيمة الموجودة في حقل pt_r إذا لم تكن هذه هي السلوك المرغوب ' Forms("pt_frm")("pt_r").Value = "" End If End If ' تعيين قيمة ptRValue للحقل pt_r (خارج التحققات الشرطية) Forms!pt_frm!pt_r = ptRValue Forms!pt_frm!pt_h = ptHValue Forms!pt_frm!pt_l = ptLValue Forms!pt_frm!conc_r = conc_rValue Forms!pt_frm!inr_r = INR_rValue Forms!pt_frm!ratio_r = ratio_rValue ' استرداد الوحدات والقيم الافتراضية Forms!pt_frm!pt_u = DLookup("unit", "test_tbl", "normal_type = '" & normalType & "' AND tcode = 144") Forms!pt_frm!control = DLookup("default", "test_tbl", "normal_type = '" & normalType & "' AND tcode = 148") Forms!pt_frm!conc_u = DLookup("unit", "test_tbl", "normal_type = '" & normalType & "' AND tcode = 145") Forms!pt_frm!inr_u = DLookup("unit", "test_tbl", "normal_type = '" & normalType & "' AND tcode = 146") Forms!pt_frm!ratio_u = DLookup("unit", "test_tbl", "normal_type = '" & normalType & "' AND tcode = 147")
ابو جودي قام بنشر يوليو 30 قام بنشر يوليو 30 طيب جربى الكود بالشكل ده وبعد التجربة فولى لى فى رسائل خطأ ظهرت معاكى واللا لاء Sub UpdateFields() On Error GoTo ErrorHandler OpenFormAndSetFields "PT_frm" Dim ptRValue As Variant Dim ptLValue As Variant Dim ptHValue As Variant Dim conc_rValue As Variant Dim INR_rValue As Variant Dim ratio_rValue As Variant Dim reference_value As Variant Dim gender As String Dim ageunit As String Dim normalType As String Dim age As Integer gender = Forms!pt_frm!gender age = Forms!pt_frm!age ageunit = Forms!pt_frm!ageunit normalType = DLookup("normal_type", "test_tbl", "tcode = 144") If normalType = "sex" Then If gender = "female" Then ptRValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptLValue = DLookup("lfemale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptHValue = DLookup("hfemale", "test_tbl", "normal_type = 'sex' AND tcode = 144") conc_rValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 145") INR_rValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 146") ratio_rValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 147") ElseIf gender = "male" Then ptRValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptLValue = DLookup("lmale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptHValue = DLookup("hmale", "test_tbl", "normal_type = 'sex' AND tcode = 144") conc_rValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 145") INR_rValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 146") ratio_rValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 147") End If ElseIf normalType = "sex and age" Then reference_value = DLookup("Reference", "normals_tbl", _ "Gender = '" & Forms("pt_frm")("gender").Value & "' AND " & _ "Ageunit = '" & Forms("pt_frm")("ageunit").Value & "' AND " & _ "tcode = 144 AND " & _ Forms("pt_frm")("age").Value & " BETWEEN [from] AND [to]") If Not IsNull(reference_value) Then Forms("pt_frm")("pt_r").Value = reference_value Else MsgBox "لم يتم العثور على قيمة مرجعية للشروط المحددة.", vbExclamation End If End If Forms!pt_frm!pt_r.Value = ptRValue Forms!pt_frm!pt_h.Value = ptHValue Forms!pt_frm!pt_l.Value = ptLValue Forms!pt_frm!conc_r.Value = conc_rValue Forms!pt_frm!inr_r.Value = INR_rValue Forms!pt_frm!ratio_r.Value = ratio_rValue Forms!pt_frm!pt_u.Value = DLookup("unit", "test_tbl", "normal_type = '" & normalType & "' AND tcode = 144") Forms!pt_frm!Control.Value = DLookup("default", "test_tbl", "normal_type = '" & normalType & "' AND tcode = 148") Forms!pt_frm!conc_u.Value = DLookup("unit", "test_tbl", "normal_type = '" & normalType & "' AND tcode = 145") Forms!pt_frm!inr_u.Value = DLookup("unit", "test_tbl", "normal_type = '" & normalType & "' AND tcode = 146") Forms!pt_frm!ratio_u.Value = DLookup("unit", "test_tbl", "normal_type = '" & normalType & "' AND tcode = 147") Exit Sub ErrorHandler: MsgBox "Error " & Err.Number & ": " & Err.Description, vbCritical End Sub 1
safaa salem5 قام بنشر يوليو 30 الكاتب قام بنشر يوليو 30 3 minutes ago, ابو جودي said: طيب جربى الكود بالشكل ده وبعد التجربة فولى لى فى رسائل خطأ ظهرت معاكى واللا لاء Sub UpdateFields() On Error GoTo ErrorHandler OpenFormAndSetFields "PT_frm" Dim ptRValue As Variant Dim ptLValue As Variant Dim ptHValue As Variant Dim conc_rValue As Variant Dim INR_rValue As Variant Dim ratio_rValue As Variant Dim reference_value As Variant Dim gender As String Dim ageunit As String Dim normalType As String Dim age As Integer gender = Forms!pt_frm!gender age = Forms!pt_frm!age ageunit = Forms!pt_frm!ageunit normalType = DLookup("normal_type", "test_tbl", "tcode = 144") If normalType = "sex" Then If gender = "female" Then ptRValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptLValue = DLookup("lfemale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptHValue = DLookup("hfemale", "test_tbl", "normal_type = 'sex' AND tcode = 144") conc_rValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 145") INR_rValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 146") ratio_rValue = DLookup("rfemale", "test_tbl", "normal_type = 'sex' AND tcode = 147") ElseIf gender = "male" Then ptRValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptLValue = DLookup("lmale", "test_tbl", "normal_type = 'sex' AND tcode = 144") ptHValue = DLookup("hmale", "test_tbl", "normal_type = 'sex' AND tcode = 144") conc_rValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 145") INR_rValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 146") ratio_rValue = DLookup("rmale", "test_tbl", "normal_type = 'sex' AND tcode = 147") End If ElseIf normalType = "sex and age" Then reference_value = DLookup("Reference", "normals_tbl", _ "Gender = '" & Forms("pt_frm")("gender").Value & "' AND " & _ "Ageunit = '" & Forms("pt_frm")("ageunit").Value & "' AND " & _ "tcode = 144 AND " & _ Forms("pt_frm")("age").Value & " BETWEEN [from] AND [to]") If Not IsNull(reference_value) Then Forms("pt_frm")("pt_r").Value = reference_value Else MsgBox "لم يتم العثور على قيمة مرجعية للشروط المحددة.", vbExclamation End If End If Forms!pt_frm!pt_r.Value = ptRValue Forms!pt_frm!pt_h.Value = ptHValue Forms!pt_frm!pt_l.Value = ptLValue Forms!pt_frm!conc_r.Value = conc_rValue Forms!pt_frm!inr_r.Value = INR_rValue Forms!pt_frm!ratio_r.Value = ratio_rValue Forms!pt_frm!pt_u.Value = DLookup("unit", "test_tbl", "normal_type = '" & normalType & "' AND tcode = 144") Forms!pt_frm!Control.Value = DLookup("default", "test_tbl", "normal_type = '" & normalType & "' AND tcode = 148") Forms!pt_frm!conc_u.Value = DLookup("unit", "test_tbl", "normal_type = '" & normalType & "' AND tcode = 145") Forms!pt_frm!inr_u.Value = DLookup("unit", "test_tbl", "normal_type = '" & normalType & "' AND tcode = 146") Forms!pt_frm!ratio_u.Value = DLookup("unit", "test_tbl", "normal_type = '" & normalType & "' AND tcode = 147") Exit Sub ErrorHandler: MsgBox "Error " & Err.Number & ": " & Err.Description, vbCritical End Sub القيمه ماظهرتش وماظهرش اخطاء لان الكود مفهوش اخطا اصلا بقولك انا لو غيرت اسم الحقل لاى اسم تانى بتظهر عادى
ابو جودي قام بنشر يوليو 30 قام بنشر يوليو 30 وعاوز اقول لك شئ لما تيجى تكتبى كود قبل ما تعمل لصق للكود هنا فى المنتدى فى مكان المشاركة اللى بنكتب فيه ده شايفة المربع الاحمر اللى فى الصورة دى دوسى عليه الاول حتتفتح معاك شاشة الكود اعمللى لصق للكود علشان يطلع مظبوط بالشكل ده 1 1
safaa salem5 قام بنشر يوليو 30 الكاتب قام بنشر يوليو 30 Just now, ابو جودي said: وعاوز اقول لك شئ لما تيجى تكتبى كود قبل ما تعمل لصق للكود هنا فى المنتدى فى مكان المشاركة اللى بنكتب فيه ده شايفة المربع الاحمر اللى فى الصورة دى دوسى عليه الاول حتتفتح معاك شاشة الكود اعمللى لصق للكود علشان يطلع مظبوط بالشكل ده حاضر الاستاذ الجليل @ابو خليل نبهنى ليها سابقا بس انا عشان مضغوطه نسيت
ابو جودي قام بنشر يوليو 30 قام بنشر يوليو 30 3 دقائق مضت, safaa salem5 said: القيمه ماظهرتش وماظهرش اخطاء لان الكود مفهوش اخطا اصلا بقولك انا لو غيرت اسم الحقل لاى اسم تانى بتظهر عادى ممكن مرفق 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.