منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : تصحيح كود بارك الله فيكم
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليككم وررحمة الله

عندي فوررم عباره عن ارقام

Label1
Label2
Label3

وهكذا

[attachment=21496]

اريد اعمل بحث في قاعد البيانات عن الارقام اذا حصل مثلا رررقم 03 يغير لون الرقم الى اللون الاحمر مثلا

جربت عدة طرق بس ما نفع

هذا الكود الي عندي

كود :
Private Function COUNT04() As Integer
       If conn.State <> ConnectionState.Open Then conn.Open()
       Using cmd4 As New SQLiteCommand("SELECT cqz FROM DBqsos WHERE cqz='04' ", conn)

           Dim queryResult = cmd4.ExecuteScalar()
           If IsDBNull(queryResult) Then
           Else
               rrr5 = Convert.ToInt32(cmd4.ExecuteScalar())
               Label4.BackColor = Color.Red
               Label4.Font = New Font(Label4.Font, FontStyle.Bold)
           End If
           Return rrr5
       End Using
   End Function





   Private Function COUNT05() As Integer

       Using cmd5 As New SQLiteCommand("SELECT COUNT(*) FROM DBqsos WHERE cqz='05'", conn)
           If conn.State <> ConnectionState.Open Then conn.Open()
           Dim queryResult = cmd5.ExecuteScalar()
           If IsDBNull(queryResult) Then
           Else
               rrr5 = Convert.ToInt32(cmd5.ExecuteScalar())
               Label5.BackColor = Color.Red
               Label5.Font = New Font(Label5.Font, FontStyle.Bold)
           End If
           Return rrr5
       End Using
   End Function


كود :
Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load

       COUNT01()
       COUNT02()
       COUNT03()
       COUNT04()
       COUNT05()
       COUNT06()
       COUNT07()
       COUNT08()
       COUNT09()
       COUNT10()
       COUNT11()
       COUNT12()
       COUNT13()
       COUNT14()
       COUNT15()
       COUNT16()
       COUNT17()
       COUNT18()
       COUNT19()
       COUNT20()
       COUNT21()
       COUNT22()
       COUNT23()
       COUNT24()
       COUNT25()
       COUNT26()
       COUNT27()
       COUNT28()
       COUNT29()
       COUNT30()
       COUNT31()
       COUNT32()
       COUNT33()
       COUNT34()
       COUNT35()
       COUNT36()
       COUNT37()
       COUNT38()
       COUNT39()
       COUNT40()

   End Sub


بس مع الاسف لا يعمل الكود

ما هيه الطريقه الصحيحه لكود بارك الله فيكم

وشكررا
اهلا بك اخي خالد ،
اتمنى ان تكون بخير
وردتني فكرة حول نتائج البحث ان يتم سردها في قائمة ليست بوكس 
حيث يمكنك تحرير الاندكس المراد متى ما شئت و كيفما اردت 
كما يمكنك التقليص من كتابة الكود و استدعاء ذلك الكم الهائل من البروسيجرس
استوقفتني الفكرة الجميلة هنا في هذا الرابط ...
SystemColors.HighlightText
والله اعلم 
ربما يكون لديك مغزى اخر او يأتينا احدهم بطريقة افضل 
بالتوفيق
(13-05-19, 10:09 PM)Amir_Alzubidy كتب : [ -> ]اهلا بك اخي خالد ،
اتمنى ان تكون بخير
وردتني فكرة حول نتائج البحث ان يتم سردها في قائمة ليست بوكس 
حيث يمكنك تحرير الاندكس المراد متى ما شئت و كيفما اردت 
كما يمكنك التقليص من كتابة الكود و استدعاء ذلك الكم الهائل من البروسيجرس
استوقفتني الفكرة الجميلة هنا في هذا الرابط ...
SystemColors.HighlightText
والله اعلم 
ربما يكون لديك مغزى اخر او يأتينا احدهم بطريقة افضل 
بالتوفيق

اهلا بك استاذي كل عام وانت بالف خير

الفكره بارك الله فيك

ان يقوم بالبحث في قاعدة البيانات عن الررقم واذا حصله يغير لونه

الاررقام من 1 الى 40

مثل ما واضح لك فوق

صحيح الكود كبيرر انا عامل لكل ررقم استعلام 

بس ما اعرف الطريقه الصحيحه كيف بتكون 

شكرا لك من جديد
اختصار للكود

إذا كانت الليبلات ليست على الفورم مباشرة قد تحتاج لتغيير كلمة Me الموجودة في Me.Controls
PHP كود :
   Private Sub Form1_Load(sender As ObjectAs EventArgsHandles MyBase.Load

        For i 
1 To 40
            CheckCQZ
(i.ToString("00"))
 
       Next
    End Sub

    Private Sub CheckCQZ
(cqz As String)

 
       Dim lbl As Label
        lbl 
Me.Controls(String.Format("Label{0}"Val(cqz)))

 
       If conn.State <> ConnectionState.Open Then conn.Open()
 
       Using cmd As New SQLiteCommand("SELECT cqz FROM DBqsos WHERE cqz=@cqz "conn)
 
           cmd.Parameters.AddWithValue("@cqz"cqz)
 
           Dim queryResult cmd.ExecuteScalar()

 
           If Not IsDBNull(cmd.ExecuteScalar()) Then
                lbl
.BackColor Color.Red
                lbl
.Font = New Font(lbl.FontFontStyle.Bold)

 
           Else
                lbl
.BackColor Nothing
                lbl
.Font = New Font(lbl.FontFontStyle.Regular)

 
           End If

 
       End Using
    End Sub 
(13-05-19, 10:45 PM)ﺣﺮﯾﻒ ﺑﺮﻣﺠﺔ كتب : [ -> ]
اختصار للكود

إذا كانت الليبلات ليست على الفورم مباشرة قد تحتاج لتغيير كلمة Me الموجودة في Me.Controls
PHP كود :
   Private Sub Form1_Load(sender As ObjectAs EventArgsHandles MyBase.Load[/align]
 
       For i 1 To 40
            CheckCQZ
(i.ToString("00"))
 
       Next
    End Sub

    Private Sub CheckCQZ
(cqz As String)

 
       Dim lbl As Label
        lbl 
Me.Controls(String.Format("Label{0}"Val(cqz)))

 
       If conn.State <> ConnectionState.Open Then conn.Open()
 
       Using cmd As New SQLiteCommand("SELECT cqz FROM DBqsos WHERE cqz=@cqz "conn)
 
           cmd.Parameters.AddWithValue("@cqz"cqz)
 
           Dim queryResult cmd.ExecuteScalar()

 
           If Not IsDBNull(cmd.ExecuteScalar()) Then
                lbl
.BackColor Color.Red
                lbl
.Font = New Font(lbl.FontFontStyle.Bold)

 
           Else
                lbl
.BackColor Nothing
                lbl
.Font = New Font(lbl.FontFontStyle.Regular)

 
           End If

 
       End Using
    End Sub 


تسلم استاذي 

قمت بتجربة الكود

ططلع لي غلط

[attachment=21503]
وعليكم السلام ورحمة الله وبركاته

اتعجب لكل من ستخدم Sub أو Function
بالطريقة كما لو انه يقوم بتنفيذ كود بداخل حدث

الـ Sub و Function هو اراحية او توفير ضغط وجهد
حيث لديم كود يكتب 10 او 100 او حتى 1000000 مرة
فبمجرد كتابته مرة واحدة يتم استدعائه حسب ما تريد

ويتم ذلك من خلال تمييز القيم والمتغيرات بمعرف يتم ارسال وقد التنفيذ
ولتوضح الفكرة اكثر انظر هنا فهذا الـ Function

الكود الذى ستستخدمه بدلاً من 40 Function الذى لديك هو
كود :
   Private Function CountNumber(Num As Integer, CLo As Color)
       If conn.State <> ConnectionState.Open Then conn.Open()
       Using cmd As New SQLiteCommand("SELECT cqz FROM DBqsos WHERE cqz=@cqz ", conn)
           cmd.Parameters.AddWithValue("@cqz", Num.ToString("00"))
           If Not IsDBNull(cmd.ExecuteScalar()) Then
               Controls(String.Format("Label{0}", Num)).BackColor = CLo
               Controls(String.Format("Label{0}", Num)).Font = New Font(Controls(String.Format("Label{0}", Num)).Font, FontStyle.Bold)
           End If
       End Using
       Return False
   End Function

وفقط عند الاستدعاء سيتم كالتالى
كود :
       CountNumber(2, Color.Blue)

حيث رقم 2 هو قيمة المطلوب البحث عنها
وهو نفسه رقم الـ Label لديك فى الفورم
طيب انا عايز ابحث عن رقم 5 واذا وجد يقوم بتغيير لون Label5 الى لون احمر

فسيتم تنفيذ الكود بهذا الشكل
كود :
       CountNumber(5, Color.Red)

طيب محتاج ابحث عن رقم 1000 ويقوم بتغير لون الـ Label1000
انت ملاحظ انا بقول 1000 مش بس 40 يعنى مهما كان العدد 
وكان المطلوب ان يكون اللون فضي عند الايجاد

فقط طبق الكود التالى
كود :
       CountNumber(1000, Color.Silver)

انظر كيف ان الامر ابسط واسهل مما تتخيل
وانك لا تحتاج الى تكرار الـ Function لـ 1000 مرة بعدد الـ Label
لكي يتوافق معك عدداً وكذلك تتمكن من وضع لون لكل رقم تقوم بالبحث عليه

اتمنى ان يكون الكود بسيط
ولا يوجد به اى متاهة لفهمه

تحياتى لك
وتمنياتى لك التوفيق
(14-05-19, 01:02 AM)elgokr كتب : [ -> ]
وعليكم السلام ورحمة الله وبركاته

اتعجب لكل من ستخدم Sub أو Function
بالطريقة كما لو انه يقوم بتنفيذ كود بداخل حدث

الـ Sub و Function هو اراحية او توفير ضغط وجهد
حيث لديم كود يكتب 10 او 100 او حتى 1000000 مرة
فبمجرد كتابته مرة واحدة يتم استدعائه حسب ما تريد

ويتم ذلك من خلال تمييز القيم والمتغيرات بمعرف يتم ارسال وقد التنفيذ
ولتوضح الفكرة اكثر انظر هنا فهذا الـ Function

الكود الذى ستستخدمه بدلاً من 40 Function الذى لديك هو
كود :
   Private Function CountNumber(Num As Integer, CLo As Color)
       If conn.State <> ConnectionState.Open Then conn.Open()
       Using cmd As New SQLiteCommand("SELECT cqz FROM DBqsos WHERE cqz=@cqz ", conn)
           cmd.Parameters.AddWithValue("@cqz", Num.ToString("00"))
           If Not IsDBNull(cmd.ExecuteScalar()) Then
               Controls(String.Format("Label{0}", Num)).BackColor = CLo
               Controls(String.Format("Label{0}", Num)).Font = New Font(Controls(String.Format("Label{0}", Num)).Font, FontStyle.Bold)
           End If
       End Using
       Return False
   End Function

وفقط عند الاستدعاء سيتم كالتالى
كود :
       CountNumber(2, Color.Blue)

حيث رقم 2 هو قيمة المطلوب البحث عنها
وهو نفسه رقم الـ Label لديك فى الفورم
طيب انا عايز ابحث عن رقم 5 واذا وجد يقوم بتغيير لون Label5 الى لون احمر

فسيتم تنفيذ الكود بهذا الشكل
كود :
       CountNumber(5, Color.Red)

طيب محتاج ابحث عن رقم 1000 ويقوم بتغير لون الـ Label1000
انت ملاحظ انا بقول 1000 مش بس 40 يعنى مهما كان العدد 
وكان المطلوب ان يكون اللون فضي عند الايجاد

فقط طبق الكود التالى
كود :
       CountNumber(1000, Color.Silver)

انظر كيف ان الامر ابسط واسهل مما تتخيل
وانك لا تحتاج الى تكرار الـ Function لـ 1000 مرة بعدد الـ Label
لكي يتوافق معك عدداً وكذلك تتمكن من وضع لون لكل رقم تقوم بالبحث عليه

اتمنى ان يكون الكود بسيط
ولا يوجد به اى متاهة لفهمه

تحياتى لك
وتمنياتى لك التوفيق


تسلم استاذي الكريم

دائما مبدع

انا قمت بتجربت الكود 

في القاعده عندي رقم 
05

[attachment=21504]

واضفت كود الاستدعاء

كود :
  Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load


       CountNumber(1, Color.Blue)
       CountNumber(2, Color.Blue)
       CountNumber(3, Color.Blue)
       CountNumber(4, Color.Blue)
       CountNumber(5, Color.Blue)
   End Sub



الان يجب الررقم 5 يتغير لونه فقط 

بس كل الارقام تغير لونهم

[attachment=21505]

للعلم ال Label عندي ارقامهم كذا

Label1
Label2
Label3
Label4
Label5
Label6
Label7
Label8
Label9
Label10
Label11

وهكذا


اعذرني اذا فهمتك غلط 

وشكرا لك من جديد استاذي الكريم
لا ابداً المشكلة فقط فى هذا السطر
كود :
       If Not IsDBNull(cmd.ExecuteScalar()) Then


على اى حال انا قمت بتعديل كود الـ Function
فقط احذف ما لديك واستبدله بالتالى
كود :
   Private Function CountNumber(Num As Integer, CLo As Color)
       If conn.State <> ConnectionState.Open Then conn.Open()
       Dim cmd As New SQLiteCommand("SELECT cqz FROM DBqsos WHERE cqz=@cqz ", conn)
       cmd.Parameters.AddWithValue("@cqz", Num.ToString("00"))
       Dim sqLReader As SQLiteDataReader = cmd.ExecuteReader()
       If sqLReader.Read() Then
           Controls(String.Format("Label{0}", Num)).BackColor = CLo
           Controls(String.Format("Label{0}", Num)).Font = New Font(Controls(String.Format("Label{0}", Num)).Font, FontStyle.Bold)
       End If
       Return False
   End Function

وسيعمل معك ان شاء الله هذه المرة بدون مشكلة

تحياتى لك
وتمنياتى لك التوفيق
(14-05-19, 12:47 PM)elgokr كتب : [ -> ]لا ابداً المشكلة فقط فى هذا السطر
كود :
       If Not IsDBNull(cmd.ExecuteScalar()) Then


على اى حال انا قمت بتعديل كود الـ Function
فقط احذف ما لديك واستبدله بالتالى
كود :
   Private Function CountNumber(Num As Integer, CLo As Color)
       If conn.State <> ConnectionState.Open Then conn.Open()
       Dim cmd As New SQLiteCommand("SELECT cqz FROM DBqsos WHERE cqz=@cqz ", conn)
       cmd.Parameters.AddWithValue("@cqz", Num.ToString("00"))
       Dim sqLReader As SQLiteDataReader = cmd.ExecuteReader()
       If sqLReader.Read() Then
           Controls(String.Format("Label{0}", Num)).BackColor = CLo
           Controls(String.Format("Label{0}", Num)).Font = New Font(Controls(String.Format("Label{0}", Num)).Font, FontStyle.Bold)
       End If
       Return False
   End Function

وسيعمل معك ان شاء الله هذه المرة بدون مشكلة

تحياتى لك
وتمنياتى لك التوفيق



نعم استاذي كل شي على ما يرام بارك الله فيك

تسلم ايدك مجهود تشكر عليه  Rolleyes
الشكر لله والحمد لله
والحمد لله على كل حال

تحياتى لك
وتمنياتى لك التوفيق