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

Добавление данных в таблицу из другой

07.05.2017, 11:09. Показов 1945. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день. Есть небольшая база из 4 таблиц: модели, адреса, свичи и статус. Задача состоит в следующем. Есть форма с 5 combobox и кнопкой "добавить". В каждое из них подставляется значение из определенной таблицы. К примеру к combobox модель подставляется поле model из таблицы модели. Надо сделать так, чтобы по нажатию на кнопку "добавить", в таблицу свичи заносилось значение получаемое в: select model_id from models where model = '"+comboModel.SelectedItem.ToString() +"' . Подскажите пожалуйста как это реализовать. Поле model_id в таблицах models и switches имеет тип данных int.
Код на данный момент следующий:
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
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
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 System.Data.SqlClient;
using System.Net;
 
namespace Accounting
{
    public partial class FormAdd : Form
    {
        FormMainMenu formmm;
        public FormAdd(FormMainMenu _form)
        {
            formmm = _form;
            InitializeComponent();
        }
 
 
        public void cc() //функции для записей даных из таблиц в поля со списками
        {
            comboAddressCity.Items.Clear();
            comboAddressStreet.Items.Clear();
            comboAddressHouse.Items.Clear();
            comboModel.Items.Clear();
            comboStatus.Items.Clear();
            con.Open(); //открытие соединения с базой
            //создание команды на выбор данных из таблицы модели
            SqlCommand cmdm = con.CreateCommand();
            cmdm.CommandType = CommandType.Text;
            cmdm.CommandText = "SELECT model FROM models";
            cmdm.ExecuteNonQuery();
            //создание команды на выбор данных из таблицы адреса
            SqlCommand cmda = con.CreateCommand();
            cmda.CommandType = CommandType.Text;
            cmda.CommandText = "SELECT city, street, house FROM addresses";
            cmda.ExecuteNonQuery();
            //создание команды на выбор данных из таблицы статус
            SqlCommand cmds = con.CreateCommand();
            cmds.CommandType = CommandType.Text;
            cmds.CommandText = "SELECT name FROM status";
            cmds.ExecuteNonQuery();
            //задание переменной для данных из таблиц
            DataTable dtm = new DataTable();
            DataTable dta = new DataTable();
            DataTable dts = new DataTable();
            //создание адаптеров для заполнения полей
            SqlDataAdapter dam = new SqlDataAdapter(cmdm);
            SqlDataAdapter daa = new SqlDataAdapter(cmda);
            SqlDataAdapter das = new SqlDataAdapter(cmds);
            dam.Fill(dtm);
            daa.Fill(dta);
            das.Fill(dts);
            //заполнение моделей
            foreach (DataRow dr in dtm.Rows)
            {
                comboModel.Items.Add(dr["model"].ToString());
            }
            //заполнение адресов
            foreach (DataRow dr in dta.Rows)
            {
                comboAddressCity.Items.Add(dr["city"].ToString());
                comboAddressStreet.Items.Add(dr["street"].ToString());
                comboAddressHouse.Items.Add(dr["house"].ToString());
            }
            //заполнение статуса
            foreach (DataRow dr in dts.Rows)
            {
                comboStatus.Items.Add(dr["name"].ToString());
            }
            con.Close(); //закрытие соединения с базой
            
        }
 
       
        SqlConnection con = new SqlConnection(@"Data Source=KIRILL-PC;Initial Catalog=SPD;Integrated Security=True;Pooling=False");
        //private void buttonView_Click(object sender, EventArgs e)
        //{
        //    con.Open();
        //    String query = "SELECT * From models";
        //    SqlDataAdapter SDA = new SqlDataAdapter(query, con);
        //    DataTable dt = new DataTable();
        //    SDA.Fill(dt);
        //    dataGridView1.DataSource = dt;
        //    con.Close();
 
        //}
 
 
 
 
        private void buttonAddToModels_Click_1(object sender, EventArgs e)//дествие при нажатии на кнопку "добавить запись" для таблицы модели
        {
            con.Open(); //открытие соединения к базе
            SqlCommand cmd = new SqlCommand("SELECT count(*) FROM models WHERE model=@model", con); //создание условия на проверку повторяемости поля model в таблице
            cmd.Parameters.AddWithValue("@model", textModel.Text);
            int i = Convert.ToInt32(cmd.ExecuteScalar());
            if (i == 0) // проверка на отсутствие вводимого значения в таблице
            {
                //действие при успешной проверке
                if (textModel.Text == "")
                {
                    con.Close();
                    MessageBox.Show("Введите модель свича!!!");
                }
                else
                {
                    // внесение данных в таблицу
                    String query = "INSERT INTO models (brand,model,boot,software) VALUES ('" + comboBrand.Text + "','" + textModel.Text + "','" + textBoot.Text + "','" + textSoftware.Text + "')";
                    SqlDataAdapter SDA = new SqlDataAdapter(query, con);
                    SDA.SelectCommand.ExecuteNonQuery();
                    con.Close();
                    MessageBox.Show("Запись успешно добавлена");
                }
 
            }
            else
            {
                con.Close();
                MessageBox.Show("Данная модель уже существует");
            }
        }
 
        
 
        private void FormAdd_FormClosing(object sender, FormClosingEventArgs e)
        {
            formmm.Show();
            this.Close();
        }
 
        private void buttonAddToAddresses_Click(object sender, EventArgs e) //дествие при нажатии на кнопку "добавить запись" для таблицы адреса
        {
            con.Open();
            //создание условия на уникальность записи для таблицы адреса
            SqlCommand cmd = new SqlCommand("SELECT count(*) from addresses where city=@city and street=@street and house=@house", con);
            cmd.Parameters.AddWithValue("@city", textCity.Text);
            cmd.Parameters.AddWithValue("@street", textStreet.Text);
            cmd.Parameters.AddWithValue("@house", textHouse.Text);
            int i = Convert.ToInt32(cmd.ExecuteScalar());
            if (i == 0) //проверка на отсутствие вносимой записи
            {
                if (textCity.Text == "" || textStreet.Text == "" || textHouse.Text == "")
                {
                    con.Close();
                    MessageBox.Show("Внимание! Все поля обязательны для заполнения!!!");
                }
                else
                {
                    //внесение данных в таблицу
                    String query = "INSERT INTO addresses (city,street,house) VALUES ('" + textCity.Text + "','" + textStreet.Text + "','" + textHouse.Text + "')";
                    SqlDataAdapter SDA = new SqlDataAdapter(query, con);
                    SDA.SelectCommand.ExecuteNonQuery();
                    con.Close();
                    MessageBox.Show("Запись успешно добавлена");
                }
            }
            else
            {
                con.Close();
                MessageBox.Show("Данный адрес уже существует");
            }
            
        }
 
      
 
        private void FormAdd_Load(object sender, EventArgs e)
        {
            cc();
        }
 
        private void buttonAddToSwitch_Click(object sender, EventArgs e)
        {
            con.Open();
            //создание условия на проверку уникальности серийника
            SqlCommand cmd = new SqlCommand("SELECT count(*) FROM switches WHERE serial=@serial", con); //создание условия на проверку повторяемости поля model в таблице
            cmd.Parameters.AddWithValue("@serial", textSerial.Text);
            int i = Convert.ToInt32(cmd.ExecuteScalar());
            if (i == 0)
            {
                if (comboAddressCity.Text == "" || comboAddressHouse.Text == "" || comboAddressStreet.Text == "" || comboModel.Text == "" || comboStatus.Text == "" || textSerial.Text == "" || ipAddressControl1.Text == "")
                {
                    MessageBox.Show("Внимание! Все поля необходимо заполнить!!!");
                    con.Close();
                }
                else
                {
                SqlCommand cmdmodel = con.CreateCommand();
                cmdmodel.CommandType = CommandType.Text;
                cmdmodel.CommandText = "SELECT model_id FROM models where model='"+comboModel.SelectedItem.ToString()+"'";
                cmdmodel.ExecuteNonQuery();
                DataTable dtmodel = new DataTable();
                SqlDataAdapter damodel = new SqlDataAdapter(cmdmodel);
                damodel.Fill(dtmodel);
                foreach (DataRow dr in dtmodel.Rows)
                {
                    textBox1.Text = dr["model_id"].ToString();
                }
                    //String query = "INSERT INTO addresses (city,street,house) VALUES ('" + textCity.Text + "','" + textStreet.Text + "','" + textHouse.Text + "')";
                    //SqlDataAdapter SDA = new SqlDataAdapter(query, con);
                    //SDA.SelectCommand.ExecuteNonQuery();
                    con.Close();
                    //MessageBox.Show("Запись успешно добавлена");
                }
            }
        }
 
        
 
    }
}
Добавлено через 18 часов 21 минуту
Порылся в интернете, нашел решение проблемы.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
//выбор значений из полей id из таблиц и присвоение их переменным
                    SqlCommand cmdchm = new SqlCommand("SELECT model_id FROM models where model='" + comboModel.SelectedItem.ToString() + "'", con);
                    SqlCommand cmdcha = new SqlCommand("SELECT address_id FROM addresses where city='" + comboAddressCity.SelectedItem.ToString() + "' and street='" + comboAddressStreet.SelectedItem.ToString() + "' and house='" + comboAddressHouse.SelectedItem.ToString() + "'", con);
                    SqlCommand cmdchs = new SqlCommand("SELECT status_id FROM status where name='" + comboStatus.SelectedItem.ToString() + "'", con);
                    int m = Convert.ToInt32(cmdchm.ExecuteScalar());
                    int a = Convert.ToInt32(cmdcha.ExecuteScalar());
                    int s = Convert.ToInt32(cmdchs.ExecuteScalar());
                    // добавление записей в таблицу
                    String query = "INSERT INTO switches (model_id,serial,status_id,address_id,ip_address) VALUES (m,'" + textSerial.Text + "',s,a,'" + ipAddressControl1.Text + "')";
                    SqlDataAdapter SDA = new SqlDataAdapter(query, con);
                    SDA.SelectCommand.ExecuteNonQuery();
                    con.Close();
                    MessageBox.Show("Запись успешно добавлена");
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.05.2017, 11:09
Ответы с готовыми решениями:

Добавление данных в одну таблицу из другой
Есть база данных с двумя аналогичными по строению таблицами. Надо с помощью запроса добавить данные из Типовые проекты строений1 в...

Не происходит добавление записей в таблицу из-за отсутствия связанных данных в другой
День добрый, у меня есть в БД 2 таблицы - Бронирование и ДанныеНаРебенка (структура/связи есть в скриншоте), есть форма для добавление...

Как сделать динамическое добавление данных из таблицы одной формы в таблицу другой формы
Здравствуйте! Подскажите, пожалуйста, как сделать динамическое добавление данных из таблицы одной формы в таблицу другой формы. У меня есть...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.05.2017, 11:09
Помогаю со студенческими работами здесь

Добавление записи в таблицу из другой таблицы
есть задание: (проблемное выделено жирным) Разработать в среде Access следующие запросы (все – с условиями): – на выборку из двух...

Добавление в таблицу на основе другой таблицы
Всем привет! Ребят, подскажите как мне правильно сделать запрос, я уже 4 день мучаюсь. Есть таблица "Продажи", в ней поля...

Выбор данных из полей со списком, занесение этих данных в список и добавление данных в таблицу
Подскажите пожалуйста, как что то подобное сделать в Access или посоветуйте хорошую литературу где это описывается.

Добавление записей в таблицу из другой таблицы по совпадающим столбцам
Доброго времени суток. Подскажите, пожалуйста, решение данной задачи: Имеется две таблицы. Таблицы имеют более 150 колонок,...

Добавление данных через форму в таблицу базы данных MS SQL
Здравствуйте! Я делаю форму для добавления записи в таблицу базы данных, созданную в MS SQL 2008. В таблице три поля...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
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 и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru