الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أرجوا توضيح الخطأ في هذه الدالة

بدأه رضا عقيل في 2 نوفمبر 2011 · 4 رد · 856 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

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

هذه هي الدالة

رمز برمجي:

Function Dmaxd(ByVal SearchFld As String, ByVal SearchTbl As String, ByVal SearchCriteria As String) As Object
        Dim Conn5 As New SqlConnection(ConnectionStringDialogTest.My.MySettings.Default.contodb)

        Dim Cmd5 As SqlClient.SqlCommand
        Dim Reader5 As SqlClient.SqlDataReader
        Dim Value5 As Object = DBNull.Value

        Dmaxd = Nothing
        Cmd5 = New SqlClient.SqlCommand("SELECT max(" & SearchFld & ") as id FROM " & SearchTbl & " WHERE " & SearchCriteria, Conn5)
        Conn5.Open()
        Reader5 = Cmd5.ExecuteReader()
        If Microsoft.VisualBasic.Left(SearchFld, 1) = "[" Then
            SearchFld = Microsoft.VisualBasic.Right(SearchFld,
            Microsoft.VisualBasic.Len(SearchFld) - 1)
        End If
        If Microsoft.VisualBasic.Right(SearchFld, 1) = "]" Then
            SearchFld = Microsoft.VisualBasic.Left(SearchFld,
            Microsoft.VisualBasic.Len(SearchFld) - 1)
        End If
        If (Reader5.Read()) Then
            Value5 = IIf(Reader5.GetValue(Reader5.GetOrdinal(SearchFld)) Is Nothing, "",
            Reader5.GetValue(Reader5.GetOrdinal(SearchFld)))
        End If
        Dmaxd = Value5
        Conn5.Close()
    End Function

وهذا هو الاستدعاء

رمز برمجي:

 Me.date22.Text = Dmaxd("id", "wared_a", "tyear='" & 1432 & "'")

وهذه الدالة تعمل بشكل ممتاز مع الحقول الرقمية للحصول على أعلى قيمة في الحقل

ولكن عند التعامل مع حقل تاريخ لا تعمل ( استبدل الحقل id بحقل يحتوي على توايخ datea وذلك للحصول على أعلى تاريخ في حقل معين داخل الجدول

رمز برمجي:

 Me.date22.Text = Dmaxd("datea", "wared_a", "tyear='" & 1432 & "'")

أرجوا بيان مكان الخطأ وتعديل الدالة

مع التحية

#2

السلام عليكم ورحمه الله وبركاته

اخي الملاحظ انك مررت 1432 كنص وليس كتاريخ؟!!

.:: Wish to become better and better ::.

#3
VB Helper كتب:

السلام عليكم ورحمه الله وبركاته

اخي الملاحظ انك مررت 1432 كنص وليس كتاريخ؟!!

السلام عليكم

1432 هو فعلاً حقل نص به السنة فقط وليس حقل تاريخ

بتفصيل أكثر

أريد أكبر تاريخ من حقل datea من جدول wared_a بشرط ان يكون حقل السنة tyear يساوي 1432 ( حقل السنة به السنةو فقط وهو حقل نصي)

مع ملاحظة انني لو اتبدلت حقل التاريخ datea بأي حقل رقم آخر للحصول على أعلى قيمة رقميه به تعمل الدالة بكفاءه

إذا كانت هناك طريقه أخرى سهله أرجوا كتابة الكود كامل بما فيه جملة الاتصال ...

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

#4

السلام عليكم ورحمه الله وبركاته

اخي ممكن ذكر نوع الحقل وماهو المرجع من الداله؟

.:: Wish to become better and better ::.

#5

اخي الكريم

حتى تقوم ب جلب اكبر قيمة تحول قيمة التاريخ المدخلة كنص الى رقم -على اعتبار انك استخدمت رقم السنة فقط لو كان تاريخ كامل لن تلصح هذه الطريقة - و باستخدام الدالة convert عند كتابة جملة ال sql و تحوله لقيمة رقمية و من ثم تطلب اكبر قيمة في الجدول عن طريق الدالة max()

امل اني افدتك لحل المشكلة

اقتباس

أبكـــــي فتبتسم الجراح من البكا

فكـــــأنّها في كـل جارحـــــــة فـم ُ

يالابتسـام الجــرح كـم أبكي و كم

ينساب فــــوق شفاهه الحمرا دم

ُ

مواضيع مشابهة