موقع طلبة جامعة البحرين

يمكنك تصفح الموقع كزائر ولكن ندعوك لتسجيل عضوية خاصة بك لتحصل على كافة الصلاحيات مثل تنزيل ملفات المكتبة وقراءة تعليقات هيئة التدريس وغيرها. يمكنك الحصول على عضوية مجانية بالضغط على زر تسجيل. إذا قمت بالتسجيل مسبقا فيمكنك الضغط على زر دخول.

تسجيل دخول
  • قسم المكتبة الجامعية مغلق مؤقتا بعد الاستهداف التي تعرضت له بعض خدمات أمازون في البحرين، جاري استرجاع الملفات ونقلها إلى سيرفرات جديدة وسيتم بعدها اعادة افتتاح المكتبة

I need help from VB.NET experts

S p y e r

ll Super Moderator ll
طاقم الإدارة
تاريخ التسجيل
25 فبراير 2010
المشاركات
6,596
المجموعة
ذكر
الدفعة الدراسية
2009
الكلية
كلية تقنية المعلومات
التخصص
Information Systems
سلام

عندي فنكشن أبي أسويها في الـ DGV بس مو راضية تتطبق
في ال DGV ، عندي column فيه تواريخ إستلام طلبات ، باختصار انا اخذ التواريخ و اطرحها من تاريخ اليوم عشان اجوف جم يوم مضى على استلام الطلب.
بناءاً على هالقيمة ، أسوي Insert إلى Icon تعبر عن حالة الطلب.

مثال:

16892


هالسكرين شوت ماخذنها تاريخ 31-05-2017
عقب مرور يومين تتحول للصورة الصفراء ، عقب أكثر من يومين تصير حمراء ، واضحة الفكرة ؟

انزين الحين الكل بيقول أكو صارت و أستوت ، الغمندة مو هني :nosweat:

المشكلة صادتني لما جيت و شبكت هذا الكولومن مع DataSet من الداتابيس موجودة فالسيرفر.
When i fill the DGV with the dataset from my database, and i try to fill this single column (image column) based on the elapsed days value, the program ignores the insertion code ! why ? no idea, then the image column shows up empty without values.

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


So, the problem comes only when i try to bind the DGV with the dataset from my data source in addition to the customized image column created.

SC :

كود:
        For rowindex = 0 To DataGridView1.RowCount - 1
            Dim rValue = DataGridView1.Rows(rowindex).Cells(4).Value
            If DateTime.TryParse(rValue, newreceived) Then
                difference = Today.Subtract(newreceived)
                diff = difference.Days
                'MessageBox.Show("days= " & newreceived)


                If diff < 2 Then

                    DataGridView1.Rows(rowindex).Cells("img").Value = My.Resources.green
                ElseIf diff = 2 Then
                    DataGridView1.Rows(rowindex).Cells("img").Value = My.Resources.yellow
                ElseIf diff > 2 Then
                    DataGridView1.Rows(rowindex).Cells("img").Value = My.Resources.red
                Else
                    MessageBox.Show("Condition is invalid !")
                End If
            Else
                MessageBox.Show("not a DateTime")
                'Stop
            End If

        Next

Any help would be appreciated ! Thanks


للمعلومية : ما جيت كتبت هني إلا ليما وصلت لطريق مسدود ^^"
جربت هالأشياء :

1- أسوي image column بالكودات و ادمجه مع ال DGV و النتيجة كالتالي :

Untitled.webp

despite the correct value of elapsed days, default image for all rows is displayed
BTW, i have ensured the correct value of elapsed days already

2- جربت أسويه من ال settings حق ال DGV و ما ينزل فيه قيم كلش

3- حاولت أتأكد ان القيم الي قاعد أقارن فيها صح أو لا ، الناتج صحيح و فرق التواريخ صحيح ما فيه مشكلة

4- كلمت منتديات أجنبية مثل stack overflow و راووني السكرين شوت الاولية وقالوا تصير ما فيها مشكلة ^^"

الي عنده فكرة عن هالشي لا يبخل علينا ، وشكراً
 
التعديل الأخير:
كلمت منتديات أجنبية مثل stack overflow و راووني السكرين شوت الاولية وقالوا تصير ما فيها مشكلة ^^"
ما عندي خلفية واسعة في الـ vb.net بس تقدر تطرح سؤالك في هالموقع ؟
http://www.vbforums.com/

هالموقع فادني في واجد أمور كنت أعتقد بأنها مستحيلة و لكنهم حلوها لي في وقت قصير جدًا.
بس ما أدري لحد ألحين هالموقع نشيط أو لا (عبارة هالأجيال صارت ما تهتم إلا بالـ social media app)
 
صباح الخير

الداتابيس Access أو SQL ؟
تقدر تطرش ليي البرنامج sln بحيث أقدر افتحه بالفيجوال؟
لأن فكرة البرنامج بسيطة، الـ DGV بالعادة سهل التعامل وياه والكود ماشوف فيه شي خطأ، في مثل هالحالات صعب الواحد يخمن المشكلة بدون ما يلعب في البرنامج

طرشه ليي بشوفه يوم الأحد :)
 
ما عندي خلفية واسعة في الـ vb.net بس تقدر تطرح سؤالك في هالموقع ؟
http://www.vbforums.com/

هالموقع فادني في واجد أمور كنت أعتقد بأنها مستحيلة و لكنهم حلوها لي في وقت قصير جدًا.
بس ما أدري لحد ألحين هالموقع نشيط أو لا (عبارة هالأجيال صارت ما تهتم إلا بالـ social media app)

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

صباح الخير

الداتابيس Access أو SQL ؟
تقدر تطرش ليي البرنامج sln بحيث أقدر افتحه بالفيجوال؟
لأن فكرة البرنامج بسيطة، الـ DGV بالعادة سهل التعامل وياه والكود ماشوف فيه شي خطأ، في مثل هالحالات صعب الواحد يخمن المشكلة بدون ما يلعب في البرنامج

طرشه ليي بشوفه يوم الأحد :)

مساء الخيرات ، الداتابيس Oracle
إي أكيد ما طلبت شي ، الشي جداً سهل و طبيعي مثلما جفت في أول سكرين شوت ، بس من أملي ال DGV بالداتا من الداتابيس يصير التالي:

1- you can edit only the columns that have been filled from the DB
2- If there are any column that is not associated with the DB in the DGV, you cannot insert any values in it.
3- i have tried to insert inside the columns by sequence, the program only ignores the image column that i created for image.
4- my interpretation is, the problem could be from the image column properties, or the DGV properties, or the insertion code, or the Oracle Database.

راح أطرش لك السولوشن في الخاص ، شكراً مقدماً :shiny:
 
  • Like
التفاعلات: _ALI_
شكراً علي ، راح أجرب و أخلي بالنهاية لحد الحين ما وصلت لحل و هالسالفة صار لي تقريباً شهر أدور عن حل و لحد الحين ما وصلت لشي نهائي.



مساء الخيرات ، الداتابيس Oracle
إي أكيد ما طلبت شي ، الشي جداً سهل و طبيعي مثلما جفت في أول سكرين شوت ، بس من أملي ال DGV بالداتا من الداتابيس يصير التالي:

1- you can edit only the columns that have been filled from the DB
2- If there are any column that is not associated with the DB in the DGV, you cannot insert any values in it.
3- i have tried to insert inside the columns by sequence, the program only ignores the image column that i created for image.
4- my interpretation is, the problem could be from the image column properties, or the DGV properties, or the insertion code, or the Oracle Database.

راح أطرش لك السولوشن في الخاص ، شكراً مقدماً :shiny:

تأخريت عليك بس لأن صادف الجمعة والسبت =)
توني حاولت فيه من شوي .. ضبطت عندي

upload_2017-6-11_11-40-28.webp


بشرح ليك طريقة ثانية تضيف فيها الـ image في الـ DGV بدون ما تكون مربوطة بالداتابيس

يتبع ..
 
التعديل الأخير:
1. ادخل الـ DGV وضيف column جديد بهالخيارات (تأكد من اللي عليهم مستطيل أحمر)
نفرض انك سميت الكولوم imgvb
upload_2017-6-11_11-47-14.webp




2. تأكد راح تطلع عندك الايكون اللي جنب اسم الكولوم غير عن الباقي مثلما واضح في الصورة:

upload_2017-6-11_11-49-13.webp



3. الكولوم اللي ضفناه ماراح يكون مربوط بالداتابيس، هو عبار عن function داخل البرنامج، وفي كل الأحوال ماعتقد راح تحتاجه في الداتابيس لان مجرد indication

4. أنا كتبت الكود بهالطريقة، تقدر تكتبه باسلوبك عادي:

كود:
        Dim diff
        Dim acdate

        For rowindex = 0 To DataGridView1.RowCount - 1
            Dim rValue = DataGridView1.Rows(rowindex).Cells(0).Value

            acdate = DataGridView1.Rows(rowindex).Cells("DataGridViewTextBoxColumn2").Value
            diff = DateDiff(DateInterval.Day, acdate, Today)

            If diff < 2 Then
                DataGridView1.Rows(rowindex).Cells("imgvb").Value = My.Resources.green
            elseIf diff = 2 Then
            DataGridView1.Rows(rowindex).Cells("imgvb").Value = My.Resources.yellow
            elseIf diff > 2 Then
            DataGridView1.Rows(rowindex).Cells("imgvb").Value = My.Resources.red
            End If
        Next

DataGridViewTextBoxColumn2 = اسم الكولوم اللي فيه التاريخ
imgvb = اسم الكولوم الخاص بالصورة اللي أضفنها في الخطوة اللي فوق

جربه اذا ماشتغل عندك خبرني :)
 
تأخريت عليك بس لأن صادف الجمعة والسبت =)
توني حاولت فيه من شوي .. ضبطت عندي

مشاهدة المرفق 16940

بشرح ليك طريقة ثانية تضيف فيها الـ image في الـ DGV بدون ما تكون مربوطة بالداتابيس

يتبع ..


هذا ممكن معناته بسبب نوع الداتابيس الي استخدمها ؟ (Oracle)


1. ادخل الـ DGV وضيف column جديد بهالخيارات (تأكد من اللي عليهم مستطيل أحمر)
نفرض انك سميت الكولوم imgvb
مشاهدة المرفق 16941



2. تأكد راح تطلع عندك الايكون اللي جنب اسم الكولوم غير عن الباقي مثلما واضح في الصورة:

مشاهدة المرفق 16942


3. الكولوم اللي ضفناه ماراح يكون مربوط بالداتابيس، هو عبار عن function داخل البرنامج، وفي كل الأحوال ماعتقد راح تحتاجه في الداتابيس لان مجرد indication

4. أنا كتبت الكود بهالطريقة، تقدر تكتبه باسلوبك عادي:

كود:
        Dim diff
        Dim acdate

        For rowindex = 0 To DataGridView1.RowCount - 1
            Dim rValue = DataGridView1.Rows(rowindex).Cells(0).Value

            acdate = DataGridView1.Rows(rowindex).Cells("DataGridViewTextBoxColumn2").Value
            diff = DateDiff(DateInterval.Day, acdate, Today)

            If diff < 2 Then
                DataGridView1.Rows(rowindex).Cells("imgvb").Value = My.Resources.green
            elseIf diff = 2 Then
            DataGridView1.Rows(rowindex).Cells("imgvb").Value = My.Resources.yellow
            elseIf diff > 2 Then
            DataGridView1.Rows(rowindex).Cells("imgvb").Value = My.Resources.red
            End If
        Next

DataGridViewTextBoxColumn2 = اسم الكولوم اللي فيه التاريخ
imgvb = اسم الكولوم الخاص بالصورة اللي أضفنها في الخطوة اللي فوق

جربه اذا ماشتغل عندك خبرني :)

للأسف جربت هالشي و جربت طريقة كتابة الكودات
الفرق ان طريقة كتابة الكودات تطلع الصورة لكن بس صورة وحده لما تقول imgcoloumn.image = img

بس ما تقدر تعدل عليه ، الطريقة الي توك سويتها ما يطلعون الصور خير شر


Untitled.webp
 
هذا ممكن معناته بسبب نوع الداتابيس الي استخدمها ؟ (Oracle)




للأسف جربت هالشي و جربت طريقة كتابة الكودات
الفرق ان طريقة كتابة الكودات تطلع الصورة لكن بس صورة وحده لما تقول imgcoloumn.image = img

بس ما تقدر تعدل عليه ، الطريقة الي توك سويتها ما يطلعون الصور خير شر


مشاهدة المرفق 16944

أنا شغال عندي، لكن ما استخدم Oracle
بس الكولوم اللي أضفناه ماليه علاقة بالداتابيس لان موجود فقط داخل الفيجوال

مومشكلة بنحصل ليه طريقة :)
أبغي اجرب شغلة .. جرب هالكود

كود:
        Dim diff
        Dim acdate

        For rowindex = 0 To DataGridView1.RowCount - 1
            Dim rValue = DataGridView1.Rows(rowindex).Cells(0).Value

            acdate = DataGridView1.Rows(rowindex).Cells("DataGridViewTextBoxColumn2").Value
            diff = DateDiff(DateInterval.Day, acdate, Today)

            If diff < 2 Then
                DataGridView1.Rows(rowindex).Cells("imgvb").Value = Image.FromFile("C:\Users\sadiq.haji\Documents\Visual Studio 2013\Projects\ExpressMed Laboratories LIS\ExpressMed Laboratories LIS\Resources\green.png")
            elseIf diff = 2 Then
                DataGridView1.Rows(rowindex).Cells("imgvb").Value = Image.FromFile("C:\Users\sadiq.haji\Documents\Visual Studio 2013\Projects\ExpressMed Laboratories LIS\ExpressMed Laboratories LIS\Resources\yellow.png")
            elseIf diff > 2 Then
                DataGridView1.Rows(rowindex).Cells("imgvb").Value = Image.FromFile("C:\Users\sadiq.haji\Documents\Visual Studio 2013\Projects\ExpressMed Laboratories LIS\ExpressMed Laboratories LIS\Resources\red.png")
            End If
        Next

نفس الكود السابق بس خليت الصور على شكل امتداد مباشر
استبدل
C:\Users\sadiq.haji\Documents\Visual Studio 2013\Projects\ExpressMed Laboratories LIS\ExpressMed Laboratories LIS\Resources\

بامتداد الصور اللي عندك (الباث موجود 3 مرات)


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

المرفقات

أنا شغال عندي، لكن ما استخدم Oracle
بس الكولوم اللي أضفناه ماليه علاقة بالداتابيس لان موجود فقط داخل الفيجوال

مومشكلة بنحصل ليه طريقة :)
أبغي اجرب شغلة .. جرب هالكود

كود:
        Dim diff
        Dim acdate

        For rowindex = 0 To DataGridView1.RowCount - 1
            Dim rValue = DataGridView1.Rows(rowindex).Cells(0).Value

            acdate = DataGridView1.Rows(rowindex).Cells("DataGridViewTextBoxColumn2").Value
            diff = DateDiff(DateInterval.Day, acdate, Today)

            If diff < 2 Then
                DataGridView1.Rows(rowindex).Cells("imgvb").Value = Image.FromFile("C:\Users\sadiq.haji\Documents\Visual Studio 2013\Projects\ExpressMed Laboratories LIS\ExpressMed Laboratories LIS\Resources\green.png")
            elseIf diff = 2 Then
                DataGridView1.Rows(rowindex).Cells("imgvb").Value = Image.FromFile("C:\Users\sadiq.haji\Documents\Visual Studio 2013\Projects\ExpressMed Laboratories LIS\ExpressMed Laboratories LIS\Resources\yellow.png")
            elseIf diff > 2 Then
                DataGridView1.Rows(rowindex).Cells("imgvb").Value = Image.FromFile("C:\Users\sadiq.haji\Documents\Visual Studio 2013\Projects\ExpressMed Laboratories LIS\ExpressMed Laboratories LIS\Resources\red.png")
            End If
        Next

نفس الكود السابق بس خليت الصور على شكل امتداد مباشر
استبدل
C:\Users\sadiq.haji\Documents\Visual Studio 2013\Projects\ExpressMed Laboratories LIS\ExpressMed Laboratories LIS\Resources\

بامتداد الصور اللي عندك (الباث موجود 3 مرات)


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

هلا صادق ، اول شي اسف على التأخير بسبب ضغط العمل
مو مشكلة راح أخلص الي بإيدي و راح أطبق هالشي و أرجع لك بالنتيجة ، شكراً
 
أنا شغال عندي، لكن ما استخدم Oracle
بس الكولوم اللي أضفناه ماليه علاقة بالداتابيس لان موجود فقط داخل الفيجوال

مومشكلة بنحصل ليه طريقة :)
أبغي اجرب شغلة .. جرب هالكود

كود:
        Dim diff
        Dim acdate

        For rowindex = 0 To DataGridView1.RowCount - 1
            Dim rValue = DataGridView1.Rows(rowindex).Cells(0).Value

            acdate = DataGridView1.Rows(rowindex).Cells("DataGridViewTextBoxColumn2").Value
            diff = DateDiff(DateInterval.Day, acdate, Today)

            If diff < 2 Then
                DataGridView1.Rows(rowindex).Cells("imgvb").Value = Image.FromFile("C:\Users\sadiq.haji\Documents\Visual Studio 2013\Projects\ExpressMed Laboratories LIS\ExpressMed Laboratories LIS\Resources\green.png")
            elseIf diff = 2 Then
                DataGridView1.Rows(rowindex).Cells("imgvb").Value = Image.FromFile("C:\Users\sadiq.haji\Documents\Visual Studio 2013\Projects\ExpressMed Laboratories LIS\ExpressMed Laboratories LIS\Resources\yellow.png")
            elseIf diff > 2 Then
                DataGridView1.Rows(rowindex).Cells("imgvb").Value = Image.FromFile("C:\Users\sadiq.haji\Documents\Visual Studio 2013\Projects\ExpressMed Laboratories LIS\ExpressMed Laboratories LIS\Resources\red.png")
            End If
        Next

نفس الكود السابق بس خليت الصور على شكل امتداد مباشر
استبدل
C:\Users\sadiq.haji\Documents\Visual Studio 2013\Projects\ExpressMed Laboratories LIS\ExpressMed Laboratories LIS\Resources\

بامتداد الصور اللي عندك (الباث موجود 3 مرات)


البرنامج اللي انا سويته مرفق بعد .. نزله وجربه عندك
جربته و نفس النتيجة ، الصورة الي نزلتها آخر شي كأنها Empty
 
upload_2017-6-12_12-55-55.webp


إشتغل البرنامج الي انت مسونه ، مادري يعني قاعد أفكر في شي ، الطريقة الي انت استخدمتها في بناء ال DGV غير عن الطريقة الي أنا إستخدمتها
أنا سويت كل شي بالكودات (ٍسويت select statement عشان أفصل الكولومنز الي ابي انزلهم بناء على شروط معينة) بينما ال DGV نفسها ما ربطتها بالداتابيس

شغلة ثانية : لما احاول أسوي sort واضغط على ال acdate ، الصور يختفون :

upload_2017-6-12_12-59-36.webp



جوف طريقتي في ملء ال DGV :

1.webp
2.webp
3.webp
 
شغلة ثانية : لما احاول أسوي sort واضغط على ال acdate ، الصور يختفون :
مشاهدة المرفق 16953

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

upload_2017-6-13_10-9-22.webp


كود:
Public Class Form1

    Private Sub Table1BindingNavigatorSaveItem_Click(sender As Object, e As EventArgs)
        Me.Validate()
        Me.Table1BindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.Sadiq_Test_DBDataSet)

    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'Sadiq_Test_DBDataSet.Table1' table. You can move, or remove it, as needed.
        Me.Table1TableAdapter.Fill(Me.Sadiq_Test_DBDataSet.Table1)

        Dim diff
        Dim acdate
        Dim IDs
        For i As Integer = 0 To DataGridView1.RowCount - 1
            IDs = DataGridView1.Rows(i).Cells("DataGridViewTextBoxColumn1").Value
            acdate = DataGridView1.Rows(i).Cells("DataGridViewTextBoxColumn2").Value
            diff = DateDiff(DateInterval.Day, acdate, Today)
            If diff < 2 Then
                DataGridView1.Rows(i).Cells("imgvb").Value = My.Resources.green
            ElseIf diff = 2 Then
                DataGridView1.Rows(i).Cells("imgvb").Value = My.Resources.yellow
            ElseIf diff > 2 Then
                DataGridView1.Rows(i).Cells("imgvb").Value = My.Resources.red
            End If
        Next
    End Sub


    Private Sub dataGridView1_ColumnHeaderMouseClick(ByVal sender As Object, _
    ByVal e As DataGridViewCellMouseEventArgs) _
    Handles DataGridView1.ColumnHeaderMouseClick

        Dim diff
        Dim acdate
        For i As Integer = 0 To DataGridView1.RowCount - 1
            acdate = DataGridView1.Rows(i).Cells("DataGridViewTextBoxColumn2").Value
            diff = DateDiff(DateInterval.Day, acdate, Today)
            If diff < 2 Then
                DataGridView1.Rows(i).Cells("imgvb").Value = My.Resources.green
            ElseIf diff = 2 Then
                DataGridView1.Rows(i).Cells("imgvb").Value = My.Resources.yellow
            ElseIf diff > 2 Then
                DataGridView1.Rows(i).Cells("imgvb").Value = My.Resources.red
            End If
        Next
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Me.Validate()
        Me.Table1BindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.Sadiq_Test_DBDataSet)
        MsgBox("All data has been updated correctly", MsgBoxStyle.Information, "Done")
    End Sub

End Class


البرنامج الجديد في المرفقات تحت، نزله وجربه مرة ثانية :smile2:

مشاهدة المرفق 16952

إشتغل البرنامج الي انت مسونه ، مادري يعني قاعد أفكر في شي ، الطريقة الي انت استخدمتها في بناء ال DGV غير عن الطريقة الي أنا إستخدمتها
أنا سويت كل شي بالكودات (ٍسويت select statement عشان أفصل الكولومنز الي ابي انزلهم بناء على شروط معينة) بينما ال DGV نفسها ما ربطتها بالداتابيس

جوف طريقتي في ملء ال DGV :

مشاهدة المرفق 16954 مشاهدة المرفق 16956 مشاهدة المرفق 16955

اذا تبغي رايي، بدل الطريقة وانتقل إلى الـ bindingsource خصوصا انك للحين في بداية المشروع
بعدما تضيف الداتابيس، افتح قائمة ال data Source على اليسار اسحب الجدول بالماوس إلى داخل الفورم وراح ينضاف عندك كل شي BindingSource و TableAdapter و AdapterManager
بعدين في كتابة الاكواد تقدر تتعامل مع كل كولوم بروحه سواء باستخدام رقم الكولوم او اسمه
بيكون واجد أضبط وأسهل ليك في التعامل وبتجنبك مشاكل كثيرة في البرنامج

upload_2017-6-13_10-2-39.webp
 

المرفقات

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

مشاهدة المرفق 16959

كود:
Public Class Form1

    Private Sub Table1BindingNavigatorSaveItem_Click(sender As Object, e As EventArgs)
        Me.Validate()
        Me.Table1BindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.Sadiq_Test_DBDataSet)

    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'Sadiq_Test_DBDataSet.Table1' table. You can move, or remove it, as needed.
        Me.Table1TableAdapter.Fill(Me.Sadiq_Test_DBDataSet.Table1)

        Dim diff
        Dim acdate
        Dim IDs
        For i As Integer = 0 To DataGridView1.RowCount - 1
            IDs = DataGridView1.Rows(i).Cells("DataGridViewTextBoxColumn1").Value
            acdate = DataGridView1.Rows(i).Cells("DataGridViewTextBoxColumn2").Value
            diff = DateDiff(DateInterval.Day, acdate, Today)
            If diff < 2 Then
                DataGridView1.Rows(i).Cells("imgvb").Value = My.Resources.green
            ElseIf diff = 2 Then
                DataGridView1.Rows(i).Cells("imgvb").Value = My.Resources.yellow
            ElseIf diff > 2 Then
                DataGridView1.Rows(i).Cells("imgvb").Value = My.Resources.red
            End If
        Next
    End Sub


    Private Sub dataGridView1_ColumnHeaderMouseClick(ByVal sender As Object, _
    ByVal e As DataGridViewCellMouseEventArgs) _
    Handles DataGridView1.ColumnHeaderMouseClick

        Dim diff
        Dim acdate
        For i As Integer = 0 To DataGridView1.RowCount - 1
            acdate = DataGridView1.Rows(i).Cells("DataGridViewTextBoxColumn2").Value
            diff = DateDiff(DateInterval.Day, acdate, Today)
            If diff < 2 Then
                DataGridView1.Rows(i).Cells("imgvb").Value = My.Resources.green
            ElseIf diff = 2 Then
                DataGridView1.Rows(i).Cells("imgvb").Value = My.Resources.yellow
            ElseIf diff > 2 Then
                DataGridView1.Rows(i).Cells("imgvb").Value = My.Resources.red
            End If
        Next
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Me.Validate()
        Me.Table1BindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.Sadiq_Test_DBDataSet)
        MsgBox("All data has been updated correctly", MsgBoxStyle.Information, "Done")
    End Sub

End Class


البرنامج الجديد في المرفقات تحت، نزله وجربه مرة ثانية :smile2:



اذا تبغي رايي، بدل الطريقة وانتقل إلى الـ bindingsource خصوصا انك للحين في بداية المشروع
بعدما تضيف الداتابيس، افتح قائمة ال data Source على اليسار اسحب الجدول بالماوس إلى داخل الفورم وراح ينضاف عندك كل شي BindingSource و TableAdapter و AdapterManager
بعدين في كتابة الاكواد تقدر تتعامل مع كل كولوم بروحه سواء باستخدام رقم الكولوم او اسمه
بيكون واجد أضبط وأسهل ليك في التعامل وبتجنبك مشاكل كثيرة في البرنامج

مشاهدة المرفق 16958

مو مشكلة راح اطبقه بس قبل لا أطبقه أحتاج أعرف شغلة ، انا أغلب الي أبي اجيبه في ال DGV جاي من أكثر من تيبل ، و عندي Inner Join.
هذا وين أقدر أسويه عقب ؟
 
مو مشكلة راح اطبقه بس قبل لا أطبقه أحتاج أعرف شغلة ، انا أغلب الي أبي اجيبه في ال DGV جاي من أكثر من تيبل ، و عندي Inner Join.
هذا وين أقدر أسويه عقب ؟

اممم ليش تخزنهم في أكثر من جدول؟
أنا اللي لاحظته في البرنامج ان كل المعلومات تخص نفس الـ Row
مثلا: اسم المراجع >> الحالة >> التشخيص >> التاريخ ... الخ، نوعية الداتا انها كلها تكون في جدول واحد (نفس الصف)
اذا خليتها في نفس الجدول راح يكون الكود أقصر والperformance تبع البرنامج أفضل والـ search أسرع وحتى الـ insert بيكون أسهل في كتابة الكود

الأفضل اربط كل DGV بجدول واحد الا اذا كان فيه شي يمنعك في البرنامج خبرني عنه =)
 
اممم ليش تخزنهم في أكثر من جدول؟
أنا اللي لاحظته في البرنامج ان كل المعلومات تخص نفس الـ Row
مثلا: اسم المراجع >> الحالة >> التشخيص >> التاريخ ... الخ، نوعية الداتا انها كلها تكون في جدول واحد (نفس الصف)
اذا خليتها في نفس الجدول راح يكون الكود أقصر والperformance تبع البرنامج أفضل والـ search أسرع وحتى الـ insert بيكون أسهل في كتابة الكود

الأفضل اربط كل DGV بجدول واحد الا اذا كان فيه شي يمنعك في البرنامج خبرني عنه =)

الداتابيس كبيرة ، أنا منجبر أخزن كل شي في تيبل غير لان عندي (حالات ، مرضى ، دكاترة ، مستشفيات ، أسعار ، ... إلخ )
صعب جداً (إذا ما كان مستحيل) أتحكم فيهم كلهم في تيبل وحده ، على سبيل المثال :

المريض شلون أجيب معلوماته ، أخلي ال ID في التيبل الرئيسية ، و بعدها أروح التيبل الي فيها المرضى و منها أعرض معلوماته كلها.
في حل أنسب ؟ للأمانة البرنامج كبير و معقد و انا توني في ال Home Page
قدرت أجمعهم في تيبل وحده مثلما أبي بس بالطريقة الي سويتها ، الطريقة الي انت خبرتني عنها ماعرف شلون أسوي ال Inner join حق التيبلز الي أحتاجهم
 
الداتابيس كبيرة ، أنا منجبر أخزن كل شي في تيبل غير لان عندي (حالات ، مرضى ، دكاترة ، مستشفيات ، أسعار ، ... إلخ )
صعب جداً (إذا ما كان مستحيل) أتحكم فيهم كلهم في تيبل وحده ، على سبيل المثال :

المريض شلون أجيب معلوماته ، أخلي ال ID في التيبل الرئيسية ، و بعدها أروح التيبل الي فيها المرضى و منها أعرض معلوماته كلها.
في حل أنسب ؟ للأمانة البرنامج كبير و معقد و انا توني في ال Home Page
قدرت أجمعهم في تيبل وحده مثلما أبي بس بالطريقة الي سويتها ، الطريقة الي انت خبرتني عنها ماعرف شلون أسوي ال Inner join حق التيبلز الي أحتاجهم

فيه طريقة تربطهم بس ما راح اقدر افيدك فيها لأنك تستخدم الـ Oracle اللي انا ما استخدمته من قبل ولا عندي عنه أي فكرة (أستخدم Access و SQL)
مثلا في الـ Access تقدر تسوي link بين أي جدول بس في الـ Oracle بتحتاج تبحث عن هالنقطة والمفروض متوفرة بسهولة لأن صاير شي common ورئيسي

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

الحين مثلا تحتاج تشوف (سجل زيارات المريض)، طبعا هذا بتحطه في DGV منفصل وتخليه في جدول منفصل
ولو احتجت (سجل الأدوية) اللي اخذها المريض، بعد بتحتاج جدول منفصل و DGV منفصل وهكذا

بمعنى تخلي كلشي في جدول بروحه ولكن في النهاية كل صفحة أو DGV في البرنامج بيكون مربوط بجدول واحد
أنا سويت من قبل سيستم مستشفى بناء على هالكونسبت .. ببحث عن البرنامج اذا حصلته بخلي لك صور منه
 
التعديل الأخير:
فيه طريقة تربطهم بس ما راح اقدر افيدك فيها لأنك تستخدم الـ Oracle اللي انا ما استخدمته من قبل ولا عندي عنه أي فكرة (خبرتي في الـ Access و الـ
مثلا في الـ Access تقدر تسوي link بين أي جدول بس في الـ Oracle بتحتاج تبحث عن هالنقطة والمفروض متوفرة بسهولة لأن صاير شي common ورئيسي

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

الحين مثلا تحتاج تشوف (سجل زيارات المريض)، طبعا هذا بتحطه في DGV منفصل وتخليه في جدول منفصل
ولو احتجت (سجل الأدوية) اللي اخذها المريض، بعد بتحتاج جدول منفصل و DGV منفصل وهكذا

بمعنى تخلي كلشي في جدول بروحه ولكن في النهاية كل صفحة أو DGV في البرنامج بيكون مربوط بجدول واحد
أنا سويت من قبل سيستم مستشفى بناء على هالكونسبت .. ببحث عن البرنامج اذا حصلته بخلي لك صور منه
راح أبحث عن هالشي ، واذا وصلت لشي جديد راح أخبرك
 
راح أبحث عن هالشي ، واذا وصلت لشي جديد راح أخبرك
:icon30:

في مرحلة رسم البرنامج، حاول جديا تقسم البرنامج بحيث تخلي كل DGV مع جدول واحد
واجد راح ترتاح بعدين وبتخلص لبروجكت أسرع من المتوقع وبتحس البرنامج سريع في البحث، في لحظات بتحصل النتائج

الـ search واحد لكن الـ DGV منفصل
مثلا تدخل البرنامج تكتب الرقم الشخص وتضغط Search راح يبحث في كل الأقسام دفعه وحدة، تقدر تروح صفحة (معلومات المريض) أو (سجل الزيارات) أو (التشخيص) أو (الأودية) أو (الاجازات) أو ...... وبتحصل كل المعلومات، يعني بس تضغط search أول ما تبحث عن الرقم الشخصي (مرة وحدة)، بعدين مجرد تتنقل بين الأقسام عشان تشوف اللي تحتاجه وكلشي بيكون معروض وجاهز

في النهاية البرنامج مقسم وسهل التصفح، الداتابيس مقسمة لعدة جداول لكن في نفس الوقت كل DGV مربوط بجدول واحد فقط
Just think about it :smile:
 
:icon30:

في مرحلة رسم البرنامج، حاول جديا تقسم البرنامج بحيث تخلي كل DGV مع جدول واحد
واجد راح ترتاح بعدين وبتخلص لبروجكت أسرع من المتوقع وبتحس البرنامج سريع في البحث، في لحظات بتحصل النتائج

الـ search واحد لكن الـ DGV منفصل
مثلا تدخل البرنامج تكتب الرقم الشخص وتضغط Search راح يبحث في كل الأقسام دفعه وحدة، تقدر تروح صفحة (معلومات المريض) أو (سجل الزيارات) أو (التشخيص) أو (الأودية) أو (الاجازات) أو ...... وبتحصل كل المعلومات، يعني بس تضغط search أول ما تبحث عن الرقم الشخصي (مرة وحدة)، بعدين مجرد تتنقل بين الأقسام عشان تشوف اللي تحتاجه وكلشي بيكون معروض وجاهز

في النهاية البرنامج مقسم وسهل التصفح، الداتابيس مقسمة لعدة جداول لكن في نفس الوقت كل DGV مربوط بجدول واحد فقط
Just think about it :smile:

على فكرة صادق ، ترى بس ال Home Page راح تكون بهالطريقة لاني محتاج أعرض لستة المرضى الي جوا أمس على سبيل المثال
و حالاتهم و الدكاترة الي يراجعون وياهم و أساميهم ( هذا كله ما بصير الا بهالطريقة )
بس في الأشياء الثانية الي تختص بالتحاليل كل تيبل بروحها مثلما قلت و واجد بتكون سهلة ( فقط ال Home Page لان الي بتطلعه لي هو عبارة عن summary )

عموما ، راح أبتدي أبحث عن الجوين ونوافيكم بالجديد ، شكراً جزيلاً :shiny:
 
إمممممممم

Untitled.webp


الفنكشن شغالة طبيعي ، لكن للأسف بدون ما أسوي Inner Join
تعبت و أنا أدور طريقة ، حصلت طريقة بحيث ان أسوي Query داخل ال DataSet Designer وبعدين ال Query تطلع في ال Data Source List وأسويها Drag لل DGV
بس لما أسوي الكويري ، ما تطلع فالداتا سورس ! دخت وانا أحاول ، لما كنت أسوي execute query هالإيرور كان يطلع لي :

Untitled1.webp



إنزين هذي الكويري :

Untitled2.webp


وين المشكلة فيها ؟ للعلم لما أسويها Execute ال Records الي ابيهم يطلعون كامل بدون مشاكل بس بعد ما أسوي للإيرور Ignore.
ليش ما تطلع فالداتا سورس عقب ما أسويها ؟ تطلع بس في DataSet Designer :

Untitled.webp



مو محصل طريقة أسوي فيها الكويري و تطلع فالداتا سورس ، أحد عنده فكرة ؟
أحس هالشي ماله علاقة بنوع الداتابيس بس في شي فالبرنامج أنا مو عارف أسويه صح
 
عودة
أعلى أسفل