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

الردود الموصى بها

قام بنشر

السلام عليكم 
عندى قاعدة بيانات استخدمت فيها الدالة Dlast لتخبرنى اخر تاريخ تم تسجيل المستندات فيه فى جداول معينة بالاضافة الى اخر رقم مستند تم تسجيله وكانت النتيجة جيدة فى الاول لكن تجمد التاريخ على يوم معين وحتى بعد التسجيل فى تواريخ لاحقة لا تتغير نتيجة الدالة ونفس المشكلة تظهر فى اخر رقم مستند تم تسجيله وليس فى التواريخ فقط 

 

مثال تم تسجيل مستندات بتاريخ 1 / 5 / 2017 ولكن الكود يظهر ان اخر تاريخ فى الجدول هو 19 / 3 / 2017

وتم تسجيل المستند رقم 005252 والبرنامج يعطى نتيجة ان اخر اذن هو 005000 والاكواد المستخدمة كالتالى :

 
	DLast("[Zdate]","Production","")


	=DLast("[zdate]","Transactions","[Qty in]<>0")


	=Nz(DLast("[Zdate]","Production","[client]='" & [client] & "'"),"لا يوجد")


	=DLast("[DocumentNumber]","Transactions","[Qty in]<>0")



مش عارف سبب المشكلة دى ايه بس ممكن اتغلب عليها فى موضوع التاريخ باستبدال الدالة بدالة Dmax لكن بالنسبة لرقم المستند بيكون Short Text وبالتالى محتاج دالة Dlast لمعرفة اخر مستند تم تسجيله 

أية أفكار ؟؟

 

  • Like 1
قام بنشر
9 دقائق مضت, محمد ايمن said:

اخي الكريم

لماذا رقم المستند Shorttext ؟؟؟؟؟؟؟؟؟؟؟؟

قم بتحويله الى رقم و جرب

اولا تشرفت بمرورك اخى الكريم ثانيا بالنسبة لرأيك هو رأى مظبوط طبعا لكن رقم المستند عندى بيتكون من حروف وأرقام والحروف اللى قبل الارقام بترمز للجهة الصادر منها المستند دون فتحه ومعرفة محتواه وبالتالى مينفعش أحوله لرقم لأنه بيبقى بالشكل التالى مثلا HS000025 

تقبل تحياتى :fff:

 

قام بنشر
1 دقيقه مضت, jjafferr said:

السلام عليكم:smile:

 

الموضوع ظاهرا ليس ببسيط ، فياريت مرفق ، ونجرب عليه:smile:

 

جعفر

منور استاذنا جعفر ولكن المشكلة انى عملت مرفقات كتير وكانت النتيجة مظبوطة ومفيهاش مشكلة وبالنسبة لقاعدتى كمان مكانش فيها مشكلة حتى وقت قريب وبدون تعديلات عليها من الأساس فلذلك انا بسأل عن سبب حدوث المشكلة ومع ذلك هحاول اعمل مرفق مصغر من قاعدتى فيها التقارير والجداول المرتبطة وبها المشكلة تقبل تحياتى :fff:

  • Like 1
قام بنشر

في هذه الحالة خلينا نسأل ونشوف اذا كان السبب واضح:

- هل عملت تغيير في التاريخ في اعدادات الوندوز؟

او اي اعدادت اخرى في الوندوز؟

 

جعفر

قام بنشر
11 دقائق مضت, jjafferr said:

في هذه الحالة خلينا نسأل ونشوف اذا كان السبب واضح:

- هل عملت تغيير في التاريخ في اعدادات الوندوز؟

او اي اعدادت اخرى في الوندوز؟

 

جعفر

لا مفيش اى تغيير فى الاعدادات سواء فى الاوفيس او الويندوز ومرفق تقرير وجداول بها المشكلة

 

 

ex.rar

قام بنشر

السلام عليكم:smile:

 

احد اهم الحقول اللي عندك هو حقل الترقيم التلقائي ، والذي دائما سيعطي الرقم المسلسل لإدخالك ،

فإستعماله سيحل لك المشكلة:

Private Sub ReportHeader_Format(Cancel As Integer, FormatCount As Integer)

    Dim x() As String
    
    MX = DMax("[ID]", "Transactions", "[Qty in]<>0")
    DL = DLookup("[add_doc] & '|' & [zdate]", "Transactions", "[ID]=" & MX)
    
    x = Split(DL, "|")
    Me.Text53 = x(0)
    Me.Text48 = x(1)
    
End Sub

 

جعفر

  • Like 3
قام بنشر
19 دقائق مضت, jjafferr said:

احد اهم الحقول اللي عندك هو حقل الترقيم التلقائي ، والذي دائما سيعطي الرقم المسلسل لإدخالك ،

فإستعماله سيحل لك المشكلة:

 

واذا ذكرت الافكار الجميلة ذكرت يا استاذى الفاضل نتيجة رائعة وده المتوقع جزاك الله خير وزادك من علمه :)

  • Like 1
قام بنشر

حبيت انبه هنا الشي معين 

دوال المجال ومنها dlast خصوصا والتي تعتمد على ترتيب البيانات في المصدر فانه :

قد لا تحصل على نتيجة متوقعه اذا كان المصدر جدول لان البيانات في الجدول لايحكمها ترتيب معين في خصوصا اذا الحقل الداخل في الداله ليس مفهرس

كما انها ليست عمليه اذا لديك سجلات ضخمة في الجدول

هنا اعمل استعلام ثم قم بعمل ترتيب بشكل صريح في الاستعلام ثم اجعل الاستعلام مصدر للدالة . هنا ستاتي اخر قيمة في الاستعلام لاني اعلم ان البيانات مرتبه بالشكل الذي اريده

تحياتي

  • Like 3
قام بنشر
4 دقائق مضت, رمهان said:

حبيت انبه هنا الشي معين 

دوال المجال ومنها dlast خصوصا والتي تعتمد على ترتيب البيانات في المصدر فانه :

قد لا تحصل على نتيجة متوقعه اذا كان المصدر جدول لان البيانات في الجدول لايحكمها ترتيب معين في خصوصا اذا الحقل الداخل في الداله ليس مفهرس

كما انها ليست عمليه اذا لديك سجلات ضخمة في الجدول

هنا اعمل استعلام ثم قم بعمل ترتيب بشكل صريح في الاستعلام ثم اجعل الاستعلام مصدر للدالة . هنا ستاتي اخر قيمة في الاستعلام لاني اعلم ان البيانات مرتبه بالشكل الذي اريده

تحياتي

ماشاء الله استاذنا الكبير رمهان كما تعودنا منك زادك الله من علمه شكرا على المعلومة القيمة :fff:

قام بنشر
28 دقائق مضت, رمهان said:

حبيت انبه هنا الشي معين 

دوال المجال ومنها dlast خصوصا والتي تعتمد على ترتيب البيانات في المصدر فانه :

قد لا تحصل على نتيجة متوقعه اذا كان المصدر جدول لان البيانات في الجدول لايحكمها ترتيب معين في خصوصا اذا الحقل الداخل في الداله ليس مفهرس

كما انها ليست عمليه اذا لديك سجلات ضخمة في الجدول

هنا اعمل استعلام ثم قم بعمل ترتيب بشكل صريح في الاستعلام ثم اجعل الاستعلام مصدر للدالة . هنا ستاتي اخر قيمة في الاستعلام لاني اعلم ان البيانات مرتبه بالشكل الذي اريده

تحياتي

 

حياالله أخوي رمهان:smile:

 

وهذا اللي عملته ، بإستخدام DMax اولا للحصول على القيمة العليا للحقل ID ، اي Order by ID desc ،

ثم استخدام قيمة هذا الحقل ، للحصول على الحقول الصحيحة من السجل الصحيح:smile:

 

جعفر

  • Like 2
قام بنشر (معدل)

يمكن أن نصور ما قرره الاستاذين @جعفر و @رمهان   بالدالتين التاليتين

 


Public Function ULast(Expr As String, Domain As String, Optional Criteria)
    Dim RS As Recordset
    If IsMissing(Criteria) Then
        Set RS = CurrentDb.OpenRecordset("Select Top 1 " & Expr & " From " & _
        Domain & " Order By " & Expr & " Desc")
        ULast = RS(0)
    Else
        Set RS = CurrentDb.OpenRecordset("Select Top 1 " & Expr & " From " & _
        Domain & "  Where " & Criteria & " Order By " & Expr & " Desc")
        ULast = RS(0)
    End If
End Function

 


Public Function UFirst(Expr As String, Domain As String, Optional Criteria)
    Dim RS As Recordset
    If IsMissing(Criteria) Then
        Set RS = CurrentDb.OpenRecordset("Select Top 1 " & Expr & " From " & _
        Domain & " Order By " & Expr & " Asc")
        UFirst = RS(0)
    Else
        Set RS = CurrentDb.OpenRecordset("Select Top 1 " & Expr & " From " & _
        Domain & "  Where " & Criteria & " Order By " & Expr & " Acs")
        UFirst = RS(0)
    End If
End Function

 

تم تعديل بواسطه أبو إبراهيم الغامدي
  • Like 3
قام بنشر (معدل)

الآن فى الملف الأصلى كتب فى مصدر بيانات مربع النص

=DLast("[zdate]";"Transactions";"[Qty in]<>0")

جاءت النتيجة

21/03/2017

وهى خطأ

و باستخدام دالة الأخ أبي إبراهيم

جاءت النتيجة

13/04/2017  و هى صواب

مع أن  جملة الاستعلام  واحدة

هل من تفسير لذلك

يعنى التعبير لا يعمل فى مصدر بيانات مربع النص

و تعمل من خلال الكود

هل هناك ميزة للعمل من خلال الأكواد فى مثل هيك حالة؟

is.PNG.faaf6d3154403a970b0aaa041d936ac9.PNG

 

تم تعديل بواسطه عبد الفتاح كيرة
قام بنشر (معدل)
56 دقائق مضت, أبو إبراهيم الغامدي said:

يمكن أن نصور ما قرره الاستاذين @جعفر و @رمهان   بالدالتين التاليتين

 

 

جزاك الله خير على الفكرة استاذى الفاضل ممكن تطبيقها عملى على المثال ؟ 

تم تعديل بواسطه Amr Ashraf
قام بنشر

صيغة الشفرة السابقة فيها بعض الطول! وهذا اختصارها

 


Public Function ULast(Expr As String, Domain As String, Optional Criteria)
    Dim RS As Recordset
    If IsMissing(Criteria) Then
        Criteria = "1=1"
    End If
        Set RS = CurrentDb.OpenRecordset("Select Top 1 " & Expr & " From " & _
        Domain & "  Where " & Criteria & " Order By " & Expr & " Desc")
        ULast = RS(0)
End Function

 


Public Function UFirst(Expr As String, Domain As String, Optional Criteria)
    Dim RS As Recordset
    If IsMissing(Criteria) Then
        Criteria = "1=1"
    End If
        Set RS = CurrentDb.OpenRecordset("Select Top 1 " & Expr & " From " & _
        Domain & "  Where " & Criteria & " Order By " & Expr & " Acs")
        UFirst = RS(0)
End Function

 

  • Like 4

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information