Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можно ли в одном запросе почистить несвязанные записи [Acces]


sdram ©   (2002-10-10 11:56:00) 

Со временем в базе накапливаются потерянные записи из связанных таблиц. Как можно в запросе выбрать несвязанные записи?


sniknik   (2002-10-10 15:38:00) [1]

во любуйтесь

Инструкция CREATE PROCEDURE
Создает сохраненную процедуру.

--------------------------------------------------------------------------------
Синтаксис
CREATE PROCEDURE процедура
[параметр_1 типДанных[, параметр_2 типДанных[, ...]] AS инструкцияSQL

Ниже перечислены аргументы инструкции CREATE PROCEDURE:

Элемент Описание
процедура Имя процедуры. Это имя должно удовлетворять стандартным правилам именования.
параметр_1, параметр_2 От 1 до 255 имен полей или параметров. Например:
CREATE PROCEDURE Продажи_по_странам [Начальная дата] DateTime, [Конечная дата] DateTime;

Более подробные сведения о параметрах содержатся в разделе PARAMETERS.

типДанных Один из первичных типов данных SQL ядра Microsoft Jet или один из их синонимов.
инструкцияSQL Инструкция SQL, такая как SELECT, UPDATE, DELETE, INSERT, CREATE TABLE, DROP TABLE и т. д.


Дополнительные сведения
Процедура SQL состоит из предложения PROCEDURE (которое определяет имя процедуры), необязательного списка описаний параметров и одной инструкции SQL.

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


и определение как они понимают слово процедура

процедура
Аналогична представлению, с тем лишь исключением, что синтаксис SQL предусматривает использование инструкций SELECT (запросы с возвращением строк) для передачи параметров и использование инструкций DML (запросы без возвращения строк) UPDATE, INSERT, DELETE и SELECT INTO. Фактически процедура совпадает с объектом querydef, с тем лишь исключением, что ее можно создать с использованием синтаксиса SQL без обращения к модели объектов доступа к данным (DAO).


sniknik   (2002-10-10 15:34:00) [2]

скорей всего терминология или у них мания величия :-), английский вариант я тоже смотрел, то же, утверждают что в Access есть процедуры. (без переменных и тд. в один запрос! ;?( )

счас поищу описание.


Johnmen   (2002-10-10 15:17:00) [3]

>sniknik © (10.10.02 14:54)
>я это не писал...

А я и не утверждаю этого. См. "То, что ты описал"
Я прекрасно понимаю, что ты не мог написать такой пурги :)))
А может это корявый перевод ? Что, кстати, относится и к так называемым процедурам ? Или у нас с Мелкомягкими разная терминология ? :-)


sniknik   (2002-10-10 14:54:00) [4]

я это не писал, скопировал из хелпа. а в остальном согласен. так же как в Access есть так называемые процедуры на самом деле просто запросы так обозвали. :-))

и в этом случае эта эмуляция не подходит т.к.
"Для присоединенных или связанных таблиц транзакции не поддерживаются."


Johnmen   (2002-10-10 14:48:00) [5]

>sniknik © (10.10.02 14:33)

То, что ты описал, транзакционным механизмом в истинном понимании не является. Это всего лишь некая эмуляция, громко названная тр-ми.


Max Zyuzin   (2002-10-10 14:45:00) [6]

>sniknik © (10.10.02 14:33)
и зачем это нужно? вопрос о другом.

Это к вопросу о А может лучше грамотно спроектировать базу, чтобы записи не терялись?
:o)


sniknik   (2002-10-10 14:33:00) [7]

господа а как же хелп? читаем

Инструкция TRANSACTION
Используется для запуска и завершения явных транзакций.

Синтаксис
Запускает новую транзакцию.

BEGIN TRANSACTION

Заканчивает транзакцию путем завершения всей работы, выполненной в ходе транзакции.

COMMIT [TRANSACTION | WORK]

Заканчивает транзакцию путем свертывания всей работы, выполненной в ходе транзакции.

ROLLBACK [TRANSACTION | WORK]

Дополнительные сведения
Автоматический запуск транзакции невозможен. Чтобы начать транзакцию, ее необходимо явно запустить с помощью инструкции BEGIN TRANSACTION.

Допускается пять уровней вложения транзакций. Чтобы запустить вложенную транзакцию, воспользуйтесь инструкцией BEGIN TRANSACTION в контексте существующей транзакции.

Для присоединенных или связанных таблиц транзакции не поддерживаются.


(хелп из Access) и BEGIN TRANSACTION и остальные комманды срабатывают из ADOCommand. а TADOConnection.CommitTrans никак не может иммитировать того чего нет, ADO это же просто интерфейс. или я не прав? и зачем это нужно? вопрос о другом.


LordOfSilence   (2002-10-10 13:27:00) [8]

To Max Zyuzin:
IMHO, нет, можно имитировать TADOConnection.CommitTrans
и т.п.


Max Zyuzin   (2002-10-10 13:17:00) [9]

>Mike_Goblin © (10.10.02 13:09)
Ну это конечно да... только вопрос стоял по другому. А я вот не в курсе, скажите кто знает есть ли в аксесе понятия транзакций?


Mike_Goblin   (2002-10-10 13:09:00) [10]

А может лучше грамотно спроектировать базу, чтобы записи не терялись?


LordOfSilence   (2002-10-10 12:36:00) [11]

Коллеги, я, конечно, извиняюсь, но
в Access есть предопределенный конструктор
запроса "Записи без подчиненных". Может и его
тоже стОит попробовать господину sdram?


Max Zyuzin   (2002-10-10 12:11:00) [12]

>ЮЮ © (10.10.02 12:02)
Да согласен :) правильно будет
select * from tab2
where tab2.FKField not in (select tab1.PKField from tab1)


ЮЮ   (2002-10-10 12:09:00) [13]

select * from DetailTabe
left join MasterTable on DetailTabe.MasterID=MasterTable.ID
where MasterTable.ID is null


Johnmen   (2002-10-10 12:09:00) [14]

DELETE FROM T1 A
WHERE NOT EXIST
(SELECT B.id FROM T2 B WHERE A.id=B.id)


ЮЮ   (2002-10-10 12:02:00) [15]

Рано :-)
И что вернёт этот запрос?


sdram   (2002-10-10 11:59:00) [16]

Спасибо


Max Zyuzin   (2002-10-10 11:57:00) [17]

Можно конечно
select * from tab1, tab2
where tab1.PKField <> tab2.FKField


Наверх

Титульная страница Поиск, карта сайта Написать письмо