Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 14.10.2020
Сообщений: 55

A command is already in progress

09.06.2022, 21:55. Показов 1800. Ответов 2

Студворк — интернет-сервис помощи студентам
Здравствуйте! Работаю в Postgresql на c#. Сначала по id пользователя и месяцу нахожу все соответствующие задания. Затем по id задания нахожу дату создания и сдачи. В строке 144 выдается исключение "A command is already in progress". Подозреваю, что это из-за того, что 2 раза использую ExecuteReader, но не понимаю, как это исправить. Мне же все равно 2 раза нужно данные считывать.
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
187
188
189
190
191
192
using Npgsql;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Office.Interop;
using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.Office.Interop.Excel;
using DataTable = System.Data.DataTable;
 
namespace Конструктор_отчетов_1_вариант
{
 
    public class Data
    {
        public string subject_id { get; set;}
        public string type_id { get; set; }
        public string created_at { get; set; }
        public string updated_at { get; set; }
        public Data (string type_id,string subject_id,string created_id,string updated_id)
        {
            this.type_id = type_id;
            this.subject_id = subject_id;
            this.created_at = created_at;
            this.updated_at = updated_at;
        }
    }
 
    public partial class Form1 : Form
    {
        private string connstring = String.Format("Server={0};Port={1};" + "User Id={2};Password={3};Database={4};", "localhost", "5432", "postgres", "123", "Otchet");
        private NpgsqlConnection conn;
        private string sql;
        private NpgsqlCommand cmd;
        private DataTable dt;
        public int chisl = 0;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
 
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            conn = new NpgsqlConnection(connstring);
            Select();
            
        }
        private void Select()
        {
            try
            {
                conn.Open();
                sql = @"SELECT name FROM projects WHERE id=12";
                cmd = new NpgsqlCommand(sql, conn);
                dt = new DataTable();
                dt.Load(cmd.ExecuteReader());
                conn.Close();
                // dgvData = null;
                //dgvData.DataSourse = null;
                //dgvData.DataSourse = dt;
            }
            catch (Exception Ex)
            {
                conn.Close();
                MessageBox.Show("Error!");
            }
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            List<string> choise = new List<string>();
            List<Data> list = new List<Data>();
            if ((textBox1.Text == "") || (comboBox1.SelectedIndex == -1)) MessageBox.Show("Вы не заполнили поля");
            else
            {
                conn.Open();
                sql = @"SELECT id FROM users WHERE login='"+textBox1.Text+"'";
                
                cmd= new NpgsqlCommand(sql, conn);
                //MessageBox.Show(cmd.CommandText);
                string getValue = "-1";
                getValue = cmd.ExecuteScalar().ToString();
                if (getValue == "-1") MessageBox.Show("Такого логина не существует");
                else
                {
                    Microsoft.Office.Interop.Excel.Application bd = new Microsoft.Office.Interop.Excel.Application();
                    bd.Workbooks.Add();
                    bd.Visible = true;
                    Worksheet workSheet = (Excel.Worksheet)bd.ActiveSheet;
                    Excel.Range excelCells1 = (Excel.Range)workSheet.get_Range("A1", "Z1").Cells;
                    
                    // Производим объединение
                    excelCells1.Merge(Type.Missing);
                    bd.Cells.HorizontalAlignment= Microsoft.Office.Interop.Excel.Constants.xlLeft;
                    bd.Cells[1, 1] = "Отчет за " + comboBox1.Text + " сотрудника " + textBox1.Text;
                    bd.Cells[2, 1] = "Проект";
                    bd.Cells[2, 2] = "Узловая задача";
                    bd.Cells[2, 3] = "Название задачи";
                    bd.Cells[2, 4] = "Общий итог";
                    bd.Cells[2, 7] = "0,00";
                    bd.Cells[2, 8] = "0,00";
                    bd.Cells[2, 9] = "Комментарий";
                    bd.Cells[3, 4] = "Начало";
                    bd.Cells[3, 5] = "Конец";
                    bd.Cells[3, 6] = "Всего";
                    bd.Cells[3, 7] = "Сб-Вс";
                    bd.Cells[3, 8] = "Принято";
 
                    excelCells1 = (Excel.Range)workSheet.get_Range("A2", "A3").Cells;
                    excelCells1.Merge(Type.Missing);
                    excelCells1 = (Excel.Range)workSheet.get_Range("B2", "B3").Cells;
                    excelCells1.Merge(Type.Missing);
                    excelCells1 = (Excel.Range)workSheet.get_Range("C2", "C3").Cells;
                    excelCells1.Merge(Type.Missing);
 
                    
                    
                    sql = @"SELECT work_package_id FROM time_entries WHERE user_id=" + getValue + " AND tmonth="+(comboBox1.SelectedIndex+1);
                    cmd = new NpgsqlCommand(sql, conn);
                    var reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        choise.Add(reader["work_package_id"].ToString());
                    }
                    try
                    {
                        //string getProjID = cmd.ExecuteScalar().ToString();
                        int count = 4;
                        //bd.Cells[count, 1] = "Проект " + getProjID;
                        for (int i = 0; i < choise.Count; i++)
                        {
                            sql = @"SELECT type_id,id, created_at,updated_at FROM work_packages WHERE id='" + choise[i] + "'";
                            cmd = new NpgsqlCommand(sql, conn);
                            var reader2 = cmd.ExecuteReader();
                            while (reader.Read())
                            {
                                list.Add(new Data(reader["type_id"].ToString(), reader["id"].ToString(), reader["created_at"].ToString(), reader["updated_at"].ToString()));
                            }
                        }
 
                     
                            //try
                            //{
                            //    Array[,] array =; cmd.ExecuteScalar().ToArray[,];
                            //}
                            //catch { }
                            //    sql = @"SELECT subject, created_at, updated_at FROM work_packages WHERE project_id='" + getProjID + "'";
                            //cmd = new NpgsqlCommand(sql, conn);
 
 
                            try
                        {
                            
                            for (int i = 0; i < list.Count; i++)
                            {
                                bd.Cells[count + chisl, 2] = "Проект " + list[i].type_id;
                                bd.Cells[count + chisl, 3] = "Задание " + list[i].subject_id;
                                    bd.Cells[count + chisl, 4] = list[i].created_at;
                                bd.Cells[count + chisl, 5] = list[i].updated_at;
                                chisl++;
                            }
                        }
                        catch
                        {
 
                        }
                    }
                    catch
                    {
                        MessageBox.Show("Нет такого ID");
                    }
                    
                }
            }
        }
 
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
 
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.06.2022, 21:55
Ответы с готовыми решениями:

Progress Button, как вызвать метод, а после закончить Progress?
Есть кнопка с прогрессом, по ее клику вызывается это: private void sendProgress (final LinearProgressButton button){ ...

В банк требуется программист: СУБД Progress, Progress 4GL, БИСквит
ИНФОРМАЦИЯ О КОМПАНИИ Российский банк ОСНОВНЫЕ ОБЯЗАННОСТИ Разработка и сопровождение прикладных систем (рынок FOREX, операции...

При вставке данных в таблицу: Command text was not set for the command object.
Приятного время суток. Помогите пожалуйста разобраться &lt;% Dim tmp tmp = Request('val') Dim strSQL,strConn,conn,rs ...

2
2393 / 1922 / 763
Регистрация: 27.07.2012
Сообщений: 5,565
09.06.2022, 22:01
Цитата Сообщение от pomogitepojaluy Посмотреть сообщение
"A command is already in progress"
C#
1
2
3
4
5
6
                    var reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        choise.Add(reader["work_package_id"].ToString());
                    }
                    reader.Close(); // <-- !!!
0
0 / 0 / 0
Регистрация: 14.10.2020
Сообщений: 55
09.06.2022, 22:42  [ТС]
Спасибо большое, исправила, получилось! Если можете, подскажите еще, пожалуйста, почему-то не читаются created_at и updated_at. Через запрос в pgadmin все находится. В базе эти столбцы в формате timestamp without time zone.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.06.2022, 22:42
Помогаю со студенческими работами здесь

ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output
При установке PySide(и 1 и 2) файл сначала скачается, а потом выдаст ошибку ERROR: Command errored out with exit status 1: ...

1>cl : Command line error D8016 : '/MTd' and '/clr' command-line options are incompatible
Не работает прога на других компах, на которых не установлена visual studio. Приложение Windows Form, попытался сделать dll static, но...

Разница между Private cmmTrans as NEW ADODB.command и Private cmmTrans as ADODB.command
Объясните , пожалуйста, в чем различие: Private cmmTrans as NEW ADODB.command и Private cmmTrans as ADODB.command ...

progress bar
Написала код для простенького web браузера вот код brouser.h #ifndef BROWSER_H #define BROWSER_H #include...

Gauge1.Progress
как при определенном количестве нажатий на кнопку постепенно увеличивать gauge.progress? Например gauge1.MaxValue:=432;, и когда я нажму...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru