powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Отобрать удалённые записи
14 сообщений из 14, страница 1 из 1
Отобрать удалённые записи
    #34085950
Может кто кинет идею как с помощью SELECT отобрать удалённые записи.
Имеем: табл1 - шапки накладных, табл2 - тела накладных.
Надо за определённый период, т.е. по полю дата в табл1, отобрать накладные, которые правились, т.е. отобрать записи в табл2, которые были удалены.

Вобщем-то с помощью SCAN вопрос решаецца, но мне, мля, приспичило отобрать с помощью SELECT. :D
...
Рейтинг: 0 / 0
Отобрать удалённые записи
    #34085973
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю, где то примерно так :)
Код: plaintext
1.
2.
3.
4.
5.
local lcDel
lcDel=SET("Deleted")
SET DELETED OFF
SELECT * from MyTable where DELETED()
SET DELETED &lcDel
...
Рейтинг: 0 / 0
Отобрать удалённые записи
    #34086071
SELECT табл1.дата, табл1.номер_накладной, табл2.наименование;
FROM табл2 INNER JOIN табл1 ;
ON табл2.номер_накладной = табл1.номер_накладной;
WHERE табл1.дата = дата1;
AND deleted() = .T.

Делаю примерно так. Пусто!!!
сразу скажу, что за дата1 есть данные (как удалённые так и нет).
...
Рейтинг: 0 / 0
Отобрать удалённые записи
    #34086081
и конечно перед этим SET DELETED OFF....
...
Рейтинг: 0 / 0
Отобрать удалённые записи
    #34086163
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитай в хелпе про поведение ф-ци DELETED() и некоторых других ф-ци1 при JOIN
...
Рейтинг: 0 / 0
Отобрать удалённые записи
    #34086202
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если вот так?
Код: plaintext
1.
2.
3.
4.
5.
SELECT c1.дата, c2.номер_накладной, c2.наименование ;
FROM (select *, deleted() as metDel from табл2 ) c1 ;
INNER JOIN (select *, deleted() as metDel from табл1 ) c2 ;
ON c2.номер_накладной = c1.номер_накладной ;
WHERE c2.дата = c1.дата and (c1.metDel = .T. or c2.MetDel=.T.)
...
Рейтинг: 0 / 0
Отобрать удалённые записи
    #34086241
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точнее вот так, не внимательно прочитал условие
Код: plaintext
1.
2.
3.
4.
5.
SELECT c1.дата, c2.номер_накладной, c2.наименование ;
FROM (select *, deleted() as metDel from табл2 ) c2 ;
INNER JOIN табл1 c1 ;
ON c2.номер_накладной = c1.номер_накладной ;
WHERE c2.дата = c1.дата and MetDel
...
Рейтинг: 0 / 0
Отобрать удалённые записи
    #34086255
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так будет правильней :-[
Код: plaintext
1.
2.
3.
4.
5.
SELECT c1.дата, c2.номер_накладной, c2.наименование ;
FROM (select * from табл2 where , deleted()) c2 ;
INNER JOIN табл1 c1 ;
ON c2.номер_накладной = c1.номер_накладной ;
WHERE c2.дата = c1.дата
...
Рейтинг: 0 / 0
Отобрать удалённые записи
    #34086295
to AleksMed

а можно выдержку из хелпа? что там?
что-то я ничего подобного не увидел....может у меня хэлп не полный?
...
Рейтинг: 0 / 0
Отобрать удалённые записи
    #34086371
valeryka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2КонецЦикла

Прилепи к таблице логическое поле - признак удаления, повесь индекс на него
и не пользуйся ентой недоделанной функцией deleted()
...
Рейтинг: 0 / 0
Отобрать удалённые записи
    #34086432
to valeryka

мы лёгких путей не ищем :)
...
Рейтинг: 0 / 0
Отобрать удалённые записи
    #34086448
valeryka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2КонецЦикла

А напрасно.
...
Рейтинг: 0 / 0
Отобрать удалённые записи
    #34086826
to valeryka

предложенный не катит, тем более гемора здесь достаточно: с вводом ещё одного поля помимо модифицирования таблицы и собсно написания необходимой обработки для построения отчёта, придёцца ещё и дописывать уже существующие коды, для заполнения этого поля при изменении накладной + необходимо пробежацца по таблице и если запись удалена, заполнить это поле.... кашмар!

есть и более лёгкий путь - сначала селектом загружать удалённые записи из одной таблицы в курсор (при выборке из одной таблице delete() работает замечательно), а потом вторым селектом выбирать данные из другой таблицы и этого курсора..... вот и вся обработка.... чем собсно и воспользовался...
...
Рейтинг: 0 / 0
Отобрать удалённые записи
    #34087391
__Jet__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здрасть!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT *
FROM
  (
  SELECT
    DELETED() as IsDeleted,
    Orders.order_id,
    Orders.order_date,
    Orders.cust_id,
    OrdItems.line_no,
    OrdItems.quantity
  FROM Orders
  INNER JOIN OrdItems ON Orders.order_id = OrdItems.order_id
  ) as PreResult
WHERE PreResult.IsDeleted and PreResult.Order_date = m.dMyDate

Успехов! ;-)
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Отобрать удалённые записи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]