Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/27: Рейтинг темы: голосов - 27, средняя оценка - 4.67
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3

Как выделить строку в БД добавленную запросом?

07.09.2009, 10:45. Показов 5641. Ответов 64
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, у меня есть код
C++
1
2
3
4
5
6
7
8
9
10
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Text = "INSERT INTO Glavnaya (Invent_Number,Number_in_Lan,Department,Processor,Memory,HDD,Room)VALUES('"+Edit1->Text+"', '"+Edit2->Text+"', '"+Edit3->Text+"', '"+Edit4->Text+"', '"+Edit5->Text+"', '"+Edit6->Text+"', '"+Edit7->Text+"')";
ADOQuery1->ExecSQL();
 
 
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Text ="Select * from Glavnaya ORDER BY Invent_Number";
ADOQuery1->Open();
Как можно выделить новую строку добавленную в БД запросом
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.09.2009, 10:45
Ответы с готовыми решениями:

Как выделить новую строку в QTableView добавленную через QSqlQuery
Имеем QSqlQueryModel и припомощи QSqlQuery делается вставка в базу данных, при этом в QTableView данные обновляются, появляется новая...

Как добавленную строку в DGV сохранить в БД
Прошу помочь в проблеме. В access была создана база с таблицей. Таблица состоит из 3х столбцов - код(примари кей), имя, и фамилия. В с#...

Нужно SQL-запросом вернуть самую последнюю добавленную запись
Нужно SQL-запросом вернуть самую последнюю добавленную запись. Такой вариант нормальный? SELECT `message`, `reply` FROM `chat` WHERE `id`...

64
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
07.09.2009, 10:58
Locate по полю с уникальным значением
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
07.09.2009, 11:02  [ТС]
А как эту функцию настроить на новое значение?
И ещё как можно сделать так чтобы в базу Access можно было вставить пустые строки, а то я оставляю пустые, а оно мне выдаёт ошибку что поле не придусмотрено для ввода пустых строк.
Хотя в самой базе стоит, что поле не обязательно.
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
07.09.2009, 11:05
Какая СУБД, какая структура данных таблицы (первичный ключ есть ли, и как формируется)?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
07.09.2009, 11:14  [ТС]
БД Access, 10 полей, первое поле с названием инвентарный номер - целочесленное на ней стоит первичный ключ, остальные 9 полей текстовые.
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
07.09.2009, 11:22
примерно так:
C++
1
2
3
4
5
6
7
8
ADOQuery1->Close(); 
ADOQuery1->SQL->Clear(); 
ADOQuery1->SQL->Text ="Select * from Glavnaya ORDER BY Invent_Number"; 
ADOQuery1->Open(); 
TLocateOptions Opts; 
Opts.Clear(); 
Opts << loPartialKey;
ADOQuery1->Locate("Invent_Number", Edit1->Text, Opts);

1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
07.09.2009, 11:31  [ТС]
Слушай у меня ещё один вопрос пробую сделать редактирование строки через Update, но оно пишет мне о несоответствии типов условия отбора может, что-то в коде не так, потомучто уже долго мучаюсь.

C++
1
2
3
4
5
6
7
8
9
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Text = "UPDATE Glavnaya SET Invent_Number = :OLD_Invent_Number, Number_in_Lan = :OLD_Number_in_Lan, Department = :OLD_Department, Processor = :OLD_Processor, Memory = :OLD_Memory, HDD = :OLD_HDD, Room = :OLD_Room WHERE Invent_Number = '"+Edit1->Text+"' AND Number_in_Lan = '"+Edit2->Text+"' AND Department = '"+Edit3->Text+"' AND Processor = '"+Edit4->Text+"' AND Memory = '"+Edit5->Text+"' AND HDD = '"+Edit6->Text+"' AND Room = '"+Edit7->Text+"'";
ADOQuery1->ExecSQL();
 
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Text ="Select * from Glavnaya ORDER BY Invent_Number";
ADOQuery1->Open();
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
07.09.2009, 11:42
Цитата Сообщение от Sasha Посмотреть сообщение
Invent_Number = :OLD_Invent_Number
двоеточие означает, что запрос будет ждать установки параметра, т.е надо перед выполнением запроса установить значения параметров:
C++
1
ADOQuery1->Parameters->ParamByName("OLD_Invent_Number")->Value = ... //чего то
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
07.09.2009, 11:55  [ТС]
Это что мне нужно заранее приравнивать Едиты?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
07.09.2009, 15:31  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
ADOQuery1->Parameters->ParamByName("OLD_Invent_Number")->Value = Edit1->Text;
ADOQuery1->Parameters->ParamByName("OLD_Number_in_Lan")->Value = Edit2->Text;
ADOQuery1->Parameters->ParamByName("OLD_Department")->Value = Edit3->Text;
ADOQuery1->Parameters->ParamByName("OLD_Processor")->Value = Edit4->Text;
ADOQuery1->Parameters->ParamByName("OLD_Memory")->Value = Edit5->Text;
ADOQuery1->Parameters->ParamByName("OLD_HDD")->Value = Edit6->Text;
ADOQuery1->Parameters->ParamByName("OLD_Room")->Value = Edit7->Text;
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Text = "UPDATE Glavnaya SET Invent_Number = :OLD_Invent_Number, Number_in_Lan = :OLD_Number_in_Lan, Department = :OLD_Department, Processor = :OLD_Processor, Memory = :OLD_Memory, HDD = :OLD_HDD, Room = :OLD_Room WHERE Invent_Number = '"+Edit1->Text+"' AND Number_in_Lan = '"+Edit2->Text+"' AND Department = '"+Edit3->Text+"' AND Processor = '"+Edit4->Text+"' AND Memory = '"+Edit5->Text+"' AND HDD = '"+Edit6->Text+"' AND Room = '"+Edit7->Text+"'";
ADOQuery1->ExecSQL();
Ошибка "ADOQuery1:Parameter 'OLD_Invent_Number'not found"
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
07.09.2009, 15:42
TADOQuery::Prepeared = true
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
07.09.2009, 17:00  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Text = "UPDATE Glavnaya SET Invent_Number = :OLD_Invent_Number, Number_in_Lan = :OLD_Number_in_Lan, Department = :OLD_Department, Processor = :OLD_Processor, Memory = :OLD_Memory, HDD = :OLD_HDD, Room = :OLD_Room WHERE Invent_Number = '"+Edit1->Text+"' AND Number_in_Lan = '"+Edit2->Text+"' AND Department = '"+Edit3->Text+"' AND Processor = '"+Edit4->Text+"' AND Memory = '"+Edit5->Text+"' AND HDD = '"+Edit6->Text+"' AND Room = '"+Edit7->Text+"'";
ADOQuery1->Prepared = false;
ADOQuery1->Parameters->ParamByName("OLD_Invent_Number")->Value = Edit1->Text;
ADOQuery1->Parameters->ParamByName("OLD_Number_in_Lan")->Value = Edit2->Text;
ADOQuery1->Parameters->ParamByName("OLD_Department")->Value = Edit3->Text;
ADOQuery1->Parameters->ParamByName("OLD_Processor")->Value = Edit4->Text;
ADOQuery1->Parameters->ParamByName("OLD_Memory")->Value = Edit5->Text;
ADOQuery1->Parameters->ParamByName("OLD_HDD")->Value = Edit6->Text;
ADOQuery1->Parameters->ParamByName("OLD_Room")->Value = Edit7->Text;
ADOQuery1->Prepared = true;
ADOQuery1->ExecSQL();
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Text ="Select * from Glavnaya ORDER BY Invent_Number";
ADOQuery1->Open();
Ни чё не изменилось так ошибка и осталась
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
07.09.2009, 17:17
ну сначала надо текст запроса дать, потов вызвать парсинг этого текста, а потом уже и параметрам значения присваивать
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
07.09.2009, 17:25  [ТС]
C++
1
ADOQuery1->SQL->Text = "UPDATE Glavnaya SET Invent_Number = :OLD_Invent_Number, Number_in_Lan = :OLD_Number_in_Lan, Department = :OLD_Department, Processor = :OLD_Processor, Memory = :OLD_Memory, HDD = :OLD_HDD, Room = :OLD_Room WHERE Invent_Number = '"+Edit1->Text+"' AND Number_in_Lan = '"+Edit2->Text+"' AND Department = '"+Edit3->Text+"' AND Processor = '"+Edit4->Text+"' AND Memory = '"+Edit5->Text+"' AND HDD = '"+Edit6->Text+"' AND Room = '"+Edit7->Text+"'";
А это что не текст запроса
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
08.09.2009, 14:10  [ТС]
После долгих нервомучений обнаружились значительные сдвиги по коду

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("UPDATE Glavnaya SET Number_in_Lan = :Number_in_Lan, Department = :Department, Processor = :Processor, Memory = :Memory, HDD = :HDD, Room = :Room");
ADOQuery1->SQL->Add("WHERE Invent_Number = :Invent_Number");
ADOQuery1->Parameters->ParamByName("Number_in_Lan")->Value = Trim(Edit2->Text);
ADOQuery1->Parameters->ParamByName("Department")->Value = Trim(Edit3->Text);
ADOQuery1->Parameters->ParamByName("Processor")->Value = Trim(Edit4->Text);
ADOQuery1->Parameters->ParamByName("Memory")->Value = Trim(Edit5->Text);
ADOQuery1->Parameters->ParamByName("HDD")->Value = Trim(Edit6->Text);
ADOQuery1->Parameters->ParamByName("Room")->Value = Trim(Edit7->Text);
ADOQuery1->Parameters->ParamByName("Invent_Number")->Value = Trim(Edit1->Text);
ADOQuery1->ExecSQL();
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Text ="Select * from Glavnaya ORDER BY Invent_Number";
ADOQuery1->Open();
Все поля редактируются, кроме как поле Invent_Number изменения не вступают в силу можно как-то это реализовать?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
08.09.2009, 14:20
Цитата Сообщение от Sasha Посмотреть сообщение



Все поля редактируются, кроме как поле Invent_Number изменения не вступают в силу можно как-то это реализовать?
это ты сейчас о чем?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
08.09.2009, 14:32  [ТС]
Это в продолжении вчерашней темы
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
08.09.2009, 14:32
а где он в разделе SET запроса? только в условии значится...
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
08.09.2009, 14:42  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("UPDATE Glavnaya SET Invent_Number = :Invent_Number, Number_in_Lan = :Number_in_Lan, Department = :Department, Processor = :Processor, Memory = :Memory, HDD = :HDD, Room = :Room");
ADOQuery1->SQL->Add("WHERE Invent_Number = :Invent_Number");
ADOQuery1->Parameters->ParamByName("Number_in_Lan")->Value = Trim(Edit2->Text);
ADOQuery1->Parameters->ParamByName("Department")->Value = Trim(Edit3->Text);
ADOQuery1->Parameters->ParamByName("Processor")->Value = Trim(Edit4->Text);
ADOQuery1->Parameters->ParamByName("Memory")->Value = Trim(Edit5->Text);
ADOQuery1->Parameters->ParamByName("HDD")->Value = Trim(Edit6->Text);
ADOQuery1->Parameters->ParamByName("Room")->Value = Trim(Edit7->Text);
ADOQuery1->Parameters->ParamByName("Invent_Number")->Value = Trim(Edit1->Text);
ADOQuery1->ExecSQL();
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Text ="Select * from Glavnaya ORDER BY Invent_Number";
ADOQuery1->Open();
Так вообще ни одно поле не редактирует, такое впечатление, что из полей в эдиты идёт обновление
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
08.09.2009, 15:36
Sasha, а Invent_Number ты тоже меняешь?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.09.2009, 15:36
Помогаю со студенческими работами здесь

Как сделать видимой последнюю добавленную строку в datagrid
Уважаемые Гуру! После добавления строки в viewModel последняя добавленная строка не видима в DataGrid. Как сделать ее видимой? ...

Не сохраняет добавленную строку
Не сохраняет добавление строки. dataset содержит таблицы с четырех адаптеров. После выполнения показывает что счетчик...

Окрасить только что добавленную строку в Datagridview
Добрый день! Добавляю в цикле ряды в Datagridview: foreach (string source in DicListbox.Keys) {...

Отобразить в ListView только что добавленную строку из БД
Здравствуйте! У меня есть на первой форме ListView, который отображает таблицу базы данных. С этой первой формы вызываю вторую форму, с...

Как можно одним запросом редактировать предыдущую строку и добавить новый?
Как можно одним запросом редактировать предыдущую строку и добавить новый? Если можно на примитивных примерах помагите.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru