Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
3 / 3 / 0
Регистрация: 17.04.2019
Сообщений: 108

Работа с запросами

28.09.2021, 10:58. Показов 2110. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. У меня есть приложение, работающее с базой данных. Для её создания я использовал СУБД Access. В общем нужно сделать, чтобы выполнялись запросы по нажатию на кнопку и результат выводился в listBox.
Запросы:
• Вывести информацию о преподавателях, работающих в заданный день недели в заданной аудитории.
• Вывести информацию о преподавателях, которые не ведут занятия
в заданный день недели.
• Вывести дни недели, в которых проводится заданное количество занятий.
• Вывести дни недели, в которых занято заданное количество аудиторий.
• Вывести информацию о преподавателях, ведущих заданный предмет.
• Вывести ФИО преподавателей с указанием по каждому предмету суммарного количества пар за семестр (считать, что в семестре 18 недель) ( для группирующего отчета подсчитать общее количество часов по каждому преподавателю и по всем преподавателям за семестр)
Я написал код по запросам и подключил БД к проекту. Но теперь по нажатию на кнопку Button1 выбивает ошибку:
C#
1
Syntax error in FROM clause.
на строке
C#
1
listBox1.Text = command.ExecuteScalar().ToString();
По нажатию на другие кнопки выбивает одинаковые ошибки
C#
1
No value given for one or more required parameters.
на строке
C#
1
listBox1.Text = command.ExecuteScalar().ToString();
Вот код по проекту:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Threading.Tasks;
using System.Data.OleDb;
 
namespace WindowsFormsApplication1
{
    public partial class Form4 : Form
    {
 
        public static string connectString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Burden of the teachers.mdb";
        //public static string connectString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=Burden of the teachers.mdb";
 
        private OleDbConnection myConnection;
        
        public Form4()
        {
            InitializeComponent();
            myConnection = new OleDbConnection(connectString);
            myConnection.Open();
        }
 
        private void ПредметыToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var myForm = new Form1();
            myForm.Show();
            this.Visible = false;
        }
 
        private void ПреподавательToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var myForm = new Form2();
            myForm.Show();
            this.Visible = false;
        }
 
        private void НагрузкаToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var myForm = new Form3();
            myForm.Show();
            this.Visible = false;
        }
 
        private void ПросмотрToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var myForm = new Form4();
            myForm.Show();
            this.Visible = false;
        }
 
        private void ДобавлениеToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var myForm = new Form5();
            myForm.Show();
            this.Visible = false;
        }
 
        private void ИзменениеToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var myForm = new Form6();
            myForm.Show();
            this.Visible = false;
        }
 
        private void УдалениеToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var myForm = new Form7();
            myForm.Show();
            this.Visible = false;
        }
 
        private void отчётПоВсемДаннымToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var myForm = new Form8();
            myForm.Show();
            this.Visible = false;
        }
 
        private void отчётПоЗапросамToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var myForm = new Form9();
            myForm.Show();
            this.Visible = false;
        }
 
        private void отчётПоToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var myForm = new Form10();
            myForm.Show();
            this.Visible = false;
        }
 
        private void ЗакрытьПрограммуToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void Form4_Load(object sender, EventArgs e)
        {
            TextBox2.Text = "1. Вывести информацию о преподавателях, работающих в заданный день недели в заданной аудитории.";
            TextBox3.Text = "2. Вывести информацию о преподавателях, которые не ведут занятия в заданный день недели.";
            textBox4.Text = "3. Вывести дни недели, в которых проводится заданное количество занятий.";
            textBox6.Text = "4. Вывести дни недели, в которых занято заданное количество аудиторий.";
            textBox5.Text = "5. Вывести информацию о преподавателях, ведущих заданный предмет.";
            textBox1.Text = "6. Вывести ФИО преподавателей с указанием по каждому предмету суммарного количества пар за семестр (считать, что в семестре 18 недель) ( для группирующего отчета подсчитать общее количество часов по каждому преподавателю и по всем преподавателям за семестр)";
        }
 
        private void Form4_FormClosing(object sender, FormClosingEventArgs e)
        {
            myConnection.Close();
        }
        
        private void button1_Click(object sender, EventArgs e)
        {
            
            string query1 = "SELECT info FROM Teacher JOIN Subjects ON Teacher.Date_spending = Subjects.Audience WHERE day='03.06.2021' AND Audience='3-1' ";
 
            OleDbCommand command = new OleDbCommand(query1, myConnection);
 
            listBox1.Text = command.ExecuteScalar().ToString();
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            string query2 = "SELECT info FROM Teacher WHERE NOT day='03.06.2021' ";
 
            OleDbCommand command = new OleDbCommand(query2, myConnection);
 
            listBox1.Text = command.ExecuteScalar().ToString();
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            string query3 = "SELECT days FROM Bundle WHERE Numbers_of_couples = '30' ";
 
            OleDbCommand command = new OleDbCommand(query3, myConnection);
 
            listBox1.Text = command.ExecuteScalar().ToString();
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            string query4 = "SELECT days FROM Bundle WHERE Audience = '3' ";
 
            OleDbCommand command = new OleDbCommand(query4, myConnection);
 
            listBox1.Text = command.ExecuteScalar().ToString();
        }
 
        private void button5_Click(object sender, EventArgs e)
        {
            string query5 = "SELECT info FROM Teacher JOIN Subjects ON Teacher.FIO = Subjects.Title WHERE Title = 'Математика' ";
 
            OleDbCommand command = new OleDbCommand(query5, myConnection);
 
            listBox1.Text = command.ExecuteScalar().ToString();
        }
 
        private void button6_Click(object sender, EventArgs e)
        {
            string query6 = "SELECT FIO, Numbers_of_couples, Semestr FROM Teacher GROUP BY  SUM Numbers_of_couples LIKE Semestr = '18 недель' ";
 
            OleDbCommand command = new OleDbCommand(query6, myConnection);
 
            listBox1.Text = command.ExecuteScalar().ToString();
        }
 
        private void button7_Click(object sender, EventArgs e)
        {
            string query6 = "SELECT Numbers_of_couples, Semestr, FIO FROM Teacher JOIN Subjects.Numbers_of_couples = Teacher.FIO = Teacher.Semestr GROUP BY SUM Teacher.FIO AND * Teacher.Semestr ";
 
            OleDbCommand command = new OleDbCommand(query6, myConnection);
 
            listBox1.Text = command.ExecuteScalar().ToString();
        }
 
        
    }
}
На всякий случай загружаю архив с проектом.
Помогите, пожалуйста, исправить ошибки. И если нетрудно, проверьте код по запросам, просто я не уверен, что он правильный.
Вложения
Тип файла: zip Контрольная работа.zip (1.47 Мб, 13 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.09.2021, 10:58
Ответы с готовыми решениями:

Работа с SQL запросами
Здравствуйте, подскажите пожалуйста как написать запрос чтобы исполнялось "Найти в таблице Инвентарь по полю-Тип инвентаря" и в этой...

Работа с парсом и запросами
Как вставить строку string pattern = string.Format(@""csrfToken"] = "(?<tegData>.+?)""); Проблема заключается из за...

Работа с SQL запросами
Доброго времени суток. Подскажите пожалуйста, что и как написать чтобы выполнялось действие имеется две таблицы: Актив и Журнал ...

2
296 / 120 / 33
Регистрация: 06.03.2016
Сообщений: 453
28.09.2021, 19:41
Лучший ответ Сообщение было отмечено AntonioBonderas как решение

Решение

Название методов русскими - это, конечно, мощно.
Использование БД с названием с пробелами.
Таблица Teacher.Expirience - для чего там строка? Достаточно INT (число) без всяких лет/года и т.п.

Значения в команду передавать желательно через параметры.
Во всех запросах у Вас непонятно откуда взявшиеся info, days, Semestr.... Как это можно вообще написать? После SELECT идут названия столбцов в таблице, а не хз что.
C#
1
string query6 = "SELECT FIO, Numbers_of_couples, Semestr FROM Teacher ....";
Где в таблице Teacher столбец Semestr? Да хоть в любой таблице, где?
Дальше уже нет смысла смотреть. Запросы некорректны.
Вот Вам проект (скидывал в соседней теме), его хватит, чтоб хоть немного понять что-то.
Вложения
Тип файла: zip WindowsFormsApp1.zip (51.4 Кб, 2 просмотров)
1
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
28.09.2021, 20:09
Лучший ответ Сообщение было отмечено AntonioBonderas как решение

Решение

Смотреть на Ваш код без слез трудно
В дополнении к [2]:
Писать код работы с базой в тело формы - это очень плохой метод, у Вас появятся проблемы при передаче данных из одной формы в другую плюс повторение одного и того же кода как в разных формах, так и внутри каждой. Все, что касается обмена с БД, должно быть вынесено в репозиторий, отдельный класс (возможно, статический), положенный в папку Models на корню проекта. Туда же следует добавить и классы моделей.

Добавлено через 4 минуты
И зачем у Вас одновременно и SqlClient и OleDB ? Они альтернативны. Забудьте про второй - от старый и имеет ряд недостатков, в частности заморочки с параметрами запросов. Вполне достаточно Client: SqlConnection, SqlCommand, SqlDataReader, SqlDataAdapter etc
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.09.2021, 20:09
Помогаю со студенческими работами здесь

Работа с несколькими запросами по COM-порту
Добрый день. Возник вопрос такого характера. Есть запрос на устройство который связан по com-порту, запрос состоит из 8 байт в ответ...

Не совсем обычная работа с get и post запросами
Ну, во-первых, всех с наступившим НГ) Ребят, нужна помощь... Никак не могу понять, возможно ли вообще сделать так, чтобы при работе с...

Работа Windows Forms(Load_Form) с javascript и взаимодействие с xpathchecer запросами
Здравствуйте, не получилось найти на примерах задачку, 1) возможно ли в Windows Form сделать загрузку javascript(как загрузочного экрана...

Работа с запросами
Помогите пожалуйста с запросами, как они выполняются. 1. Наименование и дата самого старого товара 2. Наименование и даты четырех...

Работа с запросами в 1С 7.7
Не так давно занимаюсь 1С 7.7, возникла проблема при изучении запросов. Перечитал и описание встроенного языка, и советы на mista.ru, кучу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru