لدي تايمر في برنامج الشات استخدمه لكي يقوم بتنفيذ امر كل ثانية وهذا الامر اضعه في حدث timer_tick وفيه يقوم ب
1- الذهاب الي القاعدة واختيار الكلاممن الجدول chatting وهوالحقل "notes" وذلك عندما يكون المستقبل وهو في الجدول الحقل "user_2" = المتغير username والراسل وهو في الجدول الحقل "user_1" = المتغير user22
وعندما تكون حالة الكلام من حيث مقروء او غير مقروء وهي في الجدول الحقل"read_s"= القيمة 0 اي عندما يكون الكلام غير مقروء
ثم اظهار الكلام في text box وبعد ذلك تحديث الجدول لتصبح قيمة read_s=1 وذلك حتى اذا تم عمل التايمر مرة آخرى بعد 1 ثانية لينفذ نفس الامر لا يختار هذا الكلام مرة اخرى ويختار غيره تكون قيمة read_s فيه =0
وذلك بالكود:
Dim com1 As New SqlCommand("select notes from chatting where user_2='" & username & "'and user_1='" & user23 & "' and read_s=0 ", con)
Dim s1a As New DataSet
Dim t4 As New SqlDataAdapter
t4.SelectCommand = com1
t4.Fill(s1a, "chatting")
If s1a.Tables(0).Rows.Count <> 0 Then
Me.TextBox3.Text = Me.TextBox3.Text & Chr(13) & Chr(10) & user23 & " : " & s1a.Tables(0).Rows(0)(0)
TextBox3.SelectionStart = TextBox3.TextLength - 1
TextBox3.ScrollToCaret()
Dim upcom As New SqlCommand("update chatting set read_s=1, unreadn=1 where user_2='" & username & "'and user_1='" & user23 & "' and read_s=0 and unreadn=0", con)
con.Open()
upcom.ExecuteNonQuery()
con.Close()
End If TextBox3.ScrollToCaret()
المشكلة هي ان التايمر بيشتغل وبيظهر المحادثة في الtext box ثم يذهب الي الجدول ويحدث قيمة "read_s " ,ويجعلها true حتى لا تظهر نفس الرسالة مرة آخرى و يظل شغال
لكن من ضمن الرسائل تظهر رسالة لا يتم اظهارها في ال textbox وذلك لاحظته بالرجوع الى القاعدة حيث اجد الرسالة في القاعدة ولكن لا يتم اظهارها في ال textbox وهذه الرسالة يظهر ما قبلها وما بعدها
والغريب ان قيمة read_s الخاصة بها = 1 أي true وهذا معناه ان التايمر اشتغل ساعتها واختارها من الجدول عندما كانت قيمتها = false وحدث قيمتها ل true ولكنه لم يظهرها في ال textbox واظهر ما قبلها وما بعدها