تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] مساعدة فى حل المشاكل فى عرض البيانات
#1
انا حول مع الكود وفعلا اشتغل وجاب الناس الى شغاله الان 

بس مش جايب كل حاجة غير اول 3 والباقى البيانات لا يعنى الوقت الجهاز ده بقالو اد ايه منصل بالانترنت كمان لما بضغط على يجيب الناس وبعد كدة يجيب تكرار الصف مرتين وفاضي


    

الكود اهو 
كود :
   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Try

           Dim IPAddress As System.Net.IPAddress = System.Net.IPAddress.Parse(ip.Text)
           Dim mk = New Mikrotik(IPAddress)
           If Not mk.Login(user.Text, pass.Text) Then
               Console.WriteLine("Cant log in")
               mk.Close()
               Console.ReadLine()
               Return
           End If
           mk.Send("/ip/hotspot/active/print", False)
           mk.Send("=.proplist=.id", False)
           mk.Send("=.proplist=server", False)
           mk.Send("=.proplist=user", False)
           mk.Send("=.proplist=address", False)
           mk.Send("=.proplist=mac-address=", False)
           mk.Send("=.proplist=uptime=", True)
           mk.Send("=.proplist=keepalive-timeout=", False)
           mk.Send("=.proplist=radius", False)
           For Each row In mk.Read()
               Dim id As String = Regex.Match(row, "(?<=id=).+?(?=\=|$)").Value
               Dim server As String = Regex.Match(row, "(?<=server=).+?(?==|$)").Value
               Dim user As String = Regex.Match(row, "(?<=user=).+?(?==|$)").Value
               Dim address As String = Regex.Match(row, "(?<=address=).+?(?==|$)").Value
               Dim mac_address As String = Regex.Match(row, "(?<=mac-address=).+?(?==|$)").Value
               Dim login_by As String = Regex.Match(row, "(?<=login-by=).+?(?==|$)").Value
               Dim uptime As String = Regex.Match(row, "(?<=uptime=).+?(?==|$)").Value
               Dim keepalive_timeout As String = Regex.Match(row, "(?<=keepalive-timeout=).+?(?==|$)").Value
               Dim radius As String = Regex.Match(row, "(?<=radius=).+?(?==|$)").Value
               DGV1.Rows.Add(id, server, user, address, uptime, keepalive_timeout, radius)
           Next
           Conn.Close()
           MsgBox("تم الاتصال")
       Catch ex As Exception
           MessageBox.Show(ex.Message)
       End Try
   End Sub

الرد
تم الشكر بواسطة:
#2
(25-09-16, 11:50 PM)ممدوح كتب : وعليكم السلام ورحمة الله وبركاته

عملت لك دالة خاصة لمشروعك وضيفتها تحويل هذه السلسة النصية الخاصة إلى Datatable لكي يسهل التعامل مع بيانتها في البحث بسهول باستخدام Linq
كود :
#Region " StringToDatatable "
   Function StringToDatatable(ByVal s As String) As DataTable
       Dim mDataTable As New DataTable
       mDataTable.Columns.AddRange(New DataColumn() {New DataColumn("id"), New DataColumn("customer"), New DataColumn("name"), New DataColumn("actual-profile")})
       mDataTable.Columns.AddRange(New DataColumn() {New DataColumn("password"), New DataColumn("shared-users"), New DataColumn("wireless-psk")})
       mDataTable.Columns.AddRange(New DataColumn() {New DataColumn("wireless-enc-key"), New DataColumn("wireless-enc-algo"), New DataColumn("last-seen")})
       mDataTable.Columns.AddRange(New DataColumn() {New DataColumn("active"), New DataColumn("incomplete"), New DataColumn("disabled")})
       Dim q =
           From x As String
           In (From x As System.Text.RegularExpressions.Match In System.Text.RegularExpressions.Regex.Matches(s, "(?<=!re).+?(?=!)") Select x.Value)
           Select New user With {
               .id = System.Text.RegularExpressions.Regex.Match(x, "(?<==.id=).*?(?==)").Value,
               .customer = System.Text.RegularExpressions.Regex.Match(x, "(?<==customer=).*?(?==)").Value,
               .name = System.Text.RegularExpressions.Regex.Match(x, "(?<==name=).*?(?==)").Value,
               .actual_profile = System.Text.RegularExpressions.Regex.Match(x, "(?<==actual-profile=).*?(?==)").Value,
               .password = System.Text.RegularExpressions.Regex.Match(x, "(?<==password=).*?(?==)").Value,
               .shared_users = System.Text.RegularExpressions.Regex.Match(x, "(?<==shared-users=).*?(?==)").Value,
               .wireless_psk = System.Text.RegularExpressions.Regex.Match(x, "(?<==wireless-psk=).*?(?==)").Value,
               .wireless_enc_key = System.Text.RegularExpressions.Regex.Match(x, "(?<==wireless-enc-key=)*?(?==)").Value,
               .wireless_enc_algo = System.Text.RegularExpressions.Regex.Match(x, "(?<==wireless-enc-algo=).*?(?==)").Value,
               .last_seen = System.Text.RegularExpressions.Regex.Match(x, "(?<==last-seen=).*?(?==)").Value,
               .active = System.Text.RegularExpressions.Regex.Match(x, "(?<==active=).*?(?==)").Value,
               .incomplete = System.Text.RegularExpressions.Regex.Match(x, "(?<==incomplete=).*?(?==)").Value,
               .disabled = System.Text.RegularExpressions.Regex.Match(x, "(?<==disabled=).*").Value
           }
       For Each u As user In q
           mDataTable.Rows.Add(u.id, u.customer, u.name, u.actual_profile, u.password, u.shared_users, u.wireless_psk, u.wireless_enc_key,
                       u.wireless_enc_algo, u.last_seen, u.active, u.incomplete, u.disabled)
       Next
       Return mDataTable
   End Function
   Structure user
       Dim id As String
       Dim customer As String
       Dim name As String
       Dim actual_profile As String
       Dim password As String
       Dim shared_users As String
       Dim wireless_psk As String
       Dim wireless_enc_key As String
       Dim wireless_enc_algo As String
       Dim last_seen As String
       Dim active As String
       Dim incomplete As String
       Dim disabled As String
   End Structure
#End Region

جربها بفورم جديد في زر وأداة داتاجريدفيو
كود :
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

       Dim dt As DataTable = StringToDatatable(mytxt)
       Me.DataGridView1.DataSource = dt

   End Sub

والأفضل أن تضع البيانات النصية في ملف نصي وليس في الكود


جرب استخدام هذا الكود .
الرد
تم الشكر بواسطة: MOSTAFA.KAMEL , MOSTAFA.KAMEL
#3
(07-02-18, 10:58 PM)saad mahyoub كتب :
(25-09-16, 11:50 PM)ممدوح كتب : وعليكم السلام ورحمة الله وبركاته

عملت لك دالة خاصة لمشروعك وضيفتها تحويل هذه السلسة النصية الخاصة إلى Datatable لكي يسهل التعامل مع بيانتها في البحث بسهول باستخدام Linq
كود :
#Region " StringToDatatable "
   Function StringToDatatable(ByVal s As String) As DataTable
       Dim mDataTable As New DataTable
       mDataTable.Columns.AddRange(New DataColumn() {New DataColumn("id"), New DataColumn("customer"), New DataColumn("name"), New DataColumn("actual-profile")})
       mDataTable.Columns.AddRange(New DataColumn() {New DataColumn("password"), New DataColumn("shared-users"), New DataColumn("wireless-psk")})
       mDataTable.Columns.AddRange(New DataColumn() {New DataColumn("wireless-enc-key"), New DataColumn("wireless-enc-algo"), New DataColumn("last-seen")})
       mDataTable.Columns.AddRange(New DataColumn() {New DataColumn("active"), New DataColumn("incomplete"), New DataColumn("disabled")})
       Dim q =
           From x As String
           In (From x As System.Text.RegularExpressions.Match In System.Text.RegularExpressions.Regex.Matches(s, "(?<=!re).+?(?=!)") Select x.Value)
           Select New user With {
               .id = System.Text.RegularExpressions.Regex.Match(x, "(?<==.id=).*?(?==)").Value,
               .customer = System.Text.RegularExpressions.Regex.Match(x, "(?<==customer=).*?(?==)").Value,
               .name = System.Text.RegularExpressions.Regex.Match(x, "(?<==name=).*?(?==)").Value,
               .actual_profile = System.Text.RegularExpressions.Regex.Match(x, "(?<==actual-profile=).*?(?==)").Value,
               .password = System.Text.RegularExpressions.Regex.Match(x, "(?<==password=).*?(?==)").Value,
               .shared_users = System.Text.RegularExpressions.Regex.Match(x, "(?<==shared-users=).*?(?==)").Value,
               .wireless_psk = System.Text.RegularExpressions.Regex.Match(x, "(?<==wireless-psk=).*?(?==)").Value,
               .wireless_enc_key = System.Text.RegularExpressions.Regex.Match(x, "(?<==wireless-enc-key=)*?(?==)").Value,
               .wireless_enc_algo = System.Text.RegularExpressions.Regex.Match(x, "(?<==wireless-enc-algo=).*?(?==)").Value,
               .last_seen = System.Text.RegularExpressions.Regex.Match(x, "(?<==last-seen=).*?(?==)").Value,
               .active = System.Text.RegularExpressions.Regex.Match(x, "(?<==active=).*?(?==)").Value,
               .incomplete = System.Text.RegularExpressions.Regex.Match(x, "(?<==incomplete=).*?(?==)").Value,
               .disabled = System.Text.RegularExpressions.Regex.Match(x, "(?<==disabled=).*").Value
           }
       For Each u As user In q
           mDataTable.Rows.Add(u.id, u.customer, u.name, u.actual_profile, u.password, u.shared_users, u.wireless_psk, u.wireless_enc_key,
                       u.wireless_enc_algo, u.last_seen, u.active, u.incomplete, u.disabled)
       Next
       Return mDataTable
   End Function
   Structure user
       Dim id As String
       Dim customer As String
       Dim name As String
       Dim actual_profile As String
       Dim password As String
       Dim shared_users As String
       Dim wireless_psk As String
       Dim wireless_enc_key As String
       Dim wireless_enc_algo As String
       Dim last_seen As String
       Dim active As String
       Dim incomplete As String
       Dim disabled As String
   End Structure
#End Region

جربها بفورم جديد في زر وأداة داتاجريدفيو
كود :
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

       Dim dt As DataTable = StringToDatatable(mytxt)
       Me.DataGridView1.DataSource = dt

   End Sub

والأفضل أن تضع البيانات النصية في ملف نصي وليس في الكود


جرب استخدام هذا الكود .
تمام تسلم ايدك بس الرابط الapi الى هيعرض البيانات فى الجرد هكتبو فين؟
الرد
تم الشكر بواسطة:
#4
في نفس الفورم اخي مصطفي
الرد
تم الشكر بواسطة:
#5
(07-02-18, 11:46 PM)saad mahyoub كتب : في نفس الفورم اخي مصطفي

حضرتك بس    الكود الخاص بالاتصال اهو تمام الى هيتصل ويعمل تسجيل دخول للسيرفر 

كود :
       Dim IPAddress As System.Net.IPAddress = System.Net.IPAddress.Parse(ip.Text)
       Dim mk = New Mikrotik(IPAddress)
       If Not mk.Login(user.Text, pass.Text) Then
           Console.WriteLine("Cant log in")
           mk.Close()
           Console.ReadLine()
           Return
       End If


ثانيا: الapi الى انا عايز ارسلها للسرفر وعرض البيانات منها 
كود :
mk.Send("/ip/hotspot/active/print", False)
           mk.Send("=.proplist=.id", False)
           mk.Send("=.proplist=server", False)
           mk.Send("=.proplist=user", False)
           mk.Send("=.proplist=address", True)
           mk.Send("=.proplist=mac-address", False)
           mk.Send("=.proplist=login-by", False)
           mk.Send("=.proplist=uptime", False)
           mk.Send("=.proplist=keepalive-timeout", False)
           mk.Send("=.proplist=radius", False)
           mk.Send("=.proplist=!done", False)

           For Each row In mk.Read()
               Dim id As String = Regex.Match(row, "(?<=id=).+?(?=\=|$)").Value
               Dim server As String = Regex.Match(row, "(?<=server=).+?(?==|$)").Value
               Dim user As String = Regex.Match(row, "(?<=user=).+?(?==|$)").Value
               Dim address As String = Regex.Match(row, "(?<=address=).+?(?==|$)").Value
               Dim mac_address As String = Regex.Match(row, "(?<=mac-address=).+?(?==|$)").Value
               Dim login_by As String = Regex.Match(row, "(?<=login-by=).+?(?==|$)").Value
               Dim uptime As String = Regex.Match(row, "(?<=uptime=).+?(?==|$)").Value
               Dim keepalive_timeout As String = Regex.Match(row, "(?<=keepalive-timeout=).+?(?==|$)").Value
               Dim radius As String = Regex.Match(row, "(?<=radius=).+?(?==|$)").Value
               dgv.Rows.Add(id, server, user, address , uptime, keepalive_timeout, radius)
           Next
           Conn.Close()
           MsgBox("تم الاتصال")
       Catch ex As Exception
           MessageBox.Show(ex.Message)
       End Try

تمام كدة الموضوع تمام لحد هنا الكود شغال وبيجيب البيانات بس بيعرض اول  3 فقط والباقى مش بيعرض البيانات ولو انا غيرت مثلا كلمة server باي كلمة uptime بيعرض البيانات الخاصه بيها بس انا عايز يعرض البيانات الى انا عايزها الى مكتوبه قدام حضرتك 
الرد
تم الشكر بواسطة:
#6
الحل من فضلكم ؟؟؟؟
الرد
تم الشكر بواسطة:
#7
عليك بمراجعة اسماء البيانات في النص القادم مثل =mac-address= وغيرها من حيث حالة الأحرف أيضا الحرف الكبير والصغير وعلامة -_
يجب التطابق ليستطيع Regex اخذ المعلومة من النص
الرد
تم الشكر بواسطة:
#8
(08-02-18, 02:06 AM)طالب برمجة كتب : عليك بمراجعة اسماء البيانات في النص القادم مثل =mac-address= وغيرها من حيث حالة الأحرف أيضا الحرف الكبير والصغير وعلامة -_
يجب التطابق ليستطيع Regex اخذ المعلومة من النص

فعلا طلع فى حاجات غلط ولما صلحتها اشتغل بس عايز لما اضغ على البوتن ميجيبش مربعات فاضيه بعد ما يظهر البيانات او يعرض البيانات وكمان لما اضغ اكثر من مرة ميكررش البيانات تحت بعضها يعمل مسح ويعرض من جديد

   
الرد
تم الشكر بواسطة:
#9
ضع Me.DataGridView1.Rows.Clear في بداية الزر لحذف الاسطر السابقة من الداتاجريد إن وجدت
المربعات الفاضية يعتمد البيانات، فإن لم يكن بها بيانات فطبيعي تظهر فاضية

ممكن تختبر السطر row إذا كان لا يوجد به بيانات فلا يضيف سطر
PHP كود :
If row.Trim <> "" Then dgv.Rows.Add(idserveruseraddressuptimekeepalive_timeoutradius
الرد
تم الشكر بواسطة: MOSTAFA.KAMEL
#10
(08-02-18, 02:24 AM)طالب برمجة كتب : ضع Me.DataGridView1.Rows.Clear في بداية الزر لحذف الاسطر السابقة من الداتاجريد إن وجدت
المربعات الفاضية يعتمد البيانات، فإن لم يكن بها بيانات فطبيعي تظهر فاضية

ممكن تختبر السطر row إذا كان لا يوجد به بيانات فلا يضيف سطر
PHP كود :
If row.Trim <> "" Then dgv.Rows.Add(idserveruseraddressuptimekeepalive_timeoutradius

هو المسح اشتغل بس برضو بيعرض البيانات وبعد كدة يجيب سطر فى الاخر فاضى
الرد
تم الشكر بواسطة:



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


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