تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
ازاى أطبق كود max على حقل تكست
#5
السلام عليكم 
بالنسبة للسيكوال سيرفر
نقوم بالاتي انشاء جدول و عمل مدخلات عشوائية ثم نقم بعمل فانكش و نطبق المثال
المثال صحيح على السيكوال سيرفر

كود :
CREATE TABLE Products (
   ProductID INT PRIMARY KEY, -- رقم تعريف المنتج (يمكن أن يكون تلقائي)
   ProductCode VARCHAR(20), -- كود المنتج (مثال: 1001)
   Barcode VARCHAR(20) -- الباركود الكامل (مثال: 1001-1)
);
GO
INSERT INTO Products (ProductID, ProductCode, Barcode) VALUES
(1, '1001', '1001-1'),
(2, '1001', '1001-2'),
(3, '1002', '1002-1'),
(4, '1002', '1002-2'),
(5, '1003', '1003-1'),
(6, '1001', '1001-3'), -- مثال على باركود إضافي لنفس كود المنتج
(7, '1004', '1004-1');
go
-- دالة للحصول على أعلى رقم تسلسلي للباركود
Alter FUNCTION GetMaxSerialNumber (@ProductCode VARCHAR(20))
RETURNS INT
AS
BEGIN
   DECLARE @MaxSerialNumber INT = 0

   SELECT @MaxSerialNumber = MAX(CAST(SUBSTRING(Barcode, 6, LEN(Barcode)) AS INT))
   FROM Products
   WHERE ProductCode = @ProductCode

   RETURN @MaxSerialNumber
END;
GO

-- مثال للاستخدام
DECLARE @ProductCode VARCHAR(20) = '1001';
DECLARE @MaxSerialNumber INT = dbo.GetMaxSerialNumber(@ProductCode);

-- إنشاء الباركود الجديد
DECLARE @NewBarcode VARCHAR(20) = @ProductCode + '-' + CAST(@MaxSerialNumber + 1 AS VARCHAR(10));

أما على الفيجوال بيسك
كود :
Imports System.Data.SqlClient
Imports System.Text.RegularExpressions ' لاستخدام التعابير النمطية

' دالة لجلب أعلى رقم تسلسلي للباركود
Function GetMaxSerialNumber(productCode As String) As Integer
   Dim maxSerialNumber As Integer = 0

   ' الاتصال بقاعدة البيانات (استبدل بيانات الاتصال بقاعدة بياناتك)
   Dim connectionString As String = "Data Source=YourServerAddress;Initial Catalog=YourDatabaseName;User ID=YourUsername;Password=YourPassword;"
   Using connection As New SqlConnection(connectionString)
       connection.Open()

       ' إنشاء كائن الأمر SQL
       Dim command As New SqlCommand("SELECT Barcode FROM Products WHERE ProductCode = @ProductCode", connection)
       command.Parameters.AddWithValue("@ProductCode", productCode)

       ' تنفيذ الأمر وقراءة البيانات
       Using reader As SqlDataReader = command.ExecuteReader()
           While reader.Read()
               Dim barcode As String = reader("Barcode").ToString()

               ' استخدام التعابير النمطية لاستخلاص الرقم التسلسلي
               Dim match As Match = Regex.Match(barcode, "-" & "(\d+)$") ' \d+  لأرقام فقط

               If match.Success Then
                   Dim serialNumber As Integer = CInt(match.Groups(1).Value)

                   If serialNumber > maxSerialNumber Then
                       maxSerialNumber = serialNumber
                   End If
               End If
           End While
       End Using
   End Using

   Return maxSerialNumber
End Function

' مثال للاستخدام
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
   Dim productCode As String = TextBox1.Text ' الكود المدخل (مثال: 1001)
   Dim maxSerialNumber As Integer = GetMaxSerialNumber(productCode)

   ' إنشاء الباركود الجديد
   Dim newBarcode As String = productCode & "-" & (maxSerialNumber + 1)

   ' عرض الباركود الجديد
   Label1.Text = newBarcode
End Sub
التميز و الابداع شعاري
الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
RE: ازاى أطبق كود max على حقل تكست - بواسطة aliday03 - 04-02-25, 09:57 PM


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


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