30134

БАЗЫ ДАННЫХ

Лабораторная работа

Информатика, кибернетика и программирование

В начале работы следуют выбрать интересующего работника. После этого будут выведены данные о заданиях выбранного работника в соответствующую таблицу. При выборе конкретного задания выводятся данные о работниках.

Русский

2013-08-23

34.53 KB

1 чел.

НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ

Московский энергетический институт

Лабораторная работа №5

По дисциплине

 «Технология проектирования информационных систем»

Тема: «БАЗЫ ДАННЫХ»

Выполнил:  Сабитов Т.Ш.

Вариант:   10

Группа:      А-09-08

2013

База данных содержит 3 таблицы.

Первая таблица хранит информацию о работниках(номер, имя и номер отдела работника).

Вторая таблица хранит информацию о задачах(номер задачи, название, номер ответственного работника)

Третья таблица содержит информацию об отделах фирмы(название отдела, номер начальника отдела, номер отдела)

  1.  Создание базы данных

CREATE DATABSE 'LabaDB' CHARACTER SET utf8

  1.  Создание таблиц в новой базе

CREATE  TABLE `labadb`.`Workers` (

 `idWorker` INT NOT NULL ,

 `WorkerName` VARCHAR(45) NULL ,

 `idDepartment` INT NOT NULL ,

 PRIMARY KEY (`idWorker`) );

CREATE  TABLE `labadb`.`Tasks` (

 `idTask` INT NOT NULL ,

 `TaskName` VARCHAR(45) NULL ,

 `idWorker` INT NULL ,

 PRIMARY KEY (`idTask`) );

CREATE  TABLE `labadb`.`Departments` (

 `idDepartment` INT NOT NULL ,

 `DepartmentName` VARCHAR(45) NULL ,

 `idDepartmentHead` INT NOT NULL ,

 PRIMARY KEY (`idDepartment`) );

  1.  Связывание таблиц

alter table Workers

ADD FOREIGN KEY(idWorker)

REFERENCES Tasks(idWorker)

ON UPDATE CASCADE

ON DELETE CASCADE;

alter table Departments

ADD FOREIGN KEY(idDepartment)

REFERENCES Workers(idDepartment)

ON UPDATE CASCADE

ON DELETE CASCADE;

alter table Departments

ADD FOREIGN KEY(idDepartmentHead)

REFERENCES Workers(idDepartment)

ON UPDATE CASCADE

ON DELETE CASCADE;

  1.  Заполнение таблиц данными

insert into Workers values (0,"Ivanov",0);

insert into Workers values (1,"Petrov",0);

insert into Workers values (2,"Sidorov",0);

insert into Workers values (3,"Ivanov2",1);

insert into Workers values (4,"Petrov2",1);

insert into Workers values (5,"Sidorov2",1);

insert into Workers values (6,"Ivanov3",2);

insert into Workers values (7,"Petrov3",2);

insert into Workers values (8,"Sidorov3",2);

insert into Tasks values (0, "task1", 0);

insert into Tasks values (1, "task2", 2);

insert into Tasks values (2, "task3", 4);

insert into Tasks values (3, "task4", 6);

insert into Tasks values (4, "task5", 8);

insert into Tasks values (5, "task6", 1);

insert into Tasks values (6, "task7", 3);

insert into Tasks values (7, "task8", 5);

insert into Tasks values (8, "task9", 7);

insert into Tasks values (9, "task10", 0);

insert into Tasks values (10, "task11", 2);

insert into Tasks values (11, "task12", 4);

insert into Departments values (0, "Web software", 1);

insert into Departments values (1, "Economy", 3);

insert into Departments values (2, "System software", 5);

  1.  Процедуры и функции

create procedure update

 @id int

 @name vchar

as

  UPDATE Taskss SET TaskName=@name Where TaskId = @id

Go

create procedure delete_from_Tasks

 @name vchar

As

  Declare @TaskId int

  @TaskId = SELECT idTask FROM Taskss WHERE TaskName = @name LIMIT 1

  DELETE FROM Taskss WHERE idTask = @TaskId

Go

create function WorkerCount()

returns integer

as

begin  

 return  (SELECT count(distinct WorkerName) FROM Workers)

end

go

  1.  Описание программы

Программа предоставляет пользователю удобный интерфейс для просмотра и редактирования базы сотрудников и их заданий.

Как указано выше база содержит в себе данные о работниках, их заданиях и отделах фирмы.

В начале работы следуют выбрать интересующего работника. После этого будут выведены данные о заданиях выбранного работника в соответствующую таблицу. При выборе конкретного задания выводятся данные о работниках.

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

Также программа позволяет просмотреть статистические данные.

  1.  Код программы

Далее приведен листинг основного модуля программы.

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 MySql.Data.MySqlClient;

using System.Xml;

namespace TPISClient

{

   public partial class Form1 : Form

   {

       bool EmptySelect = false;

       string Connect = "server=a-09-08.ru;user=encore;database=labadb;port=3306;password=asdfgh;";

       string temp, TCell0,TCell1;

       int OrderID;

       public Form1()

       {

           InitializeComponent();

      /*     string CommandText1 = "SELECT CoustumerName FROM coustumer";

           MySqlConnection myConnection = new MySqlConnection(Connect);

           MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

           MySqlDataReader MyDataReader;

           myConnection.Open();

           MyDataReader = myCommand1.ExecuteReader();

           while (MyDataReader.Read())

           {

               comboBox1.Items.Add(MyDataReader.GetString(0));

           }

           MyDataReader.Close();

           myConnection.Close();

           if (comboBox1.Items.Count != 0)

               comboBox1.SelectedIndex = 0;

           else

               comboBox1.SelectedItem = null;*/

       }

       private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)

       {

           if (comboBox1.SelectedItem != null)

           {

               int ID;

               string CommandText1 = "SELECT idWOrker FROM Workers WHERE WorkerName = '" + comboBox1.SelectedItem.ToString() + "'";

               MySqlConnection myConnection = new MySqlConnection(Connect);

               MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

               MySqlDataReader MyDataReader;

               myConnection.Open();

               ID = Convert.ToInt32(myCommand1.ExecuteScalar().ToString());

               CommandText1 = "SELECT TaskName FROM Tasks WHERE idTask = " + ID;

               myCommand1 = new MySqlCommand(CommandText1, myConnection);

               MyDataReader = myCommand1.ExecuteReader();

               int i = 0;

               dataGridView1.Rows.Clear();

               while (MyDataReader.Read())

               {

                   dataGridView1.Rows.Add();

                   dataGridView1.Rows[i].Cells[0].Value = MyDataReader.GetString(0);

                   i++;

               }

               MyDataReader.Close();

               myConnection.Close();

           }      

       }

       private void toolStripMenuItem1_Click(object sender, EventArgs e)

       {

           DialogResult dr = new DialogResult ();

           Form2 Dialog = new Form2();

           dr = Dialog.ShowDialog();

           if (dr == DialogResult.OK)

           {

               if (dataGridView1.CurrentCell.ColumnIndex == 0)

               {

                   if (dataGridView1.SelectedCells[0].Value != null)

                   {

                       string CommandText1 = "DELETE FROM Tasks WHERE TaskName = '" + dataGridView1.SelectedCells[0].Value + "'";

                       MySqlConnection myConnection = new MySqlConnection(Connect);

                       MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

                       myConnection.Open();

                       myCommand1.ExecuteReader();

                       myConnection.Close();

                   }

               }

           }

           else

           {

           }

       }

       private void удалитьToolStripMenuItem_Click(object sender, EventArgs e)

       {

           DialogResult dr = new DialogResult();

           Form2 Dialog = new Form2();

           dr = Dialog.ShowDialog();

           if (dr == DialogResult.OK)

           {

               if (dataGridView2.CurrentCell.ColumnIndex == 0)

               {

                   if (dataGridView2.SelectedCells[0].Value != null)

                   {

                       string CommandText1 = "DELETE FROM worker WHERE Name = '" + dataGridView2.SelectedCells[0].Value + "' AND LastName = '" 

                       + dataGridView2.Rows[dataGridView2.CurrentCell.RowIndex].Cells[dataGridView2.CurrentCell.ColumnIndex + 1].Value + "' AND idDepartment = "

                       + OrderID;

                       MySqlConnection myConnection = new MySqlConnection(Connect);

                       MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

                       myConnection.Open();

                       myCommand1.ExecuteReader();

                       myConnection.Close();

                   }

               }

               if (dataGridView2.CurrentCell.ColumnIndex == 1)

               {

                   if (dataGridView2.SelectedCells[0].Value != null)

                   {

                       string CommandText1 = "DELETE FROM worker WHERE LastName = '" + dataGridView2.SelectedCells[0].Value + "' AND Name = '"

                       + dataGridView2.Rows[dataGridView2.CurrentCell.RowIndex].Cells[dataGridView2.CurrentCell.ColumnIndex - 1].Value + "' AND idDepartment = "

                       + OrderID;

                       MySqlConnection myConnection = new MySqlConnection(Connect);

                       MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

                       myConnection.Open();

                       myCommand1.ExecuteReader();

                       myConnection.Close();

                   }

               }

           }

           else

           {

           }

       }

       private void dataGridView1_CellDoubleClick_1(object sender, DataGridViewCellEventArgs e)

       {

           

       }

       private void dataGridView1_CellBeginEdit_1(object sender, DataGridViewCellCancelEventArgs e)

       {

           if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null)

           {

               temp = dataGridView1.CurrentCell.Value.ToString();

           }

           else

           {

               EmptySelect = true;

           }

       }

       private void dataGridView1_CellEndEdit_1(object sender, DataGridViewCellEventArgs e)

       {

           if ((e.RowIndex <= dataGridView1.RowCount - 2) && (!EmptySelect))

           {

               if (dataGridView1.CurrentCell.Value.ToString() != temp)

               {

                   DialogResult dr = new DialogResult();

                   Form3 Dialog = new Form3();

                   dr = Dialog.ShowDialog();

                   if (dr == DialogResult.OK)

                   {

                       string CommandText1 = "UPDATE Tasks SET TaskName = '" + dataGridView1.CurrentCell.Value.ToString() + "' WHERE TaskName = '" + temp + "'";

                       MySqlConnection myConnection = new MySqlConnection(Connect);

                       MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

                       myConnection.Open();

                       myCommand1.ExecuteReader();

                       myConnection.Close();

                   }

                   else

                   {

                       dataGridView1.CurrentCell.Value = temp;

                   }

               }

           }

           else

           {

               if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null)

               {

                   DialogResult dr = new DialogResult();

                   Form6 Dialog = new Form6();

                   dr = Dialog.ShowDialog();

                   if (dr == DialogResult.OK)

                   {

                       string CommandText1 = "SELECT idWorker FROM Workers WHERE WorkerrName = '" + comboBox1.SelectedItem.ToString() + "'";

                       MySqlConnection myConnection = new MySqlConnection(Connect);

                       MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

                       myConnection.Open();

                       int IDC = -1;

                       IDC = (Int32)myCommand1.ExecuteScalar();

                       string CommandText2 = "INSERT INTO `Workers` (`WorkerName`, `idWorker`) VALUES ('" 

                           + dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value + "'," + IDC + ");";

                       myCommand1 = new MySqlCommand(CommandText2, myConnection);

                       myCommand1.ExecuteScalar();

                       myConnection.Close();

                   }

               }

               EmptySelect = false;

           }

       }

       private void button1_Click(object sender, EventArgs e)

       {

           Form4 AddForm = new Form4();

           AddForm.Parent = this.Parent;

           AddForm.Show();

       }

       private void button3_Click(object sender, EventArgs e)

       {

           comboBox1.Items.Clear();

           string CommandText1 = "SELECT WorkerrName FROM Workers";

           MySqlConnection myConnection = new MySqlConnection(Connect);

           MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

           MySqlDataReader MyDataReader;

           myConnection.Open();

           MyDataReader = myCommand1.ExecuteReader();

           while (MyDataReader.Read())

           {

               comboBox1.Items.Add(MyDataReader.GetString(0));

           }

           MyDataReader.Close();

           myConnection.Close();

       }

       private void button2_Click(object sender, EventArgs e)

       {

           string CommandText1 = "DELETE FROM `Worker` WHERE `WorkerName`='" + comboBox1.SelectedItem.ToString() +"';";

           MySqlConnection myConnection = new MySqlConnection(Connect);

           MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

           myConnection.Open();

           myCommand1.ExecuteScalar();

           CommandText1 = "SELECTWorkerName FROM worker";

           myCommand1 = new MySqlCommand(CommandText1, myConnection);

           comboBox1.Items.Clear();

           MySqlDataReader MyDataReader;

           MyDataReader = myCommand1.ExecuteReader();

           while (MyDataReader.Read())

           {

               comboBox1.Items.Add(MyDataReader.GetString(0));

           }

           MyDataReader.Close();

           myConnection.Close();

           comboBox1.SelectedIndex = 0;

       }

       private void dataGridView2_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)

       {

           if (dataGridView2.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null)

           {

               temp = dataGridView2.CurrentCell.Value.ToString();

               TCell0 = dataGridView2.Rows[e.RowIndex].Cells[0].Value.ToString();

               TCell1 = dataGridView2.Rows[e.RowIndex].Cells[1].Value.ToString();

           }

           else

           {

               EmptySelect = true;

           }

       }

       private void dataGridView2_CellEndEdit(object sender, DataGridViewCellEventArgs e)

       {

           if ((e.RowIndex <= dataGridView2.RowCount - 2) && (!EmptySelect))

           {

               if (dataGridView2.CurrentCell.Value.ToString() != temp)

               {

                   DialogResult dr = new DialogResult();

                   Form3 Dialog = new Form3();

                   dr = Dialog.ShowDialog();

                   if (dr == DialogResult.OK)

                   {

                       if (e.ColumnIndex == 0)

                       {

                           string CommandText1 = "UPDATE worker SET Name = '" + dataGridView2.CurrentCell.Value.ToString() + "' WHERE Name = '" + temp + "'";

                           MySqlConnection myConnection = new MySqlConnection(Connect);

                           MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

                           myConnection.Open();

                           myCommand1.ExecuteScalar();

                           myConnection.Close();

                       }

                       else

                       {

                           string CommandText1 = "UPDATE worker SET LastName = '" + dataGridView2.CurrentCell.Value.ToString() + "' WHERE LastName = '" + temp + "'";

                           MySqlConnection myConnection = new MySqlConnection(Connect);

                           MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

                           myConnection.Open();

                           myCommand1.ExecuteScalar();

                           myConnection.Close();

                       }

                   }

                   else

                   {

                       dataGridView2.CurrentCell.Value = temp;

                   }

               }

           }

           else

           {

             if (dataGridView2.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null)

               {

                   DialogResult dr = new DialogResult();

                   Form6 Dialog = new Form6();

                   dr = Dialog.ShowDialog();

                   if (dr == DialogResult.OK)

                   {

                       if (e.ColumnIndex == 0)

                       {

                           Form7 Quest = new Form7();

                           Quest.ShowDialog();

                           string CommandText1 = "INSERT INTO `worker` (`Name`, `LastName`, `idDepartment`) VALUES ('" + dataGridView2.CurrentCell.Value.ToString() + "','" +

                                                           SC.text + "'," + OrderID + ");";

                           MySqlConnection myConnection = new MySqlConnection(Connect);

                           MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

                           myConnection.Open();

                           myCommand1.ExecuteScalar();

                           myConnection.Close();

                       }

                       else

                       {

                           Form7 Quest = new Form7();

                           Quest.ShowDialog();

                           string CommandText1 = "INSERT INTO `worker` (`Name`, `LastName`, `idDepartment`) VALUES ('" + SC.text + "','" +

                                                           dataGridView2.CurrentCell.Value.ToString() + "'," + OrderID + ");";

                           MySqlConnection myConnection = new MySqlConnection(Connect);

                           MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

                           myConnection.Open();

                           myCommand1.ExecuteScalar();

                           myConnection.Close();

                       }

                   }

               }

               EmptySelect = false;

           }

       }

       public void search(DataGridView e, string table, string [] cll, TextBox t)

       {

           string CommandText1 = "SELECT * FROM " + table + " WHERE " + cll[0] + " = '" + t.Text +"'";

           for (int i = 1; i < cll.Length; i++)

           {

               CommandText1 += " OR " + cll[i] + " = '" + t.Text +"'";

           }

           CommandText1 += ";";

           MySqlConnection myConnection = new MySqlConnection(Connect);

           MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

           myConnection.Open();

           MySqlDataReader MyDataReader;

           MyDataReader = myCommand1.ExecuteReader();

           int cnt = 0;

           string text2 = "Совпадения найдены :\r\n";

           if (MyDataReader.HasRows)

           {

               while (MyDataReader.Read())

               {

                   int i = 0;

                   while (i < MyDataReader.FieldCount)

                   {

                       text2 += MyDataReader.GetString(i) + "    "; i++;

                   }

                   cnt++;

                   text2 += "\r\n";

               }

               MessageBox.Show(text2);

           }

           else

           {

               MessageBox.Show("Совпадений не найдено");

           }

       }

       private void button4_Click(object sender, EventArgs e)

       {

           string []cll = {"idDepartment", "DepartmentName", "idWorker"};

           search(dataGridView1, "Departments", cll, textBox1);

       }

       private void button5_Click(object sender, EventArgs e)

       {

           string[] cll = { "idWorker", "Name", "LastName", "idTask" };

           search(dataGridView2, "worker", cll, textBox2);

       }

       private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

       {

           if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null)

           {

               string CommandText1 = "SELECT idDepartment FROM Departments WHERE DepartmentName = '" + dataGridView1.SelectedCells[0].Value + "'";

               MySqlConnection myConnection = new MySqlConnection(Connect);

               MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

               MySqlDataReader MyDataReader;

               myConnection.Open();

               OrderID = Convert.ToInt32(myCommand1.ExecuteScalar().ToString());

               CommandText1 = "SELECT Name, lastname FROM workers WHERE idDepartment = " + OrderID;

               myCommand1 = new MySqlCommand(CommandText1, myConnection);

               MyDataReader = myCommand1.ExecuteReader();

               int i = 0;

               dataGridView2.Rows.Clear();

               while (MyDataReader.Read())

               {

                   dataGridView2.Rows.Add();

                   dataGridView2.Rows[i].Cells[0].Value = MyDataReader.GetString(0);

                   dataGridView2.Rows[i].Cells[1].Value = MyDataReader.GetString(1);

                   i++;

               }

               MyDataReader.Close();

               myConnection.Close();

           }

       }

       private void button6_Click(object sender, EventArgs e)

       {

           Form8 AnaliticForm = new Form8();

           AnaliticForm.Show();

       }

       private void button7_Click(object sender, EventArgs e)

       {

           Form9 f9 = new Form9();

           SC.form = f9;

           f9.Show();       

       }

   }

   public class SerchData

   {

       public SerchData(){}

       public int data1 { get; set; }

       public string data2 { get; set; }

       public string data3 { get; set; }

   }

   public static class SC

   {

      public static string text = "";

      public static Form9 form;

   }

}


 

А также другие работы, которые могут Вас заинтересовать

30579. Лосев А. о творчестве 34.5 KB
  Лосев А. Лосев 23. Лосева учителя математики страстного любителя музыки скрипачавиртуоза и Н. Лосевой дочери настоятеля храма Михаила Архангела протоиерея о.
30580. Неосферные трансформации СМИ 34 KB
  Война и мир цивилизаций Лукьянов: все культуры имеют единый генетический код; есть единый культурный архетип. Война: агрессор стремится разрушить перепрограммировать массовое сознание. 3я мировая информация психологическая война. С 3 мая 1946 речь Черчилля в Фултоне Стадии: холодная война до1988 информационнопсихологическая война с 1988 Медиа как военные средства.
30581. Творчество Юрия Роста 27.61 KB
  Творчество Юрия Роста.Юрий Михайлович РОСТ родился в 1939 году в городе Киеве.Юрий Рост очень интересный человек. Работал в Комсомолке Литературке на RENTV Конюшня Роста в Общей газете.
30582. Информационные потоки и их особенности 30.69 KB
  В его рамках объединены и производство и распространение МИП причем во всей сложности того и другого. В отличие от всех этих видов творчества ориентированных на создание определенного типа произведений жка оказывается еще и деятельностью направленной на производство МИП.Что представляет собой структура распространения МИП В ней четко определяются три взаимосвязанных обусловливающих друг друга элемента:1 тиражирование информационных продуктов;2 хранение их;3 доставка получателю.А если в качестве основания для рассмотрения взять...
30583. История журналистской профессии 20.29 KB
  Но журналистика могла развернуться лишь с появлением печатных периодических изданий возникших в Европе в XVI веке в России в XVII веке.Массовой журналистика стала после отмены крепостного права.Дореволюционная журналистика знала замечательных репортеров профессионалов мастеров своего дела умеющих быть мобильными находчивыми остроумными и подчас смелыми людьми писал Б.После 1917 года журналистика изменилась другими стали требования к журналисту.
30584. Журнализм в мире профессии (по Бахтину) 16.02 KB
  Он утверждал что слово является непосредственным фактом жизнедеятельности то есть слово поступок. По сути это переход от формулы слово и дело к формуле и слово есть дело . Для журналиста это принципиально важно ведь для нас господа слово действительно дело.Бахтин изучал даже не столько само слово сколько границы звучащего слова.
30585. Теория и методика журналистского творчества 19.86 KB
  Долгое время считалось что мозг производит мысли участвует в творческой деятельности так же как слюнная железа выделяет слюну. А вот каким образом мозг производит мысли Как объяснить когда в головах сразу у нескольких людей живущих в разных концах света рождается одно и то же научное открытиеИзобретатель Александр Белл опередил своих конкурентов с заявкой на телефон всего на несколько часов.А может действительно нашей мыслительной творческой деятельностью ктото управляетЯ могу экспериментально подтвердить что работа сознания не...
30586. Методы и методика журналистского творчества 35 KB
  Интервью от англ. По содержанию интервью делятся на так называемые документальные интервью изучение событий прошлого уточнение фактов и интервью мнений цель которых выявление оценок взглядов суждений и т.Есть формализованное интервью стандартизированное и структуризованное общение: интервью имеет четкую структуру; каждый вопрос логически вытекает из другого а все вместе они подчинены общему замыслу беседы; открытые закрытые и полузакрытые вопросы. Неформализованном интервью ориентировано на глубинное познание объекта и...
30587. Налоговое регулирование внешнеэкономической деятельности предприятия 126.5 KB
  Целями налогового регулирования импорта и экспорта являются: поддержание рационального соотношения вывоза и ввоза товаров, валютных доходов и расходов на территории РФ. Налоговое регулирование импорта направлено, в основном...