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

ماهي أفضل طريقة لتخزين رقم في قاعدة البيانات والنداء عليه في كل مرة
بمعنى فتح و غلق الجدول كل خمس تواني مثلا

الرقم الذي أريد تخزينه هو رقم الفاتورة
و هو رقم تسلسلي كما تعرفون أي يجب تخزينه و النداء عليه و إضافة +1 ثم تخزينه ....


إستعملت الطريقة العادية 
لكن إريد استشارتكم فقد تكون هده الطريقة متعبة لقاعدة البيانات أو تسبب تقل باليرنامج

شكرا لكم



الرد }}}
تم الشكر بواسطة:
#2
جرب هذا الاستعلام :


كود :
Select IIF(Max(ID) Is NULL,1,Max(ID)+1) As ID From Test


يغنيك عن الجملة الشرطية :


كود :
Dim StrSQL as String= "Select IIF(Max(ID) Is NULL,1,Max(ID)+1) As ID From Test"
Dim da As New SqlDataAdapter(StrSQL, cn)
Dim dt As New DataTable
da.Fill(dt)
Txt_Id.Text=dt.Rows(0)(0).ToString()
أما بالنسبة لطريقة الحفظ هناك عدة طرق الطرقة الاولى التي وضعتها في كودك و الثانية عن طريق الاستعلام مثل Insert أو Update
حسب ما تريد بالنسبة لي أفضل طرقة الاستعلام و إغلاق الاتصال مع كل استعلام .
الرد }}}
تم الشكر بواسطة: عبد العزيز البسكري , sniperjawadino
#3
انا ارى ان افضل طريقة لتخزين رقم الفاتورة هي عن طريق تخزين قيمة التاريخ و الوقت فتاريخ اليوم لن يتكرر ابدا مثلا : تاريخ اليوم هو 10/01/2019 قم بحذف "/" ليصبح 10012019 وأضف له الوقت بنفس الطريقة
لقد ارفقت لك مثال اتمنى ان يفيدك
الرد }}}
تم الشكر بواسطة: عبد العزيز البسكري , sniperjawadino
#4
بالنسبة لرقم الفاتورة فجميعنا يعلم ان كل تاجر يملك دفتر فواتير ورقية له ارقام محددة غير مكرر يبدأ برقم و ينتهي برقم و هكذا لذالك تعلم ان تضع خانة في خصائص الفواتير اسمها رقم الدفتر و من ثم تزيد عليه واحد و هكذا ..
الرد }}}
تم الشكر بواسطة: sniperjawadino
#5
ممكن تستخدم الطريقة التالية عبارة عن جلب اكبر رقم ثم اضف اليه 1

لو الجدول فارغ يعنى القيمة 0   الكود هيضيف 1 

PHP كود :
   Public Function max_Sales_numb()
 
       '  جلب اكبر رقم 
        Dim id As New Integer
        Try
            Dim cmd As New OleDbCommand("select max(sales_numb) from tbl_sales", con)
            con.Open()
            id = cmd.ExecuteScalar
        Catch ex As Exception
            id = 0
        End Try
        con.Close()
        Return id
    End Function 


عند الاستدعاء ضع الكود التالي
PHP كود :
txt_invsal_nub.Text max_Sales_numb() + '  جلب اكبر رقم 
الرد }}}
#6
السّلام عليكم و رحمة الله و بركاته
مشاركة للإخوة الأكارم بارك الله فيهم ..
من رأيي يتم إختيار أحد أكواد السّادة الأفاضل و التي كلها تفي بالغرض .. مع التّفكير بإضافة الجزء الذي لا يتكرّر لأبد الآبدين .. و هو الوقت و التّاريخ باحتساب الثواني ..و عمل ربط بينهما  هكذا مثلاً :
كود :
 TextBox1.Text = "INV" & DateTime.Now.ToString("ddMMyyyyhhmmss")


تحياتي
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة: asemshahen5 , larbihamri , sniperjawadino
#7
(09-01-19, 09:21 PM)asemshahen5 كتب : جرب هذا الاستعلام :


كود :
Select IIF(Max(ID) Is NULL,1,Max(ID)+1) As ID From Test


جميل جدا أخي
شكؤا لك على هذا الإختصار

لدي استفسار إذا أمكن


- هل من الضروري أن أكتب As ID يعني هل من لضروري ن أكتب إسم العمود الذي أستعلم فيه أم يمكنني أن أكتب أي متغير مثل As n

- كيف يمكنني البحث في أكثر من عمود و في نفس الإستعلام مثلا 
Max(ID) As n, Max(ID) As m, Max(ID) As k

 ("MsgBox _dt.Rows(0).Item("n 
 ("MsgBox _dt.Rows(0).Item("m 
 ("MsgBox _dt.Rows(0).Item("k 
هل هكذا صحيح

-هل الإكثار من فتح و غلق الاستعلام يسبب مشاكل لقاعدة البيانات ,,, أكسس مثلا

شكرا لك كثيرا أخي على مساعدتك

(11-01-19, 12:41 AM)عبد العزيز البسكري كتب :
كود :
 TextBox1.Text = "INV" & DateTime.Now.ToString("ddMMyyyyhhmmss")

فعلا أخي الكريم
التاريخ و الوقت لن يتكرر
أنا أستخدم هده الطريقة في Clé Index حتى لا تتكرر القيم
لكن أضن أنه لا يمكن إستخدامها في فاتورة تجارية
لأن الفاتورة التجارية رقم تسلسلي يبدأ من 1
و يجب أن يكون متتابع
الرد }}}
تم الشكر بواسطة: عبد العزيز البسكري
#8
السّلام عليكم و رحمة الله و بركاته
أعلم ذلك أخي الكريم .. و القصد مثلما كتبت لك .. أنّه يجب فقط إضافة هذا الجزء من الكود تحت أي اسم بحقل منفرد
و أثناء عمليّة حفظ الفاتورة بترقيمها العادي الذي لديك .. تعمل إختبار إحتياطي بهذا الجزء من الكود .. من باب التأمين و الإحتياط
تحياتي
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة: فراس الغزي , فراس الغزي , sniperjawadino
#9
فعلا أخي عبد العزيز هده هي الفكرة
شكرا لك على المتابعة
الرد }}}
تم الشكر بواسطة: عبد العزيز البسكري



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


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