0
votes

Why is the where clause being ignored in this code? It seems to be ignoring the where clause on the update which means every records has been written over. How can i fix this? Any help would be greatly appreciated.

namespace ResitAssignment2
{
    public partial class HomeCareVisitEddit : Form
    {
        public HomeCareVisitEddit()
        {
            InitializeComponent();
        }

        private void SubmitHCVA_Click(object sender, EventArgs e)
        {
            SqlConnection a = Database.GetConnection();
            a.Open();

            string sqltext;
            sqltext = @"update HomeCareVisit set
             PatientNo=@PatientNo,
             FurtherVisitRequired=@FurtherVisitRequired,
             AdvisoryNotes=@AdvisoryNotes,
             Prescription=@Prescription,
             TreatmentProvided=@TreatmentProvided,
             ActualVisitDateTime=@ActualVisitDateTime,
             Priority=@Priority,
             ScheduledDateTime=@ScheduledDateTime,
             TreatmentInstructions=@TreatmentInstructions,
             MedicalStaffID=@MedicalStaffID
              WHERE
             VisitRefNo=VisitRefNo";

            SqlCommand command = new SqlCommand(sqltext, a);

            try
            {
                using (a)
                {
                    command.Parameters.AddWithValue("@PatientNo", PatientNo.Text);
                    command.Parameters.AddWithValue("@FurtherVisitRequired", FurtherVisitRequired.Text);
                    command.Parameters.AddWithValue("@AdvisoryNotes", AdvisoryNotes.Text);
                    command.Parameters.AddWithValue("@Prescription", Prescription.Text);
                    command.Parameters.AddWithValue("@TreatmentProvided", TreatmentProvided.Text);
                    command.Parameters.AddWithValue("@ActualVisitDateTime",SqlDbType.DateTime );
                    {
                        DateTime.Parse(ActualVisitDateTime.Text);
                    };
                    command.Parameters.AddWithValue("@Priority", Priority.Text);
                    command.Parameters.AddWithValue("@ScheduledDateTime",SqlDbType.DateTime );
                    {
                        DateTime.Parse(ScheduledDateTime.Text);
                    };

                    command.Parameters.AddWithValue("@TreatmentInstructions", TreatmentInstructions.Text);
                    command.Parameters.AddWithValue("@MedicalStaffID", MedicalStaffID.Text);
                    command.Parameters.AddWithValue("@VisitRefNo", VisitRefNo.Text);
                    command.ExecuteNonQuery();

                    MessageBox.Show("Record altered");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            a.Close();
        }

        private void HomeCareVisitEddit_Load(object sender, EventArgs e)
        {
            SqlConnection a = Database.GetConnection();
            a.Open();

            string sqlText = "select * from HomeCareVisit where VisitRefNo =" + VisitRefNo;
            SqlCommand command = new SqlCommand(sqlText, a);
            SqlDataReader HomeCareVisitData = command.ExecuteReader();

            while (HomeCareVisitData.Read())
            {
                //DateTime actual = DateTime.Parse("ActualVisitDateTime");
                //DateTime scheduled = DateTime.Parse("ActualVisitDateTieme");
                PatientNo.Text = HomeCareVisitData["PatientNo"].ToString();
                FurtherVisitRequired.Text = HomeCareVisitData["FurtherVisitRequired"].ToString();
                AdvisoryNotes.Text = HomeCareVisitData["AdvisoryNotes"].ToString();
                Prescription.Text = HomeCareVisitData["Prescription"].ToString();
                TreatmentProvided.Text = HomeCareVisitData["TreatmentProvided"].ToString();
                ActualVisitDateTime.Text = HomeCareVisitData["ActualVisitDateTime"].ToString();
                Priority.Text = HomeCareVisitData["Priority"].ToString();
                ScheduledDateTime.Text = HomeCareVisitData["ScheduledDateTime"].ToString();
                TreatmentInstructions.Text = HomeCareVisitData["TreatmentInstructions"].ToString();
                MedicalStaffID.Text = HomeCareVisitData["MedicalStaffID"].ToString();
             }
             a.Close();
         }
     }
}
2
Suggestion: You could have cut out a lot of the field assignments without affecting the actual problem, making your question easier to read.catfood

2 Answers

8
votes

WHERE VisitRefNo=VisitRefNo"; should be WHERE VisitRefNo=@VisitRefNo";.

2
votes
WHERE VisitRefNo=VisitRefNo

Should be

WHERE VisitRefNo=@VisitRefNo