Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/64: Рейтинг темы: голосов - 64, средняя оценка - 4.53
 Аватар для AC13
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263

Перенос данных из одной DBGrid в другую

23.07.2011, 16:09. Показов 12600. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Если так переносится только одна строка DBGrid1 первой формы Form1 в DBGrid1 второй формы Form2:

Delphi
1
2
3
Form2.DBGrid1.DataSource.DataSet.Insert;
Form2.DBGrid1.DataSource.DataSet.FieldByName('Имя_поля').AsString:=Form1.DBGrid1.DataSource.DataSet.FieldByName('Имя_поля').AsString;
Form2.DBGrid1.DataSource.DataSet.Post;
Как перенести целый столбец?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.07.2011, 16:09
Ответы с готовыми решениями:

Перенос данных из одной БД в другую
Есть 2 формы на обоих формах есть DBGrid. Нужно что бы при нажатии в контекстном меню на "Добавить" данные из одной Базы данных...

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

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

22
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
23.07.2011, 16:45
"Пробежкой" по датасету.
А можно скл-запросом.
В целом проблема кажется сильно притянутой за уши ибо на кой ляд в базе две одинаковые таблицы ?
1
 Аватар для AC13
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
23.07.2011, 19:03  [ТС]
Цитата Сообщение от MsGuns Посмотреть сообщение
"Пробежкой" по датасету.
А можно скл-запросом.
В целом проблема кажется сильно притянутой за уши ибо на кой ляд в базе две одинаковые таблицы ?
С чего вы взяли, что в базе 2 одинаковые таблицы???
Мне нужно перенести несколько столбцов из одной таблицы в другую. Таблицы не одинаковые, но несколько столбцов одинаковых.
Как сделать "Пробежку" по DataSet?
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
23.07.2011, 21:34
Delphi
1
С чего вы взяли, что в базе 2 одинаковые таблицы???
Из сабжа, где было слово "строка", но не было "столбец". А вообще-то в БД нет строк и столбцов, а есть поля и записи.

Delphi
1
Мне нужно перенести несколько столбцов из одной таблицы в другую. Таблицы не одинаковые, но несколько столбцов одинаковых.
Для этого существуют запросы Insert into Table1 ... select ... from Table2

Delphi
1
Как сделать "Пробежку" по DataSet?
with table1 do
begin
first;
while not eof do
begin
List1.Add(fieldbyname('...').AsString);
...
next;
end;
end;
1
19 / 19 / 0
Регистрация: 22.07.2011
Сообщений: 68
24.07.2011, 00:45
В идеале это делается либо, как уже сказали, конструкцией INSERT ... SELECT,
либо же, если не хочется дублировать данные (а в случае больших таблиц этого лучше не делать) - выбирать их соответствующими запросами (у тебя же есть поля, по которым записи таблицы1 ассоциируется с записями таблицы2), например:
T-SQL
1
SELECT таблица1.поле1, таблица1.поле2, таблица2.поле3 FROM таблица1, таблица2 WHERE ...
1
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
24.07.2011, 05:47
Цитата Сообщение от AC13 Посмотреть сообщение
Таблицы не одинаковые, но несколько столбцов одинаковых
Внимательно посмотрите и проанализируйте БД на предмет соответствия требованиям нормализации. Наличие одинаковых столбцов в разных таблицах навевает подозрения!
1
2 / 2 / 0
Регистрация: 06.06.2011
Сообщений: 13
24.07.2011, 08:02
begin
Form2.DBGrid1.DataSource.DataSet.First;
Form2.DBGrid2.DataSource.DataSet.First;
while not Form2.DBGrid1.DataSource.DataSet.Eof do
begin
Form2.DBGrid1.DataSource.DataSet.Insert;
Form2.DBGrid1.DataSource.DataSet.FieldBy Name('Имя_поля').AsString:=
Form2.DBGrid1.DataSource.DataSet.FieldBy Name('Имя_поля').AsString;
Form2.DBGrid1.DataSource.DataSet.Post;
Form2.DBGrid1.DataSource.DataSet.Next;
Form2.DBGrid2.DataSource.DataSet.Next;
end;

НО!! Колличество записей DBGrid2 должно быть равно колиичеству записей DBGrid1 в данном случае,
т.е (Form2.DBGrid1.DataSource.DataSet.Record Count=
Form2.DBGrid2.DataSource.DataSet.RecordC ount) условие должно соблюдаться
Иначе получите ошибку.
У вас таблицы БД имеют одинаковое число записей? Если да, то это самый простой вариант.

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

Добавлено через 4 минуты
Например вот так:
begin
Form2.DBGrid1.DataSource.DataSet.First;
while not Form2.DBGrid1.DataSource.DataSet.Eof do
begin
Form1.DBGrid2.DataSource.DataSet.First;
while not Form1.DBGrid1.DataSource.DataSet.Eof do
begin
if True then /// здесь проверяем условие
begin
Form2.DBGrid1.DataSource.DataSet.Insert;
Form2.DBGrid1.DataSource.DataSet.FieldBy Name('Имя_поля').AsString:=
Form1.DBGrid2.DataSource.DataSet.FieldBy Name('Имя_поля').AsString;
Form2.DBGrid1.DataSource.DataSet.Post;
end;
Form1.DBGrid1.DataSource.DataSet.Next;
end;
Form2.DBGrid2.DataSource.DataSet.Next;
end;
1
 Аватар для AC13
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
24.07.2011, 12:06  [ТС]
Цитата Сообщение от SAMZ Посмотреть сообщение
Внимательно посмотрите и проанализируйте БД на предмет соответствия требованиям нормализации. Наличие одинаковых столбцов в разных таблицах навевает подозрения!
С таблицами всё нормально. Что странного, что есть одинаковые столбцы?О_о

Цитата Сообщение от K0nstantin Посмотреть сообщение
У вас таблицы БД имеют одинаковое число записей?
Нет, количество записей в БД будет разное.

В общем есть таблица базы данных Товары. Днные этой таблицы отображаются в DBGrid1.
DBGrid2 отображает данные Приходного кассового ордера.
Т.е. заполняем приход товаров (какое-то n-е количество записей) и при нажатии Кнопки записи добавляются к существующим записям БД Товаров.
Эти БД (Товары и Приход), почти одинаковые, но неодинаковые!!!
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
24.07.2011, 16:37
>Константин
Ладно бы, что ваш код просто постеснялся бы выложить любой мало-мальски программист-профи ибо он уродлив и выдает в Вас крутого новичка-ламера, ладно бы что код грешит кучей ошибок, но он ведь еще и банально некорректен. Т.е. просто не будет работать ибо алгоритмически неверен.

Вот уж действительно иногда лучше жевать (с)

Добавлено через 23 минуты
Delphi
1
В общем есть таблица базы данных Товары. Днные этой таблицы отображаются в DBGrid1. DBGrid2 отображает данные Приходного кассового ордера. Т.е. заполняем приход товаров (какое-то n-е количество записей) и при нажатии Кнопки записи добавляются к существующим записям БД Товаров. Эти БД (Товары и Приход), почти одинаковые, но неодинаковые!!!
О! Пошла конкретика..
Первое. Ваша БД ни к черту не годится ибо спроектирована безобразно. Чтобы спроекттровать ее правильно, нужно составить МОДЕЛЬ базы данных, в которой прописать ОБЪЕКТЫ и СВЯЗИ между ними.
Что касается торговли (у Вас ведь торговля или что-то связанное с нею), то обязательные объекты в этой предметной области:
1) Товар, имеющий характеристики: код, наименование, марка, срок годности, принадлежность к товарной группе, упаковка и т.д., цена (при средневзвешенном учете) или номер партии (при партионном учете) или и то илил другое (альернативно) если смешанный учет.
Совокупность объектов образуют "Справочник Товаров" (не путать с ассортиментом, включающим только имеющиеся в наличии товаром)
2)Складская карточка, имеющая характеристики: ссылка на товар, текущий остаток, список ссылок на приходно-расходные накладные (движение), список сальдовых остатков (помесячно), указание на способ списания (FIFO,LIFO,иное - см. правила складского и бух.учета), информация о физическом месте хранения (зона, стеллаж, полка, блок ...)
3)Приходно-расходные документы (накладные - но никак не кассовые ордера - это Вам наврали, по ПКО ни один гвоздь ни один кладовщик никому не выдаст ), состоящие из двух "уровней": заголовка накладной (номер, дата, сумма, от кого получено или кому отпущено и т.д.) и состава (фактуры), перечисляющей позиции товара с указанием кол-ва, цены, НДС и т.д.
4)Контрагенты (поставщики и покупатели) с соотв. реквизитами..
5)...

Уф! Для самого простого учета этого наверно хватит, для полноценного "жизненного" варианта - много чего еще надо добавить. Проще взять 1С торговля и просто посмотреть как там все сделано - лучше всякого учебника

Второе. Без полной переделки и всей базы и Вашей "проги" (которую дучше всего просто выбросить чтобы не мучиться - все равно ничего из написанного вней не пригодится) И эта.. ВЫБРОСИТЬ ПАРАДОКС И БДЕ !!!! И писать сразу для скл-сервера ибо НОРМАЛЬНО РАБОТАЮЩАЯ МНОГОПОЛЬЗОВАТЕЛЬСКАЯ СКЛАДСКАЯ ПРОГРАММА НА БАЗЕ ПАРАДОКС - это нынче реликт почище откопанного в снегах мамонтенка. По определению парадокс не может работать нормально (вообще-то может, конечно, но для этого надо приложить много рук и мозга, не опошленного архангельскими)!

Третье. А чего бы Вам вот взять и тупо не купить 1С ?
И не мучиться.
2
 Аватар для AC13
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
24.07.2011, 17:02  [ТС]
MsGuns, всё конечно замечательно и я сама знаю, что на 1С написать эту программу гораздо быстрее, проще и удобнее ))
Но дело в том, что это типа курсовая работа, с данной темой, которую нужно писать именно на Delphi и SQL Server. Мне не нужна какая-то сильно сложная, хорошая и очень грамотно написанная программа. К тому же эту программу сильно смотреть никто не будет...
Я пытаюсь её сделать как можно проще и наиболее быстрыми путями, поэтому оно всё вот так =))
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
24.07.2011, 17:37
Так вот, много грамотнее и ПРАВИЛЬНЕЕ было бы спроектировать модель документооборота и предметную модель БД (как производную от документооборота). Уже на основании этих моделей составить схему данных, после чего "слепить" саму БД по готовой схеме и "дурак" сможет. Т.е сама программа и не нужна вовсе. Если есть БД и ее бизнес-логика (по сути и образующих схему данных), то программирование уже дело вторичное. Вот такая дипломная работа ИМХО ценна хотя бы потому, что показывает навыки ее автора в проектировании реальных бизнес-процессов, а значит и готовность его (ее) к активной работе в этой области.
Но если у Вас иная задача - показать навыки именно в программировании пользовательского ПО для работы с базами данных по технологии КС,- тогда наверное другое дело.. Тогда пофих что там у вас, товар или аккоунт, бизнес или социология..
Хотя как на мой непросвещенный взгляд, истинный программист - это тот, кто прежде всего в состоянии разобраться в любой предметной области, разложить там все по полочкам, найти "узкие" места и предложить способ их решения. А вовсе не тот, кто умеет кидать батоны на форму..
1
 Аватар для AC13
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
25.07.2011, 10:56  [ТС]
Мне нужно нечто среднее, т.е. показать навыки и в базах данных и в программировании ПО.
Цитата Сообщение от MsGuns Посмотреть сообщение
... много грамотнее и ПРАВИЛЬНЕЕ было бы спроектировать модель документооборота и предметную модель БД (как производную от документооборота).
В общем-то я так и делала. В работе мне нужно товар закупить, оприходовать, продать. Я примерно придумала эту схему документооборота и на основе её уже делала базу данных, поэтому БД получилась немного запутанной.
Ладно...
Спасибо!

Добавлено через 16 часов 48 минут
Кстати, не смотря на всё выше написанное, тема по прежнему остаётся актуальной. Мне всё ещё надо узнать, как перенести столбец одного DBGrid в другой.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
26.07.2011, 10:17
Кстати несмотря на все выше написанное, Вы так и не удосужились внятно объяснить что подразумевается под фразой "перенести столбец из одного DBGrid в другой". При этом желательно в терминах не экселя, а либо БД (если дело в переносе информации из одной таблицы в другую), либо визуальных компонент (если вопрос в простом добавлении в грид новой колонки для отображения уже имеющегося поля датасета, который этот грид отображает)

Добавлено через 6 минут
А лучше всего описать задачу в терминах "сторожей и уборщиц", так будет лучше всего (заодно научитесь ясно для оппонента формулировать свои мысли).
0
 Аватар для AC13
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
26.07.2011, 10:36  [ТС]
Надеюсь, в таком виде будет более ясно:

В БД у меня есть 2 таблицы tabl1 и tabl2.
В tabl1 поля: a, a1, a2, a3;
В tabl2 Поля: b, a1, a2, b3.
Как запросом скопировать все записи из столбцов a1 и а2 таблицы tabl1 в a1 и a2 tabl2?
Нужно не сформировать эту вторую таблицу типа:
SQL
1
SELECT tabl1.a1, tabl1.a2 FROM tabl1
а именно скопировать, т.к. записи первой таблицы tabl1 будут постоянно очищаться. В общем она является чем-то временного хранилища.

Нужна процедура для кнопки первой формы, на которой находится DBGrid, отражающая данные tabl1. При нажатии кнопки, записи столбцов переносятся в таблицу tabl2, которая отражается на второй форме Form2.DBGrid.
Не получается составить нормальные запрос в процедуре к кнопке. У меня это выглядит так, но ...
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm1.Button1Click(Sender: TObject);
begin
with Form2.ADOQuery1 do begin
Active:=false;
SQL.Clear;
SQL.Add('SELECT tabl1.a1, tabl1.a2 FROM tabl1');
Active:=true;
end;
end;
это не верно, т.к. тут просто будет формироваться tabl2 из данных tabl1. Но т.к. tabl1 потом очистят, то и в tabl2 ничего не останется.
Да и к тому же эта процедура не работает, она выдаёт ошибку.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
26.07.2011, 11:10
Запросом:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
with TADOCommand.Create(nil) do
  try
   Connection = ADOConnection1;
   CommandText = 'insert into tabl2 (a1,a2) select a1,a2 from tabl1'
   try
     execute;
   except
     ShowMessage('Ошибка вставки');
   end;
  finally
   Free;
end;
После чего переоткрыть датасет в гриде, отображающем "накопительную" таблицу

Методами TDataSet:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var
  bm: TBookMark; 
 
begin
  form1.ADODataSet1.DisableControls;
  bm := form1.ADODataSet1.GetBookMark;
  form1.ADODataSet1.First;
  form2.ADODataSet1.DisableControls;
  while not form1.ADODataSet1.eof do
    begin
     form2.ADODataSet1.Append;
     form2.ADODataSet1.FieldByName('a1').Value := form1.ADODataSet1.FieldByName('a1').Value;
     form2.ADODataSet1.FieldByName('a2').Value := form1.ADODataSet1.FieldByName('a2').Value;
     form2.ADODataSet1.Post;
     form1.ADODataSet1.Next;
    end;
  form2.ADODataSet1.Requery;
  form1.ADODataSet1.EnableControls;
  form1.ADODataSet1.GoToBookMark(bm);
  form1.ADODataSet1.FreeBookMark(bm);
  form1.ADODataSet1.EnableControls;
  form2.ADODataSet1.EnableControls;
end;
Добавлено через 3 минуты
Как Вы догадались, я умышленно вместо Query употребил ADODataSet ибо так методологически правильнее ! Но Вы, конечно, можете оставить свой любимый "кверик" - в этом случае просто везде в коде поменяйте "DataSet" на "Query" - все будет весело бегать

Добавлено через 6 минут
И еще важно ! Не употребляйте все эти Query1, Table4, Form1 и т.д. Даже в таком микроскопическом коде, что я Вам привел, такая нотация приводит к мельтешению в глазах, значительно затрудняя чтение кода. Если сзделать некоторые замены, код просто преобразится и будет "ласкать" глаз. Попробуйте зделать такие замены:

Delphi
1
2
3
4
Form1 -> frmNewDataPack
Form2 -> frmStoredBase
ADOQuery1 на первой форме -> quNewData
ADOQuery1 на воторой форме -> quMainStorage
и посмотрите на результат.
Вы убедитесь насколько я прав
1
19 / 19 / 0
Регистрация: 22.07.2011
Сообщений: 68
26.07.2011, 11:22
если я не ошибаюсь, ты забыла вызвать метод SQL.Open

если у тебя во второй таблице есть столбец, куда надо пихать значения из первого, наверное, придется делать так:
SQL
1
UPDATE tbl2 SET tbl2.a2= (SELECT tbl1.a2 FROM tbl1 WHERE tbl1.a1=tbl2.a2)
здесь tbl2.a2 - обновляемое поле, tbl1.a2 - поле, из которого берутся значения, tbl1.a1 и tbl2.a1 - одинаковые для двух таблиц поля (с одинаковыми значениями в соответствующих записях) - нужны для связи таблицы 1 и таблицы 2.
1
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
26.07.2011, 11:56
Delphi
1
если я не ошибаюсь, ты забыла вызвать метод SQL.Open
Там есть Active := true, что эквивалентно Open, ошибка в ином, возможно в том, что формы не видят друг друга. Вообще ТС просто удивительная - об ошибках говорит минимум или не говорит вообще. Скромная девушка,- такую б замуж
0
 Аватар для AC13
7 / 7 / 0
Регистрация: 13.09.2009
Сообщений: 263
26.07.2011, 11:56  [ТС]
ооо, спасибо))

А что значит эта ошибка?

0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
26.07.2011, 12:00
Ошибка значит то, что залюбовавшись Вашим аватарчиком (хочется верить, что это непосредственно Вы в реале), я напрочь позабыл, что в дельфи в отличие от си для присвоения надоть употреблять двоеточие перед равенством
1
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
26.07.2011, 12:07
Цитата Сообщение от MsGuns Посмотреть сообщение
Ошибка значит то, что залюбовавшись Вашим аватарчиком
А я то думаю, отчего такая активность в этом топике. При ином аватарчике вы б давно уже послали дворы мести!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.07.2011, 12:07
Помогаю со студенческими работами здесь

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

Перенос данных из одной таблицы в другую
Привет всем, имеется для таблицы, одна - эксель. Подключается через ADOConnection1, вторая DBF, подключается через ADOConnection2. ...

Перенос данных из одной таблицы в другую
Как перенести строку из одной таблице в другую бд акцесс делфи, кнопкой в делфи без запуска макроса. какой еще вариант sql запрос может?как...

Firebird 2.1.Перенос данных из одной таблицы в другую.
Всем привет! Firebird 2.1. Есть две таблицы с одинаковой структурой. Нужно в рантайме перенести из одной таблицы в другую записи,...

Кнопки: перенос данных из одной таблицы в другую
Как сделать так , что бы при помощи кнопок можно было переносить данные из 1 таблицы ,во 2 таблицу и наоборот ?


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru