Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
Пишу:DO FORM 'c:\devstudio\vfp\texn_praktika\иии.scx' не получается Подскажите пожалуйста, а как еще можно, нажав на кнопку в одной форме открыть вторую? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 12:52 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
Очень подробно это написано здесь http://www.foxclub.ru/kb/index.php?sid=40248&aktion=artikel&rubrik=004&id=4&lang=ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2004, 13:20 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
ВладимирМ, большое спасибо тебе!!! У меня получилось. Всего тебе наилучшего!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2004, 10:16 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
Умные люди!!! Ау!!! Подскажите пожалуйста! Есть таблицы с названиями "Педагогический совет", "Методический совет", "Редакционный совет"; в каждой из которых представлены следующие поля: -номер совета (тип:целое) -дата заседания (тип:дата) -тема заседания (тип:символьный) -перечень вопросов (тип:мемо) -ФИО выступающих (тип:мемо) Таблицы связаны с таблицей "Перечень советов" с полями: -номер совета (тип:целое) -название совета (тип:символьный) Необходимо составить запросы: -появляется диалоговое окно "введите дату совета" , пользователь вводит дату, а затем выводится вся информация из всех этих таблиц, т.е. информация о советах(номере, теме,перечне вопросов, введенной дате), которые проходили именно в этот день, месяц, год (типа как в ACCESS запрос с параметром) -появляется диалоговое окно "введите ФИО выступающего" , пользователь вводит ФИО в диалоговое окно , а затем выводится вся информация из всех таблиц, где он встречается, по всем советам. Заранее всем СПАСИБО!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2004, 12:39 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
Подскажите, пожалуйста, какую команду надо применить, чтобы щелкнув на кнопке в форме открылся отчет, созданный на таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 13:29 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
Отчет запускается командой вида: REPORT FORM MyReport.frx TO PRINTER PROMPT PREVIEW Разумеется, отчет MyReport.frx должен быть создан заранее. Впрочем, если предполагается выполнить отчет только по одной таблице, то можно создать отчет "на лету" CREATE REPORT MyReport FROM MyTable.dbf REPORT FORM MyReport.frx TO PRINTER PROMPT PREVIEW При этом таблица MyTable.dbf должна быть закрыта перед подачей команды CREATE REPORT Для ввода параметра, начиная с версии VFP7 используется функция (если не ошибаюсь) INPUTBOX() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2004, 15:01 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
БОЛЬШОЕ СПАСИБО ЗА ВСЕ, ВладимирМ !!! Этот вопрос исчерпан. Была бы очень рада, если бы Вы помогли мне с запросами (см. выше) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2004, 13:10 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
Запрос, вобщем-то элементарный. Делается 3 отдельных запроса объединенный по UNION ALL. Примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. С INPUTBOX() я мог и напутать. У меня VFP6SP5. Но общий принцип именно такой. Если в итоговой таблице нужно больше полей, то "добавь по вкусу" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 10:37 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
ВладимирМ ! Действительно у нас не понимает INPUTBOX; выходит сообщение, что файл с таким именем не существует. Подскажи, что можно сделать, может можно обойтись без этого слова или заменить его другим? У нас foxpro v.5.0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 15:21 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
Ну так сделайте простую модальную формочку с единственным TextBox. Для особо непонятливых пользователей можно добавить на эту формочку 2 кнопки "Ok", "Отмена". Ну, и далее как и было написано: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 15:37 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
Распиши, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 15:58 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
-) Создаете в дезайнере форм новую форму -) Установи модальность этой формы (свойство WindowType=1 - Modal) -) Подкорректируй заголовок этой формы Caption = "Введите дату" -) В этой форме надо добавить новое свойство (пункт главного меню Form, подпункт "new Property" или подпункт "edit Property\Method") с именем, например, ReturnValue. Это свойство будет содержать возвращаемое из формы значение. -) В свойствах формы теперь появится это новое свойство ReturnValue (самое последнее в списке свойств). Чтобы указать, что это свойство имеет тип Date, надо ввести прямо в окне свойств формы его значение как {} (подряд 2 фигурные скобки) -) В методе Unload-самой формы надо написать такую строку RETURN ThisForm.ReturnValue -) На форму кладешь объект TextBox и в его свойстве Value прописываешь такое выражение =Date() Знак равенства обазательно нужен -) На форму кладешь кнопку в свойствах которой делаешь присвоения Caption = "Ok" В событии Click этой кнопки пишешь ThisForm.ReturnValue = This.Value -) На форму кладешь еще одну кнопку в свойствах которой пишешь Caption = "Отмена" Cancel = .T. В событии Click этой кнопки пишешь ThisForm.Release() Все. Сохраняешь эту форму и далее как уже было написано: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 16:18 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
Да, забыл, что в кнопке "Ok" также надо дописать последней командой ThisForm.Release() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 16:20 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
Опять промахнулся Событие Click конпки "Ok" ThisForm.ReturnValue = ThisForm.Text1.Value ThisForm.Release() Здесь Text1 - это имя того TextBox в котором вводится значение пользователем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 16:23 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
Я все сделала, как ты сказал. Но при выполнении: Код: plaintext 1. 2. 3. 4. Подскажи, пожалуйста, в чем дело? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 17:16 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
У меня пальцы иногда не поспевают за мыслями Поэтому желательно все-таки читать HELP для проверки синтаксической корректности команд. В частности, для вызова формы нужно DO FORM, а не как здесь DO FROM всего 2 буквы местами поменялось - и вот такая неприятность :(( В качестве имени формы в данной команде надо указывать имя ФАЙЛА с расширением SCX, а не значение свойства Name-формы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 17:28 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
ВладимирМ, почему-то при выполнении запроса появляется пустая таблица, хотя я ввожу дату, которая есть в одном из советов. По идее он должен выводить дату и название этого совета? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 18:28 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
Ну, так отлаживаться надо. Мало ли где, что забыли ввести. 1) Посмотрите какая дата возвращается из формы ... ENDIF MessageBox(DTOC(ldFromDate)) 2) Выполните приведенный запрос отдельно явно указав какую-либо дату, заведомо меньшую даты существующей записи. Например: ... ENDIF ldFromDate={^2004-01-01} 3) Выполните каждый из запросов объединенных по UNION ALL отдельно от других 4) У меня в коде стоит объединение по INNER JOIN - это значит, что если в таблице названия совета не указан [номер совета] или же указан не существующий в таблице [названий советов] [номер совета], то такая запись не попадет в выборку. Возможно, имеет смысл сделать объединение по LEFT JOIN Т.е. причин много. Но раз сам запрос выполнился, то причина именно в условиях отбора. Вот на эти условия и надо смотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 18:37 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
ВладимирМ, я поняла в чем дело. Просто я ввожу в форме например:02/04/2004, а у нас в таблице такой формат даты:02/04/04; поэтому он и не понимает. Как здесь быть, ведь пользователь будет вводить дату полностью (02/04/2004) и поэтому он не получит никакой информации. Что делать? Как поменять формат даты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 18:43 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
Если поле имеет формат Date, то оно поймет переменную памяти типа Date как бы она ни была введена. Другое дело, что у Вас в таблице может быть введено не то столетие. Сделайте настроку SET CENTURY ON и посмотрите через команду BROWSE содержимое Вашей таблицы. Скорее всего, дата 02/04/04 окажется датой 02/04/1904. Дело в том, что по умолчанию в версиях до VFP5 включительно, если столетие при вводе даты не указывалось явно, то оно устанавливалось как 1900+введенное число. В таблицах дата хранится с указанием столетия. Начиная с версии VFP6 цифру столетия по умолчанию можно было уже настривать. Вариантов у Вас 2: 1) Привести все даты в базе данных в "нормальный" вид, явно указав столетие: select MyTable REPLACE [дата] WITH GoMonth([дата],12*100) ; FOR BETWEEN([дата],1900,1950) 2) Уменьшать введенное значение на 100 лет ldFromDate = GoMonth(m.ldFromDate,-12*100) Я бы посоветовал все-таки привести базу данных в нормальное состояние и при вводе дат обязательно делать настройку SET CENTURY ON чтобы пользователи вводили 4 цифры года (ну, или самостоятельно контролировать ввод автоматически поправляя столетия). Контроль ввода можно повесить на RULE соответсвующего поля или записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2004, 19:03 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
ВладимирМ, подскажи, а где это : Код: plaintext 1. 2. или это Код: plaintext Я записывала это в предудущий запрос, он у меня выполнялся, но дату не изменял, т.е. по умолчанию все равно стоял 1904 год. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 14:56 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
Я так понял, что опыта программирования у Вас вообще нет никакого. Ладно, напишите условие отбора в SQL-запросе в таком виде: Код: plaintext Т.е. везде в запросе строку WHERE замените на эту строку. Это не очень хорошее решение, но позволяет получить то, что Вам нужно. Обрати внимание, что функция именно DTOS() (на конце латинская S). Не надо путать ее с DTOC() (на конце C) иначе будет совершенно разный результат. Что собственно я предлагал сделать. Я предлагал сделать одну из следующих операций: 1) Провести разовую операцию приведения дат в базе данных в "нормальное" состояние. Это можно сделать написав отдельную процедурку или напрямую в командном окне 2) Исходя из предположения, что все даты имеют 19 столетие, а вводимая пользователем дата 20 столетие вычесть из даты введенной пользователем 100 лет. Эту операцию следует производить сразу после того, как значение переменной ldFromDate уже окончательно сформировано, но запрос еще не начал выполняться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 15:23 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
Ты прав, я очень плохо разбираюсь в этой программе. Я студентка и я сейчас на практике. Мне дали разработать программный продукт в базе данных и лучше всего в foxpro, хотя мы проходили эту программу мимолетом, т.е. почти совершенно не программируя в ней. Извини, что тебя так сильно загружаю. Если честно, мне очень стыдно! Но ты такой умный и понимающий человек. СПАСИБО. А мне так и писать, как ты подсказал: WHERE SubStr(DTOS(a.[дата заседания]),3)>=SubStr(DTOS(m.ldFromDate),3) Честно говоря, я не понимаю, что это за 3) Объясни, пожалуйста. А программа не понимает эту строку и пишет "неизвестная команда" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 16:02 |
|
||
|
кнопочные формы
|
|||
|---|---|---|---|
|
#18+
DTOS(m.ldFromDate) - это функция преобразования даты в символьную строку в таком формате: "20041231" SubStr() - это функция выделения фрагмента строки. Второй параметр - это начиная с какого символа надо начать выделение, а третий параметр - сколько символов надо взять. Если третий параметр опущен, то берется до конца строки. Т.е. я отсекаю от строки цифру столетия и получается строка вида: "041231" Возможно, в VFP5 требуется более строгий синтаксис. Т.е. обязательное указание 3 параметра. Тогда напиши так: Код: plaintext или так Код: plaintext RIGHT() - это выделение из строки указанного количества символов с правого края. Поскольку речь идет о дате, то надо взять 6 символов Правда, это сработает, если нет дат типа 01.01.1998, поскольку в противном случае нарушится условие сравнения: "980101">="040101" Т.е. в выборку будут всегда попадать записи с датой до 01.01.00 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2004, 16:35 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32520889&tid=1596547]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
84ms |
get tp. blocked users: |
2ms |
| others: | 235ms |
| total: | 423ms |

| 0 / 0 |
