Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Запрос sql (INSERT INTO...)


Автор: SkrudjMagdak 17.1.2010, 16:51
Я делаю запрос на добавление строки, он добавляет, но мне нужно что бы он вернул Код(номер строчки) строки которую он создал, такое вобще можно? Ключ у меня инкрементируется

adoquery1.SQL.Add('INSERT INTO Кредит (КодСотрудника,КодКлиента,КодТипКредита,Процент,Срок) VALUES ('+Edit16.Text+','+Ae1+','+IntToStr(Bk)+','+Edit20.Text+','+Edit21.Text+');');

Автор: Демо 17.1.2010, 17:20
А разве СУБД не нужно указывать?

Автор: SkrudjMagdak 17.1.2010, 17:25
Прошу прощение. access.

Автор: Данкинг 17.1.2010, 17:36
Можно, если переоткрыть датасет и взять MAX ключ.

Автор: Демо 17.1.2010, 17:37
Цитата(Данкинг @  17.1.2010,  17:36 Найти цитируемый пост)
Можно, если переоткрыть датасет и взять MAX ключ.


Либо использовать для добавления хранимую процедуру...

Автор: SkrudjMagdak 17.1.2010, 17:47
Данкинг, я об этом уже подумал.  Демо, вы имейте ввиду adoquery1.insert?

Мне хотелось бы запросом и причем одним. Если можно...

Автор: Данкинг 17.1.2010, 19:37
Цитата(Демо @  17.1.2010,  17:37 Найти цитируемый пост)
Либо использовать для добавления хранимую процедуру... 

А как в Access хранимую процедуру сделать?

Автор: chip_and_dayl 17.1.2010, 20:31
Уже обсуждалась тема и не один разsmile

http://forum.vingrad.ru/index.php?showtopic=284269&view=findpost&p=2049498

Автор: Демо 17.1.2010, 21:23
Цитата(Данкинг @  17.1.2010,  19:37 Найти цитируемый пост)
А как в Access хранимую процедуру сделать?


Код

Инструкция CREATE PROCEDURE
Показать все
Скрыть все
Создает хранимую процедуру (Процедура. Совокупность описаний и инструкций в модуле, которые выполняются как одна программная единица. В Visual Basic существуют процедуры-подпрограммы Sub и процедуры-функции Function.).


 Примечание.   Ядро базы данных Microsoft Access не поддерживает использование инструкции CREATE PROCEDURE или любой другой инструкции языка описания данных (DDL) (Язык определения данных (DDL). Язык описания атрибутов баз данных, в особенности таблиц, полей, индексов и стратегии сохранения. ANSI определяет это с помощью описателей CREATE, DROP и ALTER.) при работе с базами данных, не основанными на ядре Microsoft Access.


Синтаксис
CREATE PROCEDURE процедура (параметр1 тип_данных[, параметр2 тип_данных][, ...]) AS инструкция_SQL

Инструкция CREATE PROCEDURE включает в себя следующие компоненты.

Компонент Описание 
процедура Имя процедуры 
параметр1, параметр2 От одного до 255 имен полей или параметров (Параметр. Значение, назначенное переменной в начале операции или перед расчетом выражения в программе. Параметр может представлять текстовое значение, число или имя аргумента, назначенное другому значению.) 
тип_данных Один из основных типов данных Microsoft Access или их синонимов 
инструкция_SQL Инструкция SQL, например: SELECT, UPDATE, DELETE, INSERT, CREATE TABLE, DROP TABLE и т. д. 


Пример
CREATE PROCEDURE Sales_By_CountryRegion ([Beginning Date] DateTime, [Ending Date] DateTime) AS SELECT Customer, [Ship Address] WHERE [Shipped Date] Between [Beginning Date] And [Ending Date]

Замечания
Процедура SQL состоит из предложения PROCEDURE, которое определяет имя процедуры, необязательный список определений параметров и одну инструкцию SQL (Инструкция (строка) SQL. Выражение, определяющее команду SQL, например SELECT, UPDATE или DELETE, и включающее предложения, например WHERE или ORDER BY. Инструкции/строки SQL обычно используются в запросах и в статистических функциях.).

Имя процедуры не должно совпадать с именем существующей таблицы.



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)