تقييم الموضوع :
  • 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
فعلا أخي عبد العزيز هده هي الفكرة
شكرا لك على المتابعة
الرد
تم الشكر بواسطة: عبد العزيز البسكري


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] استفسار :- بخصوص serial number dubai.eig 0 5 منذ 21 دقيقة مضت
آخر رد: dubai.eig
  ممكن طريقة انهاء يومية للكاشير atef_020 1 31 منذ 1 ساعه مضت
آخر رد: Amir_Alzubidy
  [VB.NET] استفسار panel control & Next previous button dubai.eig 4 70 منذ 7 ساعة مضت
آخر رد: dubai.eig
  طريقة تكرار الامر تلقائيا | حل مشكلة script error في webbrowser عند فتح صفحة ما soloxocf1 6 267 أمس, 09:16 AM
آخر رد: 5000
  مشكلة في إضافة الصنف بالباركود في الفاتورة Hamoody 3 101 12-03-19, 06:44 PM
آخر رد: elgokr
  [VB.NET] استفسار بخصوص Dispose() dubai.eig 3 98 12-03-19, 10:47 AM
آخر رد: dubai.eig
  هل يوجد طريقة لارسال رسائل واتساب من البرنامج باستخدام vb.net 2010 ? Dr.Sherif Alazizi 17 3,065 07-03-19, 08:31 PM
آخر رد: elgokr
  [VB.NET] استفسار :- بخصوص The remote name could not be resolved dubai.eig 1 86 04-03-19, 02:51 AM
آخر رد: dubai.eig
  [VB.NET] استفسار بخصوص تحريك الماوس والضغط dubai.eig 1 133 02-03-19, 11:19 AM
آخر رد: dubai.eig
  [VB.NET] استفسار :- بخصوص ALTER TABLE dubai.eig 6 242 02-03-19, 03:44 AM
آخر رد: asemshahen5

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


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