0 / 0 / 0
Регистрация: 12.09.2015
Сообщений: 14
1

Возвращение результата SQL-запроса в переменную

09.03.2016, 16:02. Показов 1888. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста
Есть БД на sql server 2008 в ней таблица new_reader
В Делфи7 делаю форму добавления записи, нужно узнать ID записи которая добавилась,
сама таблица
SQL
1
2
3
4
5
6
CREATE TABLE new_reader(
id INT PRIMARY KEY IDENTITY,
Фамилия nvarchar(50),
Имя nvarchar(50),
Отчество nvarchar(50),
);
обработчик события в делфи
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
A:integer; s:string;
... ... ...
with unit1.form1.ADOQuery2 do
begin
close;
SQL.Clear;
SQL.Add('INSERT INTO new_reader (Фамилия, Имя, Отчество)');
SQL.Add('VALUES ('+famlia+', '+ima+', '+otchestvo+')');
SQL.Add('SELECT [ID] = @@IDENTITY');
Open;
A:=unit1.form1.ADOQuery2.FieldByName('id').AsInteger;
s:=IntToStr(A);
showMessage(s);
end;
данная конструкция выдает ошибку
'ADOQuery2: Type mismatch for field 'id', expecting: AutoInc actual: BCD'
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.03.2016, 16:02
Ответы с готовыми решениями:

Вывод результата SQL запроса в переменную
Вот SQL запрос: SELECT COUNT()AS col1 FROM WHERE =(SELECT id FROM ...

Запись результата запроса в переменную sql
Добрый день, форумчане. Не могу сам родить как в переменную поместить результат запроса. У меня в...

Запись результата агрегирующего sql-запроса в переменную
Искал здесь — ничего путного не нашёл по своей теме. Задача такая: выполнить запрос и его результат...

Возвращение результата запроса
Добрый вечер! Данный код находит технику по инвентарному номеру и при условии что в одном из...

8
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
09.03.2016, 16:06 2
Цитата Сообщение от SEMEon85 Посмотреть сообщение
данная конструкция выдает ошибку
Потому как ты и INSERT, и SELECT запихнул в один запрос.
0
5394 / 4322 / 1060
Регистрация: 29.08.2013
Сообщений: 27,128
Записей в блоге: 3
09.03.2016, 16:10 3
SQL
1
SELECT [ID] = @@IDENTITY
это неправильно
id у вас INT, а @@IDENTITY?

лучше вообще сделать функцию - вы ей ФИО, она вам ID
0
0 / 0 / 0
Регистрация: 12.09.2015
Сообщений: 14
09.03.2016, 16:23  [ТС] 4
это неправильно
id у вас INT, а @@IDENTITY?
SQL
1
id INT PRIMARY KEY IDENTITY,
пробовал делать запрос еще вот таким образом
Delphi
1
2
3
SQL.Add('INSERT INTO new_reader (Фамилия, Имя, Отчество)');
SQL.Add('VALUES ('+famlia+', '+ima+', '+otchestvo+')');
SQL.Add('SELECT SCOPE_IDENTITY() as id');
но тоже ошибка, мне именно нужно сразу в одной конструкции узнать id потому, что если пользователей несколько будут создавать запись в одно время не было путаницы кто что создал

если не затруднит можно пример функции
0
5394 / 4322 / 1060
Регистрация: 29.08.2013
Сообщений: 27,128
Записей в блоге: 3
09.03.2016, 16:25 5
Цитата Сообщение от SEMEon85 Посмотреть сообщение
но тоже ошибка
open - это для запросов которые возвращают значение
у вас есть OpenOrExecute?

Цитата Сообщение от SEMEon85 Посмотреть сообщение
что если пользователей несколько будут создавать запись в одно время не было путаницы кто что создал
напишите ФУНКЦИЮ
0
0 / 0 / 0
Регистрация: 12.09.2015
Сообщений: 14
09.03.2016, 16:39  [ТС] 6
OpenOrExecute не нету
Можно пример подобной функции

Добавлено через 2 минуты
По существу мне просто нужно установить курсор в DBGride на созданную запись, может есть проще какой метод?
0
5394 / 4322 / 1060
Регистрация: 29.08.2013
Сообщений: 27,128
Записей в блоге: 3
09.03.2016, 16:41 7
https://technet.microsoft.com/... .105).aspx

Добавлено через 41 секунду
или функция или вместо ID использовать GUID

Добавлено через 21 секунду
для многопользовательского приложения
0
0 / 0 / 0
Регистрация: 12.09.2015
Сообщений: 14
09.03.2016, 16:50  [ТС] 8
GUID клевая вещь, спасибо огромное, а то уже 3 день голову ломаю над этой проблемой...
может пригодится кому
Delphi
1
2
3
4
5
6
7
...
var MyGUID : TGUID;
begin
...
 CreateGUID(MyGUID);
 ShowMessage(GUIDToString(MyGUID));
...
0
5394 / 4322 / 1060
Регистрация: 29.08.2013
Сообщений: 27,128
Записей в блоге: 3
09.03.2016, 16:58 9
SEMEon85, все равно, если вам нужно получить последнего добавленного, то нужно писать функцию
0
09.03.2016, 16:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.03.2016, 16:58
Помогаю со студенческими работами здесь

Вывод результата запроса MySQL в переменную
Привет ВСЕМ! Вот такой батник mysql -uuser -pparol base --execute "SELECT COUNT(id) FROM...

Запись в переменную результата запроса из SqlDataSource
Добрый день! Есть проблема, нужно записать в переменную, результат sql запроса, запрос выполняется...

Запись результата выполнения запроса в переменную
Помогите, пожалуйста, очень надо до утра решить эту проблему :( У меня есть sql запрос который...

Запись в переменную типа int результата запроса select
Подскажите пожалуйста: у меня есть таблица в БД Oracle 11g с атрибутом COUNT типа NUMBER(2,0) и с...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru