04-02-25, 09:57 PM
السلام عليكم
بالنسبة للسيكوال سيرفر
نقوم بالاتي انشاء جدول و عمل مدخلات عشوائية ثم نقم بعمل فانكش و نطبق المثال
المثال صحيح على السيكوال سيرفر
أما على الفيجوال بيسك
بالنسبة للسيكوال سيرفر
نقوم بالاتي انشاء جدول و عمل مدخلات عشوائية ثم نقم بعمل فانكش و نطبق المثال
المثال صحيح على السيكوال سيرفر
كود :
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
التميز و الابداع شعاري

