تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] طلب كود لاستعلام الاسم واخر سنة اشتراك
#1
السلام عليكم

لدي قائمة بها
اسم المشترك وقيمة الاشتراك وسنة الاشتراك

اريد التعديل على كود لاستعلام لجلب الاسم واخر سنة اشتراك

مثال على ذلك invoice
name ........     ID  .........   price.......   year
2022 ....... 25 ......... Mohammed   ...... 001
2022 .........25 ........ Ali ....... 002
2023 ........ 25......... Ahmed ...... 003
2023 ......... 25 ....... Mohammed ..... 001
2023 ......... 25 ........ Ali ....... 002
2024 ........ 25 ......... Mohammed ..... 001

النتيجة المطلوبة
2024 ...... 25 ....... Mohammed ...... 001
2023 ....... 25 ...... Ali ........ 002
2023 ....... 25 ...... Ahmed ....... 003


كود :
Try
               SQLstr = "SELECT MAX(year)FROM list WHERE ID LIKE '@ID'"
               If Me.BindingContext(DataSet1, "list").Count = 0 Then
                   MsgBox("لا توجد نتائج  , تأكد من وجود إيصالات مخزنة بالمنظومة ")
                   Exit Sub
               End If
           Catch ex As Exception

           End Try
الرد }}}
تم الشكر بواسطة:
#2
قمت بالتعديل على الكود ولكن في خطأ عند التنفيذ

كود :
Try

               SQLstr = "SELECT * FROM invoice where exists ( select * from invoice high where high.ID = invoice.ID and high.year > invoice.year)"
               

               If Me.BindingContext(DataSet1, "invoice").Count = 0 Then
                   MsgBox("لا توجد نتائج  , تأكد من وجود إيصالات مخزنة بالمنظومة ")
                 
                   'Exit Sub
               End If
           Catch ex As Exception

           End Try
الرد }}}
تم الشكر بواسطة:
#3
و عليكم السلام


لتنفيذ الاستعلام الذي يعرض آخر سنة اشتراك لكل مشترك بناءً على الـ ID، يمكنك استخدام الاستعلام التالي في SQL للحصول على النتيجة المطلوبة:

PHP كود :
SELECT IDnameMAX(year) AS last_year
FROM invoice
GROUP BY ID
name
ORDER BY last_year DESC 




PHP كود :
Try
    ' استعلام SQL لجلب اسم المشترك وآخر سنة اشتراك له
    Dim SQLstr As String = "SELECT ID, name, MAX(year) AS last_year FROM invoice GROUP BY ID, name ORDER BY last_year DESC"
    
    ' 
إنشاء اتصال بقاعدة البيانات
    Using conn 
As New SqlConnection("YourConnectionStringHere")
        conn.Open()
        
        
' إنشاء SqlCommand لتنفيذ الاستعلام
        Using cmd As New SqlCommand(SQLstr, conn)
            ' 
إنشاء SqlDataAdapter لملء البيانات
            Using adapter 
As New SqlDataAdapter(cmd)
                ' إنشاء DataTable لتخزين النتائج
                Dim dt As New DataTable()
                
                ' 
ملء الـ DataTable بالبيانات من الاستعلام
                adapter
.Fill(dt)
                
                
' التحقق من وجود نتائج
                If dt.Rows.Count = 0 Then
                    MsgBox("لا توجد نتائج  , تأكد من وجود إيصالات مخزنة بالمنظومة")
                    Exit Sub
                End If
                
                ' 
عرض النتائج في DataGridView أو أي عنصر آخر
                
' على سبيل المثال، إذا كنت تريد عرض البيانات في DataGridView:
                DataGridView1.DataSource = dt
            End Using
        End Using
    End Using
Catch ex As Exception
    ' 
عرض رسالة خطأ في حال حدوث استثناء
    MsgBox
("حدث خطأ: " ex.Message)
End Try 
الرد }}}
تم الشكر بواسطة: Zuhare , Zuhare
#4
مثال عملي على السيكوال سيرفر
كود :
CREATE DATABASE Test
GO
USE Test
go
CREATE TABLE Subscribers (
  SubscriberID INT PRIMARY KEY,
  EmployeeName NVARCHAR(255),
  SubscriptionYear INT
);
go
INSERT INTO Subscribers (SubscriberID, EmployeeName, SubscriptionYear) VALUES
(1,N'أحمد', 2020),(10,N'أحمد', 2021),(11,N'أحمد', 2022),(12,N'أحمد', 2023),(13,N'أحمد', 2024),(14,N'أحمد', 2025),
(2,N'خالد', 2019),(21,N'خالد', 2020),(22,N'خالد', 2021),(26,N'خالد', 2022),(23,N'خالد', 2023),(24,N'خالد', 2024),
(3,N'فاطمة', 2022),(31,N'فاطمة', 2023),(32,N'فاطمة', 2024),(33,N'فاطمة', 2025),(34,N'علي', 2018),
(4,N'علي', 2019),(41,N'علي', 2023),(42,N'علي', 2024),
(5,N'سارة', 2021),(51,N'سارة', 2022),
(6,N'محمد', 2022),(61,N'محمد', 2023),(62,N'محمد', 2024),(63,N'محمد', 2025);

GO
WITH LatestYear AS (
  SELECT MAX(SubscriptionYear) AS MaxYear
  FROM Subscribers
),
RankedSubscriptions AS (
  SELECT
      SubscriberID,
      EmployeeName,
      SubscriptionYear,
      RANK() OVER (PARTITION BY SubscriberID ORDER BY SubscriptionYear DESC) AS SubscriptionRank
  FROM
      Subscribers
  WHERE SubscriptionYear = (SELECT MaxYear FROM LatestYear) -- استخدام السنة الأحدث من الاستعلام الفرعي
)
SELECT
  SubscriberID,
  EmployeeName,
  SubscriptionYear
FROM
  RankedSubscriptions
WHERE
  SubscriptionRank = 1;
التميز و الابداع شعاري
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  معرفة عدد مرات تكرار الاسم في الداتاقريدفيو صالح عبدالله 8 1,046 05-02-24, 04:39 PM
آخر رد: صالح عبدالله
  عدم تكرار الاسم yossefsaad370 0 461 02-11-23, 12:28 PM
آخر رد: yossefsaad370
  في الداتا جريد فيو تجميع الاسم الاول والثاني والثالث yosif 2 615 16-04-23, 07:08 AM
آخر رد: yosif
  تقسيم الاسم الكامل الى اجزاء في الداتا جريد فيو yosif 4 880 13-04-23, 11:15 PM
آخر رد: yosif
  هل يمكن اضافة بيانات اخري عند الطباعه مع داتا جريد فيو مثل الاسم التاريخ رقم الفاتور ahmedhhh2 3 1,521 13-03-22, 06:03 PM
آخر رد: ahmedhhh2
  عرض معلومات DataGridView في فورم أخر عند الضغط على الاسم aldery 9 3,680 11-06-21, 06:23 PM
آخر رد: sayyad
  أريد كود يقوم بأضافة الاسم للـ TextBox or My.Settings تلقائياً بدل يدوياً ؟ PeterGhattas082460 1 1,396 07-02-21, 03:16 AM
آخر رد: ابراهيم ايبو
  تحديد جنس الاسم Owz 4 1,727 06-01-21, 09:26 PM
آخر رد: عبد الهادي بهاب
  [VB.NET] ممكن كود عدد مرات الاسم المكرر في عامود الدادة كرد فيو aliayyad 2 1,625 07-12-20, 08:54 PM
آخر رد: aliayyad
  [كود] رمضان مبارك يا اخوتي اريد كود بحث عن الاسم لقد اتعبني البحث rochdi191 8 2,848 25-04-20, 11:32 PM
آخر رد: rochdi191

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم