منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] زيادة رقم واحد بعد اكبر رقم في العمود - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [سؤال] زيادة رقم واحد بعد اكبر رقم في العمود (/showthread.php?tid=40020)



زيادة رقم واحد بعد اكبر رقم في العمود - غدير الصليحي - 17-11-21

السلام عليكم 
في قاعدة بيانات اكسس
لدي عمود فيه ارقام بتنسيق هذا 

001-001
001-002
001-003
001-004
001-005
001-006

اريد استعلام يزيد رقم اواحد بعد اكبر رقم في العمود يعني يكون الناتج التالي

001-007

و هكذا


RE: زيادة رقم واحد بعد اكبر رقم في العمود - سعود - 17-11-21

المثال مرفق 
PHP كود :
Imports System.ComponentModel

Public Class Form1
    Dim fpath 
As String IO.Path.GetDirectoryName(Application.ExecutablePath)
 
   Dim str As String "provider=microsoft.ace.oledb.12.0;data source=" fpath "\db.accdb"
 
   Dim con As New OleDb.OleDbConnection(str)
 
   Dim cm As New OleDb.OleDbCommand
    Dim dt 
As New DataTable
    Private Sub gd
()
 
       dt.Clear()
 
       cm.Parameters.Clear()
 
       DataGridView1.DataSource Nothing
        cm
.Connection con
        cm
.CommandText "select * from tb"
 
       If con.State ConnectionState.Closed Then con.Open()
 
       dt.Load(cm.ExecuteReader)
 
       If con.State ConnectionState.Open Then con.Close()
 
       DataGridView1.DataSource dt
        DataGridView1
.Columns(0).Width "100"
 
       DataGridView1.Columns(0).HeaderText "الرقم"
 
       DataGridView1.Columns(1).Width "150"
 
       DataGridView1.Columns(1).HeaderText "الاسم"
 
       DataGridView1.Columns(2).Width "100"
 
       DataGridView1.Columns(2).HeaderText "العمود الترقيم المخصص"
 
   End Sub
    Private Sub Form1_Load
(sender As ObjectAs EventArgsHandles MyBase.Load
        gd
()
 
   End Sub
    Private 
Function GetNewNumber() As Integer
        cm
.Parameters.Clear()
 
       Dim n As Integer 0
        cm
.CommandText "select max(n) from tb"
 
       If IsDBNull(cm.ExecuteScalarThen
            Return n
        Else
            n 
cm.ExecuteScalar
        End 
If
 
       Return n
    End 
Function
 
   Private Sub Button2_Click(sender As ObjectAs EventArgsHandles Button2.Click
        If con
.State ConnectionState.Closed Then con.Open()
 
       txtn.Text = (GetNewNumber() + 1)
 
       If con.State ConnectionState.Open Then con.Close()
 
   End Sub
    Private Sub Button1_Click
(sender As ObjectAs EventArgsHandles Button1.Click
        cm
.Parameters.Clear()
 
       cm.CommandText "insert into tb(tname,n) values(@tname,@n)"
 
       cm.Parameters.AddWithValue("@tname"txtname.Text)
 
       cm.Parameters.AddWithValue("@n"txtn.Text)
 
       If con.State ConnectionState.Closed Then con.Open()
 
       cm.ExecuteNonQuery()
 
       If con.State ConnectionState.Open Then con.Close()
 
       gd()
 
   End Sub
    Private Sub Form1_Closing
(sender As ObjectAs CancelEventArgsHandles Me.Closing
        If con
.State ConnectionState.Open Then con.Close()
 
   End Sub
End 
Class 





RE: زيادة رقم واحد بعد اكبر رقم في العمود - غدير الصليحي - 17-11-21

(17-11-21, 09:42 AM)سعود كتب :
المثال مرفق 
PHP كود :
Imports System.ComponentModel

Public Class Form1
    Dim fpath 
As String IO.Path.GetDirectoryName(Application.ExecutablePath)
 
   Dim str As String "provider=microsoft.ace.oledb.12.0;data source=" fpath "\db.accdb"
 
   Dim con As New OleDb.OleDbConnection(str)
 
   Dim cm As New OleDb.OleDbCommand
    Dim dt 
As New DataTable
    Private Sub gd
()
 
       dt.Clear()
 
       cm.Parameters.Clear()
 
       DataGridView1.DataSource Nothing
        cm
.Connection con
        cm
.CommandText "select * from tb"
 
       If con.State ConnectionState.Closed Then con.Open()
 
       dt.Load(cm.ExecuteReader)
 
       If con.State ConnectionState.Open Then con.Close()
 
       DataGridView1.DataSource dt
        DataGridView1
.Columns(0).Width "100"
 
       DataGridView1.Columns(0).HeaderText "الرقم"
 
       DataGridView1.Columns(1).Width "150"
 
       DataGridView1.Columns(1).HeaderText "الاسم"
 
       DataGridView1.Columns(2).Width "100"
 
       DataGridView1.Columns(2).HeaderText "العمود الترقيم المخصص"
 
   End Sub
    Private Sub Form1_Load
(sender As ObjectAs EventArgsHandles MyBase.Load
        gd
()
 
   End Sub
    Private 
Function GetNewNumber() As Integer
        cm
.Parameters.Clear()
 
       Dim n As Integer 0
        cm
.CommandText "select max(n) from tb"
 
       If IsDBNull(cm.ExecuteScalarThen
            Return n
        Else
            n 
cm.ExecuteScalar
        End 
If
 
       Return n
    End 
Function
 
   Private Sub Button2_Click(sender As ObjectAs EventArgsHandles Button2.Click
        If con
.State ConnectionState.Closed Then con.Open()
 
       txtn.Text = (GetNewNumber() + 1)
 
       If con.State ConnectionState.Open Then con.Close()
 
   End Sub
    Private Sub Button1_Click
(sender As ObjectAs EventArgsHandles Button1.Click
        cm
.Parameters.Clear()
 
       cm.CommandText "insert into tb(tname,n) values(@tname,@n)"
 
       cm.Parameters.AddWithValue("@tname"txtname.Text)
 
       cm.Parameters.AddWithValue("@n"txtn.Text)
 
       If con.State ConnectionState.Closed Then con.Open()
 
       cm.ExecuteNonQuery()
 
       If con.State ConnectionState.Open Then con.Close()
 
       gd()
 
   End Sub
    Private Sub Form1_Closing
(sender As ObjectAs CancelEventArgsHandles Me.Closing
        If con
.State ConnectionState.Open Then con.Close()
 
   End Sub
End 
Class 



مشكور اخي سعود لكن الذي اريد بتنسيق هذا 001-002
نوع الحقل سوف يكون نص لكي يقبل الشرطة الفاصلة بين الرقمين
طبعا الرقم 001-002 هو يمثل جزئين 
الجز الاول رقم المجموعة و الجز الثاني يمثل رقم الطالب
اريد الزيادة في رقم الطالب في الجز الثاني فقط
الكود الاول شغال بس عند اضافة الشرطة الفاصله بين الجزئين يظهر خطاء


RE: زيادة رقم واحد بعد اكبر رقم في العمود - سعود - 17-11-21

إقتباس :الجز الاول رقم المجموعة و الجز الثاني يمثل رقم الطالب

كنت اريد ان اتحدث عن هذا ولدي فكرتي الخاصة لكن كنت انتظر لعل احد لديه حل اكثر جدية مما لدي.
ممكن نضع حقل لكل مجموعة  وتكون نصية اما الحقل الرقمي اللذي يحتاج زيادة نجعله من نوع رقم.
وهكذا نحل المشكلة.
اذا لم تتضح ممكن اطبق الفكرة بمثال آخر وارفعه مجددا.


RE: زيادة رقم واحد بعد اكبر رقم في العمود - غدير الصليحي - 17-11-21

(17-11-21, 07:21 PM)سعود كتب :
إقتباس :الجز الاول رقم المجموعة و الجز الثاني يمثل رقم الطالب

كنت اريد ان اتحدث عن هذا ولدي فكرتي الخاصة لكن كنت انتظر لعل احد لديه حل اكثر جدية مما لدي.
ممكن نضع حقل لكل مجموعة  وتكون نصية اما الحقل الرقمي اللذي يحتاج زيادة نجعله من نوع رقم.
وهكذا نحل المشكلة.
اذا لم تتضح ممكن اطبق الفكرة بمثال آخر وارفعه مجددا.

يا حبذا مثال مرفق

لو نستخدم الاستعلام max
بعد ذالك في اللغة نفسها نعرف متغير نوع نص 
ثم نعمل على بحث في المتغير على الفاصله ( - )
ثم نعمل على زيادة بمقدار واحد من بعد المفاصله في متغير جديد
او عمل فصل الرقم في متغير جديد 
ثم نعمل على تجميع القيمة الجديدة مع الفاصله 
هل نستطيع ان نطبق الفكره


RE: زيادة رقم واحد بعد اكبر رقم في العمود - سعود - 17-11-21

PHP كود :
Public Class Form1
    Dim n 
As Integer 0
    Private Sub Button1_Click
(sender As ObjectAs EventArgsHandles Button1.Click
        n 
+= 1
        t2
.Text t1.Text.Split("-")(0) & "-" n.ToString("000")
 
   End Sub
    Private Sub Form1_Load
(sender As ObjectAs EventArgsHandles MyBase.Load
        n 
Val(t1.Text.Split("-")(1))
 
   End Sub
End 
Class 
بعد ان ناخذ النص من الجدول نجري عليه هذه الاكواد



RE: زيادة رقم واحد بعد اكبر رقم في العمود - غدير الصليحي - 17-11-21

(17-11-21, 08:46 PM)سعود كتب :
PHP كود :
Public Class Form1
    Dim n 
As Integer 0
    Private Sub Button1_Click
(sender As ObjectAs EventArgsHandles Button1.Click
        n 
+= 1
        t2
.Text t1.Text.Split("-")(0) & "-" n.ToString("000")
 
   End Sub
    Private Sub Form1_Load
(sender As ObjectAs EventArgsHandles MyBase.Load
        n 
Val(t1.Text.Split("-")(1))
 
   End Sub
End 
Class 
بعد ان ناخذ النص من الجدول نجري عليه هذه الاكواد
لو ترسل المرفق افصل لو سمحت


RE: زيادة رقم واحد بعد اكبر رقم في العمود - سعود - 17-11-21

(17-11-21, 09:01 PM)غدير الصليحي كتب :
(17-11-21, 08:46 PM)سعود كتب :
PHP كود :
Public Class Form1
    Dim n 
As Integer 0
    Private Sub Button1_Click
(sender As ObjectAs EventArgsHandles Button1.Click
        n 
+= 1
        t2
.Text t1.Text.Split("-")(0) & "-" n.ToString("000")
 
   End Sub
    Private Sub Form1_Load
(sender As ObjectAs EventArgsHandles MyBase.Load
        n 
Val(t1.Text.Split("-")(1))
 
   End Sub
End 
Class 
بعد ان ناخذ النص من الجدول نجري عليه هذه الاكواد
لو ترسل المرفق افصل لو سمحت
المثال هذا من دون  قاعدة بيانات.
لكن اشوف المثال الموجود واحدثه ان شاء الله تعالى.


RE: زيادة رقم واحد بعد اكبر رقم في العمود - غدير الصليحي - 17-11-21

(17-11-21, 09:04 PM)سعود كتب :
(17-11-21, 09:01 PM)غدير الصليحي كتب :
(17-11-21, 08:46 PM)سعود كتب :
PHP كود :
Public Class Form1
    Dim n 
As Integer 0
    Private Sub Button1_Click
(sender As ObjectAs EventArgsHandles Button1.Click
        n 
+= 1
        t2
.Text t1.Text.Split("-")(0) & "-" n.ToString("000")
 
   End Sub
    Private Sub Form1_Load
(sender As ObjectAs EventArgsHandles MyBase.Load
        n 
Val(t1.Text.Split("-")(1))
 
   End Sub
End 
Class 
بعد ان ناخذ النص من الجدول نجري عليه هذه الاكواد
لو ترسل المرفق افصل لو سمحت
المثال هذا من دون  قاعدة بيانات.
لكن اشوف المثال الموجود واحدثه ان شاء الله تعالى.
اشكرك اخي سعود طريقتك ناجحة مية مية 
لقد جربت من خلال بتون  بهذ الكود
كود :
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim n As Integer = 0
        n = Val(TextBox1.Text.Split("-")(1))
        n += 1
        TextBox2.Text = TextBox1.Text.Split("-")(0) & "-" & n.ToString("000")
    End Sub

وكانت ادخل اي رقم بنفس التنسيق السابق و تظهر النتيجة صحيحه