تصحيح كود بارك الله فيكم - dubai.eig - 13-05-19
السلام عليككم وررحمة الله
عندي فوررم عباره عن ارقام
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
بس مع الاسف لا يعمل الكود
ما هيه الطريقه الصحيحه لكود بارك الله فيكم
وشكررا
RE: تصحيح كود بارك الله فيكم - dubai.eig - 13-05-19
(13-05-19, 10:09 PM)Amir_Alzubidy كتب : اهلا بك اخي خالد ،
اتمنى ان تكون بخير
وردتني فكرة حول نتائج البحث ان يتم سردها في قائمة ليست بوكس
حيث يمكنك تحرير الاندكس المراد متى ما شئت و كيفما اردت
كما يمكنك التقليص من كتابة الكود و استدعاء ذلك الكم الهائل من البروسيجرس
استوقفتني الفكرة الجميلة هنا في هذا الرابط ...
SystemColors.HighlightText
والله اعلم
ربما يكون لديك مغزى اخر او يأتينا احدهم بطريقة افضل
بالتوفيق
اهلا بك استاذي كل عام وانت بالف خير
الفكره بارك الله فيك
ان يقوم بالبحث في قاعدة البيانات عن الررقم واذا حصله يغير لونه
الاررقام من 1 الى 40
مثل ما واضح لك فوق
صحيح الكود كبيرر انا عامل لكل ررقم استعلام
بس ما اعرف الطريقه الصحيحه كيف بتكون
شكرا لك من جديد
RE: تصحيح كود بارك الله فيكم - ﺣﺮﯾﻒ ﺑﺮﻣﺠﺔ - 13-05-19
اختصار للكود
إذا كانت الليبلات ليست على الفورم مباشرة قد تحتاج لتغيير كلمة Me الموجودة في Me.Controls
PHP كود :
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles 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.Font, FontStyle.Bold)
Else lbl.BackColor = Nothing lbl.Font = New Font(lbl.Font, FontStyle.Regular)
End If
End Using End Sub
RE: تصحيح كود بارك الله فيكم - dubai.eig - 13-05-19
(13-05-19, 10:45 PM)ﺣﺮﯾﻒ ﺑﺮﻣﺠﺔ كتب : اختصار للكود
إذا كانت الليبلات ليست على الفورم مباشرة قد تحتاج لتغيير كلمة Me الموجودة في Me.Controls
PHP كود :
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles 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.Font, FontStyle.Bold)
Else lbl.BackColor = Nothing lbl.Font = New Font(lbl.Font, FontStyle.Regular)
End If
End Using End Sub
تسلم استاذي
قمت بتجربة الكود
ططلع لي غلط
[attachment=21503]
RE: تصحيح كود بارك الله فيكم - elgokr - 14-05-19
وعليكم السلام ورحمة الله وبركاته
اتعجب لكل من ستخدم 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
لكي يتوافق معك عدداً وكذلك تتمكن من وضع لون لكل رقم تقوم بالبحث عليه
اتمنى ان يكون الكود بسيط
ولا يوجد به اى متاهة لفهمه
تحياتى لك
وتمنياتى لك التوفيق
RE: تصحيح كود بارك الله فيكم - dubai.eig - 14-05-19
(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
وهكذا
اعذرني اذا فهمتك غلط
وشكرا لك من جديد استاذي الكريم
RE: تصحيح كود بارك الله فيكم - elgokr - 14-05-19
لا ابداً المشكلة فقط فى هذا السطر
كود :
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
وسيعمل معك ان شاء الله هذه المرة بدون مشكلة
تحياتى لك
وتمنياتى لك التوفيق
RE: تصحيح كود بارك الله فيكم - dubai.eig - 14-05-19
(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
وسيعمل معك ان شاء الله هذه المرة بدون مشكلة
تحياتى لك
وتمنياتى لك التوفيق
نعم استاذي كل شي على ما يرام بارك الله فيك
تسلم ايدك مجهود تشكر عليه
RE: تصحيح كود بارك الله فيكم - elgokr - 16-05-19
الشكر لله والحمد لله
والحمد لله على كل حال
تحياتى لك
وتمنياتى لك التوفيق
|