السّلام عليكم و رحمة الله و بركاته
أمسية طيّبة ..
إخواني الأفاضل أملي بالله ثم بكم المساعدة بهذه الإشكاليّة لو تكرّمتم
عند الضغط على زر الأمر " الإضافة " يظهر بالتاكست 1 التّرقيم بهذا الشّكل :
0001 - 2017
أضغط مرّة ثانية .. يزداد الترقيم حسب الحقل ID الموجود بقاعدة البيانات
نفترض بنهاية هذه السّنة بآخر ثانية من 31 ديسمبر 2017 .. الترقيم مثلاً يصير : 0075 - 2017
عند دخول العام الجديد 2018 إذا كنّا من أهل الدنيا إن شاء الله ..يبدأ الترقيم من جديد ب 0001 - 2018
بارك الله فيكم و لكم مقدّمًا و جزاكم خير الجزاء
إحتراماتي
وعليكم السلام ورحمة الله وبركاته
كما طلبت في المرفقات .
السّلام عليكم و رحمة الله و بركاته
أخي الكريم " حريف برمجة "
باسم الله ما شاء الله تبارك الله
هو المطلوب بالضبط بتمامه و كماله .. و الكمال لله
بارك الله فيك و لك و في كل من تحب و جزاك خير الجزاء و رزقك خير الدارين إن شاء الله
خالص إحتراماتي و تقييماتي
مع أن الموضوع قد تم حله، فقد أردت وضع أسلوب آخر للفائدة
هذه طريقة أخرى أرجو أن تكون مفيده
وهي تكوين الرقم الجديد دون حفظه الا عند اضافة البيانات فيتم ارفاقه مع معهم
إنشاء رقم جديد (دون حفظه) عن طريقة الدالة getNewID
على أساس أن الحقل نوعه نصي كما في المثال المرفق
PHP كود :
'معرفة الرقم الجديد
Function getNewID() As String
Try
cnn.Open()
Using cmd As New OleDbCommand("Select Top 1 [ID] From [Table1] Order By [ID] Desc", cnn)
Dim id As String = cmd.ExecuteScalar
If IsNothing(id) Then id = Today.Year & "-000"
Dim y As Integer = Val(id.Split("-")(0))
Dim i As Integer = Val(id.Split("-")(1))
If y <> Today.Year Then
y = Today.Year
i = 0
End If
id = y.ToString & "-" & (i + 1).ToString("000")
Return id
End Using
Catch ex As Exception
MsgBox(ex.Message)
Return Nothing
Finally
cnn.Close()
End Try
End Function
وبمكانك تجربة بالكود التالي على المثال المرفق
PHP كود :
Imports System.Data.OleDb
Public Class Form1
Dim cnn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DBTEST.accdb;Persist Security Info=True")
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'معرفة الرقم الجديد
Dim id As String = getNewID()
MsgBox("الرقم الجديد: " & vbNewLine & id)
'عرض الرقم الجديد
TextBox1.Text = id
'الحفظ
save(id)
End Sub
'معرفة الرقم الجديد
Function getNewID() As String
Try
cnn.Open()
Using cmd As New OleDbCommand("Select Top 1 [ID] From [Table1] Order By [ID] Desc", cnn)
Dim id As String = cmd.ExecuteScalar
If IsNothing(id) Then id = Today.Year & "-000"
Dim y As Integer = Val(id.Split("-")(0))
Dim i As Integer = Val(id.Split("-")(1))
If y <> Today.Year Then
y = Today.Year
i = 0
End If
id = y.ToString & "-" & (i + 1).ToString("000")
Return id
End Using
Catch ex As Exception
MsgBox(ex.Message)
Return Nothing
Finally
cnn.Close()
End Try
End Function
Function save(ByVal id As String) As Boolean
Try
cnn.Open()
Using cmd As New OleDbCommand("Insert Into [Table1] ([ID]) Values(@id)", cnn)
cmd.Parameters.AddWithValue("@id", id)
cmd.ExecuteNonQuery()
End Using
Return True
Catch ex As Exception
MsgBox(ex.Message)
Return False
Finally
cnn.Close()
End Try
End Function
End Class
السّلام عليكم و رحمة الله و بركاته
تسلم أخي الكريم " طالب برمجة " و سلم يمينك و دينك
حلٌّ ثانٍ رائع .. مميّز و ممتاز يفي بالغرض طولاً و عرضًا
بارك الله فيك و لك و أثابك جنّات النّعيم و رزقك من حيث تحتسب و من حيث لا تحتسب إن شاء الله
إحتراماتي و تقييماتي
طيب فى هذا المثال لو اردات تحويل السنة الى رقم اخر
مثلا 2017 تساوى 71
2018 تساوى 72
هكذا
انته اكيد عارف طلبك ،،
هل 2017 = 71
2018 = 72 وهكذا كل عام زيادة واحد ؟
وضح طلبك لتجد الاجابة الصحيحة .
ماذا لو اردت ان اعدل على هذا المثال ليكون هكذا
طبعا سكون هناك تعديل فى قاعده البيانات على افتراض ان قاعدده البيانات بها حقلين للسنة والرقم
(05-12-17, 07:05 PM)حريف برمجة كتب : [ -> ]انته اكيد عارف طلبك ،،
هل 2017 = 71
2018 = 72 وهكذا كل عام زيادة واحد ؟
وضح طلبك لتجد الاجابة الصحيحة .
بالظبط كدا عايز ابدا له من سنة معينة ولتكن من سنة 2000 مثلا وعند اختيار اى سنة يزاد الرقم المقابل لها بنفس مقدار الزياده فى سنة الاخنيار
بمعنى لو اخترت سنة 2000 يظهر لى 73
لو اخترت 2005 يظهر لى 75
نفس مقدار الزياده
السلم عليكم
نفص من السنة 1927
2000 - 1927= 73
2001 - 1927 = 74
وهكذا
2010 - 1927 = 83
2017-1927 = 90