private void NextQuest_Click(object sender, RoutedEventArgs e) // переход к следующему вопросу { if (AnswearText.Text == "//ENDQ\\") { MessageBox.Show("Данный ввод недопустим!", "Ошибка"); AnswearText.Clear(); return; } List <int> Index = new List <int>(); foreach (object item in Answers.SelectedItems) { Index.Add(Answers.Items.IndexOf(item)); } if (Index.Count > NumVar) { MessageBox.Show("Нельзя выбрать больше " + NumVar + " ответов!", "Ошибка"); Answers.SelectedIndex = -1; return; } Question.Text = "Вопрос: " + QuestionsL[NumQuestion]; // новый вопрос AnswersL.Add(QuestionsL[NumQuestion]); // занесение вопроса в массив int i = 0; while (Index.Count > i) { AnswersL.Add(INFO[Index[i]]); // занесение выбранного ответа в массив i++; } if (INFO[Answers.SelectedIndex] == "Напишите свой ответ") { AnswersL.Add(AnswearText.Text); AnswearText.Clear(); } AnswersL.Add("//ENDQ\\"); NumQuestion++; INFO.Clear(); GetAllAnswers(); if (NumVar > 1) { Answers.SelectionMode = SelectionMode.Multiple; } else { Answers.SelectionMode = SelectionMode.Single; } NextQuest.Opacity = 0.3; NextQuest.IsEnabled = false; }
private void StartQuest_Click(object sender, RoutedEventArgs e) // кнопка начала и окончания прохождения анкет { if (StartQuest.Content.ToString() == "Начать прохождение анкеты") { CommandText = "SELECT QuestN FROM Question WHERE ID_F = (SELECT ID_F FROM Form WHERE FormN ='" + ListOfQuest.SelectedItem.ToString() + "');"; GetSomeData = true; ConnectDB(CommandText); // вызов функци подключения к БД с командой на получение вопросов if (FiledConnect) { FiledConnect = false; return; } NameQuestLabel.Opacity = 0.5; // блокировка/разблокировка объектов интерфейса ListOfQuest.IsEnabled = false; ListOfQuest.Opacity = 0.5; NameGroupLabel.Opacity = 0.5; ListOfGroup.IsEnabled = false; ListOfGroup.Opacity = 0.5; Question.Opacity = 0.9; Question.IsEnabled = true; Answers.Opacity = 0.8; Answers.IsEnabled = true; CourseLabel.Opacity = 0.5; CourseList.Opacity = 0.5; CourseList.IsEnabled = false; StartQuest.Content = "Завершить прохождение анкеты"; StartQuest.Opacity = 0.3; StartQuest.IsEnabled = false; foreach (var Question in INFO) { QuestionsL.Add(Question); // занесение вопросов в массив } INFO.Clear(); TotalQuestions = QuestionsL.Count(); // подсчёт количества вопросов GetAllAnswers(); // вызов функции получения ответов на вопрос if (NumVar > 1) { Answers.SelectionMode = SelectionMode.Multiple; } else { Answers.SelectionMode = SelectionMode.Single; } } else { if (AnswearText.Text == "//ENDQ\\") { MessageBox.Show("Данный ввод недопустим!", "Ошибка"); AnswearText.Clear(); return; } List <int> Index = new List <int>(); foreach (object item in Answers.SelectedItems) { Index.Add(Answers.Items.IndexOf(item)); } if (Index.Count > NumVar) { MessageBox.Show("Нельзя выбрать больше " + NumVar + " ответов!", "Ошибка"); Answers.SelectedIndex = -1; return; } AnswersL.Add(QuestionsL[NumQuestion]); // занесение финальных значений перед отправкой в БД int d = 0; while (Index.Count > d) { AnswersL.Add(INFO[Index[d]]); // занесение выбранного ответа в массив d++; } if (INFO[Answers.SelectedIndex] == "Напишите свой ответ") { AnswersL.Add(AnswearText.Text); } AnswersL.Add("//ENDQ\\"); int Course = 0; switch (CourseList.SelectedIndex) // проверка выбранного курса { case 0: Course = 1; break; case 1: Course = 2; break; case 2: Course = 3; break; case 3: Course = 4; break; } int FinalAddr = 0; for (int i = 0; i < AnswersL.Count; i++) // цикл отправки данных в БД { if (AnswersL[i + 1] == "Напишите свой ответ") { CommandText = "INSERT INTO TextAnswear (ID_Q, ID_A, TextTA) VALUES ((SELECT ID_Q FROM Question WHERE QuestN ='" + AnswersL[i] + "'), (SELECT ID_A FROM Answear WHERE AnswN ='" + AnswersL[i + 1] + "' AND ID_Q = (SELECT ID_Q FROM Question WHERE QuestN = '" + AnswersL[i] + "')), '" + AnswersL[i + 2] + "')"; ConnectDB(CommandText); // отправка ответов, введённых вручную, в БД CommandText = "INSERT INTO MainTable (ID_F, ID_Q, ID_A, ID_TA, ID_G, Course, Specialization) VALUES ((SELECT ID_F FROM Form WHERE FormN ='" + ListOfQuest.SelectedItem.ToString() + "'), (SELECT ID_Q FROM Question WHERE QuestN ='" + AnswersL[i] + "'), (SELECT ID_A FROM Answear WHERE AnswN ='" + AnswersL[i + 1] + "'), (SELECT ID_TA FROM TextAnswear WHERE TextTA = '" + AnswersL[i + 2] + "'), (SELECT ID_G FROM [Group] WHERE GroupN ='" + ListOfGroup.SelectedItem.ToString() + "'), '" + Course + "', (SELECT Specialization FROM [Group] WHERE GroupN ='" + ListOfGroup.SelectedItem.ToString() + "')); "; ConnectDB(CommandText); // отправка выбранных ответов i += 3; } else { for (int s = i; s < AnswersL.Count; s++) { if (AnswersL[s] == "//ENDQ\\") { FinalAddr = s; break; } } for (int q = i; q < FinalAddr - 1; q++) { CommandText = "INSERT INTO MainTable (ID_F, ID_Q, ID_A, ID_TA, ID_G, Course, Specialization) VALUES ((SELECT ID_F FROM Form WHERE FormN ='" + ListOfQuest.SelectedItem.ToString() + "'), (SELECT ID_Q FROM Question WHERE QuestN ='" + AnswersL[i] + "'), (SELECT ID_A FROM Answear WHERE AnswN ='" + AnswersL[q + 1] + "'), '0', (SELECT ID_G FROM [Group] WHERE GroupN ='" + ListOfGroup.SelectedItem.ToString() + "'), '" + Course + "', (SELECT Specialization FROM [Group] WHERE GroupN ='" + ListOfGroup.SelectedItem.ToString() + "')); "; ConnectDB(CommandText); // отправка выбранных ответов } i = FinalAddr; } } if (FiledConnect) { FiledConnect = false; MessageBox.Show("Результаты не были сохранены из-за превышеного ожидания доступа к базе данных 'QDB.db'!\n", "Ошибка"); return; } INFO.Clear(); // откат объектов интерфейса окна в изначальное состояние QuestionsL.Clear(); AnswersL.Clear(); StartQuest.Content = "Начать прохождение анкеты"; NextQuest.Opacity = 0.3; NextQuest.IsEnabled = false; Answers.Items.Clear(); Question.Text = "Вопрос:"; Question.Opacity = 0.3; Question.IsEnabled = false; NameQuestLabel.Opacity = 0.9; ListOfQuest.Opacity = 0.9; ListOfQuest.IsEnabled = true; NameGroupLabel.Opacity = 0.9; ListOfGroup.Opacity = 0.9; ListOfGroup.IsEnabled = true; Answers.Opacity = 0.5; Answers.IsEnabled = false; ListOfGroup.SelectedIndex = -1; ListOfQuest.SelectedIndex = -1; CourseList.SelectedIndex = -1; StartQuest.Opacity = 0.3; StartQuest.IsEnabled = false; CourseLabel.Opacity = 0.9; CourseList.Opacity = 0.9; CourseList.IsEnabled = true; AnswearText.Clear(); AnswearText.IsEnabled = false; Answers.SelectionMode = SelectionMode.Single; AnswearTextLabel.Opacity = 0.5; NumQuestion = 0; TotalQuestions = 0; TotalSleepCycle = 0; MessageBox.Show("Анкета успешно пройдена, результаты сохранены!", "Сообщение"); } }