Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Отчеты  [new]
RiW
Member

Откуда: с работы
Сообщений: 12
Вопрос такой
можно ли в один отчет впихнуть данные с одной бд но приэтом
была возможность их фильтровать
те выбрал специальность "рабочий" и в отчоте появились только рабочие (я новичек, а лис именя 8)
заранеи сенкую
8 фев 05, 07:31    [1306280]     Ответить | Цитировать Сообщить модератору
 Re: Отчеты  [new]
Дмитрий Петров
Member

Откуда: Пермь
Сообщений: 43
Варианты выбирайте на вкус: наложение фильтра на таблицу,
создайте нужный курсор командами Select-Sql и его
используйте как источник данных для отчета.
Попробуйте параметризованное представление...
8 фев 05, 07:41    [1306285]     Ответить | Цитировать Сообщить модератору
 Re: Отчеты  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Еще варианты:

REPORT FORM MyReport.frx FOR ...

Вот в условии FOR и задаешь фильтр, наложенный на главную таблицу отчета, например:

select MyTab
REPORT FORM MyReport.frx FOR MyTab.Spec = "рабочий"

Хотя, конечно, самый лучший и универсальный способ - это создание временных таблиц для печати. Остальные способы имеют разные ограничения.
8 фев 05, 09:06    [1306384]     Ответить | Цитировать Сообщить модератору
 Re: Отчеты  [new]
RiW
Member

Откуда: с работы
Сообщений: 12
сенкую гаспада
ысчо один вопрос интимный
есть таблица юзер заходет удаляет запись
создает новую запись его прося растегнуть ширинку и сделать хорактерные
движения
потомушто часть полей с ключем примори или кондидат
и ён попытался ввести похожее поле

а теперь внимание вопрос

так можно
Помечаем Delete запись
отключаем бд
сжимаем бд
подключаем бд

если можно то как отключить и подключить БД
8 фев 05, 09:45    [1306543]     Ответить | Цитировать Сообщить модератору
 Re: Отчеты  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
А оно тебе надо?

Ссылочная целостность организуется не для того, чтобы ее нарушать. Т.е. "отключить" триггера в принципе можно (ALTER TABLE). Но ты уверен, что после такого "взлома" не полетит вообще вся база данных. Не в смысле "данные пропадут", а в смысле "данные не соответствуют друг другу".

Если стоит задача удалить вообще все записи таблицы, то есть команда ZAP, при выполнении которой триггеры не выполняются.

И еще. Ключевые поля (PK и FK) пользователь ни в коем случае не должен вводить сам. Это должна быть "внутренняя механика" программы, никак не видимая пользователем. Пользователь не должен даже подозревать, что есть что-то еще кроме того, что он видит на форме. Себе дороже выйдет.
8 фев 05, 10:19    [1306643]     Ответить | Цитировать Сообщить модератору
 Re: Отчеты  [new]
RiW
Member

Откуда: с работы
Сообщений: 12
ВладимирМ
А оно тебе надо?

Ссылочная целостность организуется не для того, чтобы ее нарушать. Т.е. "отключить" триггера в принципе можно (ALTER TABLE). Но ты уверен, что после такого "взлома" не полетит вообще вся база данных. Не в смысле "данные пропадут", а в смысле "данные не соответствуют друг другу".

Если стоит задача удалить вообще все записи таблицы, то есть команда ZAP, при выполнении которой триггеры не выполняются.

И еще. Ключевые поля (PK и FK) пользователь ни в коем случае не должен вводить сам. Это должна быть "внутренняя механика" программы, никак не видимая пользователем. Пользователь не должен даже подозревать, что есть что-то еще кроме того, что он видит на форме. Себе дороже выйдет.


Дело втом что пользователь и не правит
правит назначенный человек
но другой не я
а мне нуна чтобы он мог удалить рабочего вместе с его ригалиями
из бд полностью (не пометил, а удалил) причем не выходя из програмки?
8 фев 05, 10:44    [1306762]     Ответить | Цитировать Сообщить модератору
 Re: Отчеты  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
У тебя не совсем правильное понимание того, что есть "удаление".

Под термином "Удаление" в FoxPro обычно понимают именно установку метки. Т.е. запись помечается как удаленная, но физически по прежнему остается в таблице. Вот именно этот процесс и регулируется триггерами.

Для физического удаления записей ранее помеченных как удаленные используется специальная команда

PACK

Эта команда требует эксклюзивного (единоличного) доступа к таблицам. Как правило, выносится в отдельную служебную процедуру.

Более подробно об удалении читай во вложенном файле.

К сообщению приложен файл (Delete.zip - 4Kb) cкачать
8 фев 05, 11:46    [1307032]     Ответить | Цитировать Сообщить модератору
 Re: Отчеты  [new]
PaulWist
Guest
автор
а мне нуна чтобы он мог удалить рабочего вместе с его ригалиями
из бд полностью (не пометил, а удалил) причем не выходя из програмки?


1. Для того что бы удалить запись необходимо открыть таблицу в монопольном режиме (сам понимаешь др пользователи не смогут с ней работать), поэтому можно только пометить на удаление саму запись и все связанные таблицы

2. Для всех регалий наобходимо написать троггер или процедуру удаления

3. Если пометил на удаление с кодом 10 и хочешь опять этот код занести, но для другой записи, тогда надо использовать фильтрованный PK
8 фев 05, 11:50    [1307053]     Ответить | Цитировать Сообщить модератору
 Re: Отчеты  [new]
Igor Korolyov
Member

Откуда: Гомель, Беларусь
Сообщений: 2512

Hi RiW!

Для твоих Candidae индексов добавь условие FOR !DELETED() - тогда он может
хоть 100 раз ввести/удалить/ввести одного и того-же ФИО или что там у тебя
уникально должно быть...
Однако для первичного ключа это ОЧЕНЬ редко когда нужно - ибо в более-менее
серьёзной системе первичный ключ присваивается автоматом, и пользователь его
и не видит, и исправить не может - а вот "кандидаты" - сколько угодно :)
P.S. Естественно что такой индекс не участвует в оптимизации, потому если
это критично, надо сделать ещё один тег (уже без условия), но вида Regular -
т.е. не контролирующего уникальность.
P.P.S. Также есть такая стратегия - повторное использование удалённых
записей - т.е. при "добавлении" ты сначала ищешь некоторую "подходящую"
запись среди удалённых, восстанавливаешь её, заменяешь нужные поля. К
сожалению это требует написания довольно объёмного кода, и довольно сложно
реализуется если есть НЕСКОЛЬКО Candidate индексов/уникальных полей - думаю
понятно почему.
А PACK использовать в ходе "нормального использования" программы и для
основных таблиц (не временных) - крайне нехорошо :(

Posted via ActualForum NNTP Server 1.1

8 фев 05, 22:04    [1309203]     Ответить | Цитировать Сообщить модератору
 Re: Отчеты  [new]
RiW
Member

Откуда: с работы
Сообщений: 12
Спасибо уважаемые господа
9 фев 05, 05:37    [1309422]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить