Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi и базы данных
Войти
Регистрация
Восстановить пароль
 
Мусаси
7 / 7 / 2
Регистрация: 07.05.2013
Сообщений: 193
#1

Delphi XE4 SQL запрос. Добавление записи в последнюю позицию DBGrid - Delphi БД

03.05.2014, 20:02. Просмотров 744. Ответов 6
Метки нет (Все метки)

Еще раз всем привет! Возникла вот такая загогулина. Есть поле Edit, в котором есть данные. Эти данные надо перенести в таблицу. Но не просто перенести, а в незаполненную колонку последней записи. Вот код:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm8.Button4Click(Sender: TObject);
var LastNomer : integer;
begin
DBGrid2.DataSource.DataSet.Last;//Выделяем последнюю строку
//LastNomer:= DBGrid2.DataSource.DataSet.Last;
//Подтвердить сумму заказа
DataModule1.ADOQ7_CYMMA_Zakaza.Close;
DataModule1.ADOQ7_CYMMA_Zakaza.SQL.Clear;
DataModule1.ADOQ7_CYMMA_Zakaza.SQL.Add('insert into Заказы (Сумма_заказа) values (:Сумма_заказа) where (Код_заказа)='+DBGrid2.DataSource.DataSet.Last);
 
DataModule1.ADOQ7_CYMMA_Zakaza.Parameters.ParamByName('Сумма_заказа').Value:=Edit3.Text;
 
DataModule1.ADOQ7_CYMMA_Zakaza.ExecSQL;
 
ShowMessage('Сумма заказа внесена, данные сохранены');
//обновить список с заказами
DataModule1.ADOT11_Zakazi.Active:=false;
DataModule1.ADOT11_Zakazi.Active:=true;
end;
Я получается так подумал и решил создать переменную Last, которая будет содержать Номер записи (Код_записи), чтобы, опираясь на данные этой переменной, задействовать в запросе. Но как мне это сделать...? И стоит ли мне добавлять эту переменную?

Добавлено через 3 часа 46 минут
Вот что у меня получилось

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm8.Button4Click(Sender: TObject);
var LastNomer : string;
begin
DBGrid2.DataSource.DataSet.Last;//Выделяем последнюю строку
LastNomer:='insert into Заказы (Сумма_заказа) values (:Сумма_заказа) where Код_заказа='+DBGrid2.Fields[0].AsString;//Номер первой колонки последнего значения в 1ой таблицк
//Подтвердить сумму заказа
DataModule1.ADOQ7_CYMMA_Zakaza.Close;
DataModule1.ADOQ7_CYMMA_Zakaza.SQL.Clear;
DataModule1.ADOQ7_CYMMA_Zakaza.SQL.Add((LastNomer));
 
DataModule1.ADOQ7_CYMMA_Zakaza.Open;
DataModule1.ADOQ7_CYMMA_Zakaza.Parameters.ParamByName('Сумма_заказа').Value:=StrToInt(Edit3.Text);
 
//DataModule1.ADOQ7_CYMMA_Zakaza.ExecSQL;
 
ShowMessage('Сумма заказа внесена, данные сохранены');
//обновить список с заказами
DataModule1.ADOT11_Zakazi.Active:=false;
DataModule1.ADOT11_Zakazi.Active:=true;
end;
Но вот какую ошибку выдает - Неправильно определен объект Parameter. Предоставлены несогласованные или неполные сведения

Добавлено через 1 минуту
Что делать?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2014, 20:02
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Delphi XE4 SQL запрос. Добавление записи в последнюю позицию DBGrid (Delphi БД):

Delphi XE4 SQL запрос на подсчет суммы
Составил запрос на подсчет суммы по критерию (Код_заказа (не ключевое)). И не...

Delphi sql-запрос и DBGrid
Здравствуйте, прошу вашей помощи. Есть DBGrid куда выводится запрос...

Добавление записи в таблицу SQL из Delphi
Необходимо добавлять новые данные в таблицу SQL из приложения Delphi. Во всех...

Delphi XE4 синтаксис sql запроса
Добрый день, Есть у меня такой запрос, который работает в Pl/SQL Developer....

Создание SQL-запросов в Delphi XE4
Добрый день. Есть очень простой вопрос. Я работал в Delphi 7, а сейчас в Delphi...

Добавление записи в DbGrid
Здравствуйте, помогите исправить ошибку ошибку.При нажатии кнопки ок во второй...

6
OlegXE
29 / 29 / 19
Регистрация: 06.12.2013
Сообщений: 154
03.05.2014, 20:10 #2
Вам не рассказывали что программа выполняется последовательно "сверху вниз" так сказать.
А теперь давай посмотрим что тут происходит.
Ты пишешь запрос с переменной,
потом добавляешь его в query
потом выполняешь
(тут программа начинает ругаться что не задано значение переменной)
а потом только переменной присваиваешь значение

как думаешь как надо строки переставить ?
0
Мусаси
7 / 7 / 2
Регистрация: 07.05.2013
Сообщений: 193
03.05.2014, 20:16  [ТС] #3
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm8.Button4Click(Sender: TObject);
var LastNomer : string;
begin
DBGrid2.DataSource.DataSet.Last;//Выделяем последнюю строку
LastNomer:='insert into Заказы (Сумма_заказа) values (:Сумма_заказа) where Код_заказа='+DBGrid2.Fields[0].AsString;//Номер первой колонки последнего значения в 1ой таблицк
//Подтвердить сумму заказа
DataModule1.ADOQ7_CYMMA_Zakaza.Close;
DataModule1.ADOQ7_CYMMA_Zakaza.SQL.Clear;
DataModule1.ADOQ7_CYMMA_Zakaza.SQL.Add((LastNomer));
 
//DataModule1.ADOQ7_CYMMA_Zakaza.Open;
DataModule1.ADOQ7_CYMMA_Zakaza.Parameters.ParamByName('Сумма_заказа').Value:=StrToInt(Edit3.Text);
DataModule1.ADOQ7_CYMMA_Zakaza.Open;
//DataModule1.ADOQ7_CYMMA_Zakaza.ExecSQL;
 
ShowMessage('Сумма заказа внесена, данные сохранены');
//обновить список с заказами
DataModule1.ADOT11_Zakazi.Active:=false;
DataModule1.ADOT11_Zakazi.Active:=true;
end;
Так?
А если так, то пишет вот что - пропущен символ ; в конце инструкции SQL
0
OlegXE
29 / 29 / 19
Регистрация: 06.12.2013
Сообщений: 154
03.05.2014, 20:18 #4
попробуй добавь его в конце
Delphi
1
+';'
0
Мусаси
7 / 7 / 2
Регистрация: 07.05.2013
Сообщений: 193
03.05.2014, 21:15  [ТС] #5
Не работает ((((

Добавлено через 8 минут
А можешь попробовать у себя?

Добавлено через 39 минут
Мне вот как посоветовали
UPDATE таблица
SET новое_значение
WHERE условия_отбора;

Пишет ошибка синтаксиса в инструкции Update.
Скорей всего как-то через него и надо работать, но что за фигня?????
0
OlegXE
29 / 29 / 19
Регистрация: 06.12.2013
Сообщений: 154
03.05.2014, 21:43 #6
Лучший ответ Сообщение было отмечено Мусаси как решение

Решение

Умный человек, правильно советует (ники читай иногда)

Должно так работать.
Delphi
1
LastNomer:='UPDATE Заказы SET Сумма_заказа = :Сумма_заказа WHERE Код_заказа='+DBGrid2.Fields[0].AsString ;
1
northener
пофигист широкого профиля
3252 / 2304 / 628
Регистрация: 15.07.2013
Сообщений: 13,597
03.05.2014, 21:45 #7
Цитата Сообщение от Мусаси Посмотреть сообщение
Так?
А если так, то пишет вот что - пропущен символ ; в конце инструкции SQL
Закомментируй Open, раскомментируй ExecSQL
1
03.05.2014, 21:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2014, 21:45
Привет! Вот еще темы с решениями:

Добавление записи в dbgrid
Добрый день, уважаемые! У меня такой вопрос, добавляю записи в dbgrid, но...

DBGrid добавление записи в таблицу
Нужно добавить запись исключительно с помощью навигатора. Как сделать так,...

добавление новой записи в DBGrid
нажимаю на кнопку "Новая запись" далее код procedure...

Добавление записи в dbgrid через query
На форму поместил компоненты dbgrid, button, datasource, query....при помощи...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru