|
|
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
Есть форма запроса фамилии, имени и отчества. К форме прицеплено представление, в результате отработки которого полученная запись отображается в другой форме. С передачей параметра из формы в представление, а результата отработки представления в следующую форму я разобралась, все показывает. А если результат поиска нулевой? Как сделать, чтобы следующая форма не открывалась, а выскакивало окошко с сообщением, что ничего не найдено? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2006, 17:34 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
См. _TALLY, RECCOUNT() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2006, 17:36 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
Спасибо, помогло :) Но появился дополнительный вопрос: у меня идет отбор по фамилии, имени и отчеству. Если строгое соответствие - находит, если строгое несоответствие (т.е. не совпадают ни один из трех параметров) - говорит "Не найдено". А если есть совпадение хоть в одном из параметров - выводит подходящую запись. Как можно сделать, чтобы выводилось только строгое соответствие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2006, 18:45 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
Как можно сделать, чтобы выводилось только строгое соответствие? Может быть установить SET ANSI ON или SET EXACT ON смотря как идет Ваш отбор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2006, 09:12 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
Делаю так. На форме три textbox-а, в которые вводятся фамилия, имя, отчество. При нажатии кнопки ОК пишу: LOCAL cFam,cNam,cOtt,ldDtr m.cFam=ALLTRIM(ThisForm.txtfam.value) m.cNam=ALLTRIM(thisform.txtnam.Value) m.cOtt=ALLTRIM(ThisForm.txtott.value) m.ldDtr=ThisForm.txtdtr REQUERY("kurs_view") IF reccount("KURS_VIEW")=0 =MESSAGEBOX("Не найдено!",0) ELSE DO FORM expi6 ENDIF Сам View SELECT Slvcity.id, Slvcity.cname, Jsn_kurs.itipst, Jsn_kurs.idn,; Jsn_kurs.cfam, Jsn_kurs.cimm, Jsn_kurs.cott, Jsn_kurs.ddtr, Jsn_kurs.iobl,; Jsn_kurs.irn, Jsn_kurs.icity, Jsn_kurs.istr, Jsn_kurs.ndom, Jsn_kurs.nkv,; Jsn_kurs.ngpz, Jsn_kurs.ngpp, Jsn_kurs.nsmill, Jsn_kurs.nsmilf,; Jsn_kurs.nsmilk, Jsn_kurs.nsmil01, Jsn_kurs.nsmil02, Jsn_kurs.nsmil03,; Jsn_kurs.nsmil04, Jsn_kurs.nsmil05, Jsn_kurs.nsmil06, Jsn_kurs.nsmil07,; Jsn_kurs.nsmil08, Jsn_kurs.nsmil09, Jsn_kurs.nsmil10, Jsn_kurs.nsmil11,; Jsn_kurs.nsmil12, Jsn_kurs.nsmil13, Jsn_kurs.nsmil14, Jsn_kurs.nmiom,; Jsn_kurs.mold, Jsn_kurs.mncom, Jsn_kurs.nrus, Jsn_kurs.nist, Jsn_kurs.nobs,; Jsn_kurs.nfiz, Jsn_kurs.cpost, Jsn_kurs.nsoc1, Jsn_kurs.nsoc2,; Jsn_kurs.nsoc3, Jsn_kurs.nons11, Jsn_kurs.nons12, Jsn_kurs.nons21,; Jsn_kurs.nons22, Jsn_kurs.nons31, Jsn_kurs.nons32, Jsn_kurs.irasp,; Jsn_kurs.motz, Jsn_kurs.motz2, Jsn_kurs.cdol, Jsn_kurs.nvzv,; Jsn_kurs.nvrot, Jsn_kurs.nohv1, Jsn_kurs.nohv2, Jsn_kurs.nsps1,; Jsn_kurs.nsps2, Jsn_kurs.nuso1, Jsn_kurs.nuso2, Jsn_kurs.nilv1,; Jsn_kurs.nilv2, Jsn_kurs.nuvp1, Jsn_kurs.nuvp2, Jsn_kurs.numm1,; Jsn_kurs.numm2, Jsn_kurs.nupv1, Jsn_kurs.nupv2, Jsn_kurs.nzos1,; Jsn_kurs.nzos2, Jsn_kurs.nklu1, Jsn_kurs.nklu2, Jsn_kurs.nuup1,; Jsn_kurs.nuup2, Jsn_kurs.nlov1, Jsn_kurs.nlov2, Jsn_kurs.numg1,; Jsn_kurs.numg2, Jsn_kurs.nukp1, Jsn_kurs.nukp2, Jsn_kurs.nzpb1,; Jsn_kurs.nzpb2, Jsn_kurs.npvu1, Jsn_kurs.npvu2, Jsn_kurs.nkmn1,; Jsn_kurs.nkmn2, Jsn_kurs.nuve1, Jsn_kurs.nuve2, Jsn_kurs.nuoo1,; Jsn_kurs.nuoo2, Jsn_kurs.nuis1, Jsn_kurs.nuis2, Jsn_kurs.nupd1,; Jsn_kurs.nupd2, Jsn_kurs.nuur1, Jsn_kurs.nuur2, Jsn_kurs.nfpg1,; Jsn_kurs.nfpg2, Jsn_kurs.ncpd1, Jsn_kurs.ncpd2, Jsn_kurs.nzou1,; Jsn_kurs.nzou2, Jsn_kurs.nupp1, Jsn_kurs.nupp2, Jsn_kurs.nluk1,; Jsn_kurs.nluk2, Jsn_kurs.nspr1, Jsn_kurs.nspr2, Jsn_kurs.nspz1,; Jsn_kurs.nspz2, Jsn_kurs.nkpo1, Jsn_kurs.nkpo2, Jsn_kurs.nkvz1,; Jsn_kurs.nkvz2, Jsn_kurs.czvan, Slvrsp.id, Slvrsp.cname, Slvobl.id,; Slvobl.cname; FROM ; kurs!slvcity ; INNER JOIN kurs!jsn_kurs ; ON Slvcity.id = Jsn_kurs.icity ; INNER JOIN kurs!slvrsp ; ON Slvrsp.id = Jsn_kurs.irasp ; INNER JOIN kurs!slvobl ; ON Slvobl.id = Jsn_kurs.iobl; WHERE ( Jsn_kurs.cfam == ( ?CFAM ); AND Jsn_kurs.cimm == ( ?CNAM ) ); AND Jsn_kurs.cott == ( ?COTT ); ORDER BY Jsn_kurs.cfam Если задать "ИВАНОВ ИВАН ИВАНОВИЧ" и такой в базе есть - все находится. Если задать "ПЕТРОВ ИВАН СЕРГЕЕВИЧ" - все равно выведет "ИВАНОВ ИВАН ИВАНОВИЧ". Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2006, 12:52 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
Попробуй почистить контейнер базы данных. В режиме модификации базы данных пункт меню DataBase - CleanUp DataBase Затем выполни компиляцию проекта с опцией Recompaile All Files Если не поможет. Удали View. Почисть базу данных и снова создай View Подозрение на то, что изначально в твоем View стоял символ не тождественного равенства, а простого равенства (один символ "="). А после модификации это изменение не было переведено в исполняемый код или же используется старая версия исполняемого кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2006, 15:20 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
ВладимирМПопробуй почистить контейнер базы данных. В режиме модификации базы данных пункт меню DataBase - CleanUp DataBase ВладимирМ Подозрение на то, что изначально в твоем View стоял символ не тождественного равенства, а простого равенства (один символ "="). А после модификации это изменение не было переведено в исполняемый код или же используется старая версия исполняемого кода. Ваши подозрения абсолютно обоснованы. Вто только у меня в меню опция CleanUp Database неактивна. Как-нибудь по-другому это проделать можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2006, 18:07 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
katty_aiВаши подозрения абсолютно обоснованы. Вто только у меня в меню опция CleanUp Database неактивна. Как-нибудь по-другому это проделать можно? Это значит, что контейнер базы данных открыт в режиме Shared. Необходимо закрыть сам контейнер базы данных, переотркыть его в режиме Exclusive и выполнить упаковку. Для этого надо непосредственно в окне проекта установить указатель на имени базы данных и нажать кнопку "Close". Затем в командном окне дать команду SET EXCLUSIVE ON и в проекте нажать кнопку Modify. Теперь пункт Clean Up DataBase должен быть доступен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2006, 18:23 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
Получилось. Спасибо. А еще вопрос - с поиском при подстановке текстовых полей все понятно. А как сделать поиск по дате? Ведь в запрос в корректном виде она вводится как {^YYYY/MM/DD}. Как её преобразовать из обычного вида к подобному? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2006, 19:42 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
katty_aiА еще вопрос - с поиском при подстановке текстовых полей все понятно. А как сделать поиск по дате? Ведь в запрос в корректном виде она вводится как {^YYYY/MM/DD}. Как её преобразовать из обычного вида к подобному? Не надо ничего преобразовывать. Использование символа вопросительного знака автоматически преобразует данные в нужный формат. Разумеется, сама переменная должна иметь тип Date или DateTime Чтобы TextBox возвращал значение типа Date прямо в дизайнере формы укажи в значении TextBox.Value = {} Т.е. две фигурные скобки подряд. Тогда ldDate = ThisForm.TextBox.Value() Requery("MyView") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2006, 20:02 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
Очередной заглюк: при вызове формы, в которой задаются данные для выполнения View, сначала выскакивают стандартные фоксовые запросы необходимых переменных(т.е. сfam, cimm, cott), а уже после этого поялвяется сама форма. С чем это может быть связано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2006, 21:57 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
katty_aiОчередной заглюк: при вызове формы, в которой задаются данные для выполнения View, сначала выскакивают стандартные фоксовые запросы необходимых переменных(т.е. сfam, cimm, cott), а уже после этого поялвяется сама форма. С чем это может быть связано? Это не глюк. Это стандартная логика работы при настройке AutoOpen = .T. Смысл в том, что открытие таблиц происходит до прорисовки элементов формы. Вот на открытие Local View и происходит запрос параметров. Исправляется это следующим образом: 1) В DataEnvironment формы для курсора Local View делается настройка DataEnvironment.Cursor1.NoDataOnLoad = .T. В этом случае Local View откроется, но данными заполняться не будет. Фактически, будет сформирована только структура Local View. Соответственно, не будет и запроса значений параметров. 2) В событии Init-формы делаются присвоения параметрам и перезапрос Local View, если это необходимо Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2006, 22:27 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
ВладимирМ Это не глюк. Это стандартная логика работы при настройке AutoOpen = .T. Смысл в том, что открытие таблиц происходит до прорисовки элементов формы. Вот на открытие Local View и происходит запрос параметров. Логично. Интересно только, как у меня это отрабатывало раньше, в самом начале. ВладимирМ 2) В событии Init-формы делаются присвоения параметрам и перезапрос Local View, если это необходимо Код: plaintext 1. 2. 3. 4. 5. 6. Вот этого не поняла. Зачем присваивать параметры в init, усли значения у меня появятся только после того, как я введу их в соответствующие textbox-ы формы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2006, 11:25 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
И еще вопрос - прочитала, что представления можно использовать для редактирования основной базы. В том случае, если нужно редактировать уже имеющуюся запись вроде бы понятно - при выполнении запроса в форму выводится нужная запись, редактируется и сохраняется во View и в самой таблице. А если нужно создать новую запись? Как поступать тогда? Я тут попробовала обходиться без view, т.е. через форму запроса фамилии, имени, отчества создавала выражение, по которому у меня проиндексирована база. Потом проводила в ней поиск через Seek - и когда запись находилась, передавала её номер во вторую форму. Вторую форму открывала именно на этой записи и редактировала. Все сохранялось. А вот если записи в базе не существовало, то я добавляла новую запись и открывала вторую форму, в которой все поля получались пустыми. Как можно передать в новую запись ФИО из формы запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2006, 11:43 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
Не надо ничего специально делать и куда-то, что-то копировать. Просто сам Local View делается "обновляемым". Т.е. изменения в Local View автоматически переносятся в таблицу-источник, на основании которой этот View был построен. Для этого надо в дизайнере Local View сделать некоторые настройки на закладке Update Criteria. Ну, и несколько слов о том, что такое буферизация и как она работает во вложенном файле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2006, 12:37 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
Доигралась. Запрос через форму вообще перестал работать. А в автономном режиме все отбирает великолепно. Подскажите, что я сделала не так. Есть форма поиска (4 textbox-а - ФИО, дата рождения). Значение txtdtr.value {} В ее DE сам View, таблица и словари, по которым создан View. У View NoDataOnLoad=.T. Текст View не изменился, лишь добавилась проверка по дате рождения. Поля заполняются. Нажимается кнопка ОК, где прописано: LOCAL cFam,cImm,cOtt,dDtr m.cFam=ThisForm.txtfam.value m.cImm=Thisform.txtimm.Value m.cOtt=ThisForm.txtott.Value m.dDtr=ThisForm.txtdtr.Value REQUERY("kurs_view") IF reccount("view_kurs")=0 =MESSAGEBOX("НЕ НАЙДЕН!",0) ELSE DO FORM expi6 ENDIF При любом заполнении полей, неважно - есть или нет данные, выводятся данные для первого по списку человека. И я все-таки не поняла, почему надо присваивать параметры именно в init формы. Ведь значений еще нет. Они появятся после ввода в textbox-ы. ВладимирМ 2) В событии Init-формы делаются присвоения параметрам и перезапрос Local View, если это необходимо Код: plaintext 1. 2. 3. 4. 5. 6. Прочитала про буфферизацию. И все равно, не поняла, как поступать с новыми записями.:( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2006, 16:53 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
С view разобралась. Ищет и отображает все корректно. Но вопрос с новой записью остается открытым. Я пока поступаю так, после отработки view, если в базе ничего не найдено, делаю append blank, чтобы появилась возможность для редактирования. Правда ФИО приходится вносить заново, но сохранение проходит вполне корректно. Правда, я еще не пробовала создать там отчет. Подскажите, верно ли я поступаю? А то из всего прочитанного, у меня получается, что view - это исключительно для редактирования уже существующих записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2006, 19:14 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
katty_aiС view разобралась. Ищет и отображает все корректно. Но вопрос с новой записью остается открытым. Я пока поступаю так, после отработки view, если в базе ничего не найдено, делаю append blank, чтобы появилась возможность для редактирования. Правда ФИО приходится вносить заново, но сохранение проходит вполне корректно. Правда, я еще не пробовала создать там отчет. Подскажите, верно ли я поступаю? А то из всего прочитанного, у меня получается, что view - это исключительно для редактирования уже существующих записей. Правильно. Новая запись создается непосредственно во View. Далее по команде TableUpdate() происходит сброс буфера и собственно создание записи в исходной таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2006, 20:55 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
Hi katty_ai! 1) Во View обязательно уточни имена переменных-параметров, не ?cFam, а ?m.cFam - иначе фокс будет брать не значения твоих переменных, а поля из того-же самого курсора. 2) View замечательно работает и для ввода новых записей. Главное его правильно настроить! В частности не желательно делать обновлемыми более чем 1 таблицу (из-за того что в таком случае логика обновления заметно сложнее и простого пользователя часто вводит в тупик - он поменял в одной записи Иванова на Петрова, а ФИО поменялось во всех записях где был Иванов...) Обязательно надо указывать ключевое поле. И кроме того если значение для ключевого поля формируется программно (скажем через функцию типа NewID), то будет проще, если вызов этой функции прописать в DefaultValue для поля представления (помимо того что оно уже прописано для поля самой таблицы) - т.е. мы будем получать новое корректное значение ключа ещё ДО сохранения новой записи. Также не следует смешивать в одной форме работу с курсором LocalView и с собственно базовой таблицей (из которой этот View берёт данные) - если уж совсем никак без этого (хотя это обычно лишь недостаток опыта, а не реальная потребновть так делать) - то придётся КРАЙНЕ внимательно проверять всю последовательность действий с курсорами. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2006, 19:21 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
ВладимирМНе надо ничего специально делать и куда-то, что-то копировать. Просто сам Local View делается "обновляемым". Т.е. изменения в Local View автоматически переносятся в таблицу-источник, на основании которой этот View был построен. Для этого надо в дизайнере Local View сделать некоторые настройки на закладке Update Criteria. Ну, и несколько слов о том, что такое буферизация и как она работает во вложенном файле Владимир, скачиваемый файл не открываеться, пишет что поврежден. Можно другую ссылочку дать, хотелось бы почитать. И можно по подробнее, а каких некоторых настройках на закладке Update Criteria вы говорите... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 18:18 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
Владимир, скажите пожалуйста, где можно найти инфу (статьи ваши, если есть) по LV, а то на http://www.foxclub.ru/ в статьях нету этого, а здесь на форуме не могу найти то, что меня интересует. Заранее благодарен. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 18:37 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
Да не может быть! А это все кто написАл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 18:50 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
AdicВладимир, скачиваемый файл не открываеться, пишет что поврежден. Можно другую ссылочку дать, хотелось бы почитать. Здесь (в этой теме) приложен файл TXT. Это вообще не архив. Его не надо открывать архиватором. Читайте напрямую в блокноте (Notepad) или любым имеющимся текстовым редактором. Только что скачал без проблем. AdicИ можно по подробнее, а каких некоторых настройках на закладке Update Criteria вы говорите... Сделайте поиск по этому форуму по словам "Update Criteria". Много раз приводились и писались. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 19:33 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
ВладимирМ Спасибо за ответ ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2006, 15:11 |
|
||
|
Как указать, что в представлении ничего не отобрано?
|
|||
|---|---|---|---|
|
#18+
У меня очередной вопрос. Обновление/добавление проходит нормально. А как бы мне сделать, чтобы после того, как данные добавились, у меня textbox-ы формы, к которой привязан view очищались? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2006, 11:54 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=255&tid=1591595]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 221ms |
| total: | 381ms |

| 0 / 0 |
