powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Курсовая почти готова! Помогите, пожалуйста!
18 сообщений из 18, страница 1 из 1
Курсовая почти готова! Помогите, пожалуйста!
    #33948566
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пацаны! Помогите, пожалуйста, мне осталось совсем немного и курсовая будет сделана! Конечно, некоторые мои затруднения вам покажутся черезчур позорными, но всё же помогите, пожалуйста. Вот, в чём я затрудняюсь.1) Скажите, пожалуйста, как сделать проверку БД на одинаковые записи (не всё сразу, а по полям. Например, по полю места в гостинице и фамилии). Мне право очень стыдно, что я до сих пор этого не знаю, но я искал и в инете, и в книге, но, к сожалению, не нашёл.2) Скажите, пожалуйста, как сделать выбор всех постояльцев, отъезжающих сегодня. Я нашёл про это в книге на стр. 204, но ничего не понял. 3) Мне всё никак не даёт покоя в этой програмке:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
********************************************************************************
****************** Работа с БД гостей ***************
close data
*SET DEFAULT TO C:\kr
set talk on
sele a
use guests.dbf
push key clea
defi wind gosti from  1 , 00  to  18 , 79 ; 
titl '<<< Список гостей >>>';
foot 'F3-поиск F5-добавить F8-удалить  F7-редактировать Esc-выход 'color w,r/br,gr+/rb+,gr+/br 
acti wind gosti

public Continue_search && глобальная переменная для продолжения поиска
Continue_search=.f. && поиск пока не продолжаем
Public last_search  && глобальная переменная для сохранения последнего поиска
last_search= 0       && пока поиска не было / новый поиск

*select guests.dbf
define menu m color gr/bg,r/bg,gr/bg,gr/bg,gr+/w,rb/w,gr+/bg
set defa to c:\kurs
define pad kvi of m prompt'\<Квитанция' at  20 , 0 ;
message 'Просмотр квитанции гостя.'
define pad poi of m prompt'\<Поиск' at  20 , 10 ;
message 'Поиск гостя по определённому признаку.'
define pad dob of m prompt'\<Добавить' at  20 , 16 ;
message 'Добавление гостя в БД.'
define pad red of m prompt'\<Редактировать' at  20 , 25 ;
message 'Редактирование БД гостя.'
define pad del of m prompt'\<Удалить' at  20 , 39 ;
message 'Удаление БД гостя.'

on selection pad kvi of m do kvit
on selection pad poi of m do poisk
on selection pad dob of m do red_v 
on selection pad red of m do dob
on selection pad del of m do del

on key labe f2 do kvit
on key labe f3 do poisk
on key labe f7 do red_v
on key labe f5 do dob
*on key labe F10 do keyboard '{Ctrl+END}' do_vih 
on key labe F8 do del
on key labe F9 do vib
on key labe HOME go top
on key labe END go bott
pack 
r=recno()
proc br
browse;
    field  t=iif(r=recno(),'>',' '):h=' ',;
           mes:h='Место': 5 ,;
           fam:h='ФИО': 15 ,;
           pol:h='Пол': 3 ,;
           pas:h='ь паспорта': 10 ,;
           pri:h='Дата приб.': 10 ,;
           otb:h='Дата отб.': 10 ,;
           opl:h='Оплач. до': 10 ,;
           num:h='ь гостя': 7 ;
           noed noap nodel in wind gosti when ttt() 

rele wind gosti
set deleted on
on key labe f3
on key labe f5
on key labe f7
on key labe f10
on key labe F8
on key labe HOME
on key labe END
clos data
 on key labe F1 do HELP.PRG
retu
********************************************************************************
****************** Процедура выбора всех постояльцев, отъезжающих сегодня*******
proc vib
push key clear
if date()=opl
   r=recno()
endif
return
********************************************************************************
****************** Процедура ввода записей БД гостей ***************
proc dob
push key clear
defi wind dobav from  4 , 8  to  17 , 70 ; 
titl '<<< Характеристики нового гостя >>>'foot 'Выход - Esc' color , , W+/B,W+/B,W+/B 
acti wind dobav
dime s( 8 )
store space( 5 ) to s( 1 )
store space( 20 ) to s( 2 )
store space( 1 ) to s( 3 )
store space( 10 ) to s( 4 )
store space( 10 ) to s( 5 )
store space( 10 ) to s( 6 )
store space( 10 ) to s( 7 )
store space( 2 ) to s( 8 )
if eof()
s( 1 )= 1 
else
go BOTTOM
endif
@  1 , 0  say'Место'
@  2 , 0  say'ФИО'
@  3 , 0  say'Пол'
@  4 , 0  say'Номер паспорта'
@  5 , 0  say'Дата приезда'
@  6 , 0  say'Дата отъезда'
@  7 , 0  say'Оплачено до'
@  8 , 0  say'Номер'

@  1 , 20  get s( 1 ) pict'99999'
@  2 , 20  get s( 2 ) pict'xxxxxxxxxxxxxxxxxxxx' 
@  3 , 20  get s( 3 ) pict'x'
@  4 , 20  get s( 4 ) pict'9999999999'
@  5 , 20  get s( 5 ) pict'99.99.9999' 
@  6 , 20  get s( 6 ) pict'99.99.9999'
@  7 , 20  get s( 7 ) pict'99.99.9999'
@  8 , 20  get s( 8 ) pict'99'

a= 0 
b= 0 
@  10 , 10  GET A FUNC '*   OK' 
@  10 , 20  GET B FUNC '*  Отмена' 
read cycle 
if a= 1 
append blank
gather from s
ENDIF
rele wind dobav
pop key
return
********************************************************************************
****************** Процедура редактирования записей БД продуктов ***************
proc red_v
if !eof()
push key clear
defi wind red from  4 , 8  to  17 , 50 ; 
titl '<<< Редактирование гостя >>>'foot 'Выход - Esc' color , , W+/B,W+/B,W+/B
acti wind red
dime s( 8 )
s( 1 )=mes
s( 2 )=fam
s( 3 )=pol
s( 4 )=pas
s( 5 )=pri
s( 6 )=otb
s( 7 )=opl
s( 8 )=num
@  1 , 0  say'Место'
@  2 , 0  say'ФИО'
@  3 , 0  say'Пол'
@  4 , 0  say'Номер паспорта'
@  5 , 0  say'Дата приезда'
@  6 , 0  say'Дата отъезда'
@  7 , 0  say'Оплачено до'
@  8 , 0  say'Номер'

@  1 , 20  get s( 1 ) pict'99999'
@  2 , 20  get s( 2 ) pict'xxxxxxxxxxxxxxxxxxxx' 
@  3 , 20  get s( 3 ) pict'x'
@  4 , 20  get s( 4 ) pict'9999999999'
@  5 , 20  get s( 5 ) pict'99.99.9999' 
@  6 , 20  get s( 6 ) pict'99.99.9999'
@  7 , 20  get s( 7 ) pict'99.99.9999'
@  8 , 20  get s( 8 ) pict'99'

a= 0 
b= 0 
@  10 , 10  GET A FUNC '*   OK' 
@  10 , 20  GET B FUNC '*  Отмена' 
read cycle 
if a= 1 
gather from s
ENDIF
rele wind red
pop key
endif
return
********************************************************************************
****************** Процедура удаления записей БД  ***************
proc del
if !eof()
push key clear
define window vnc from  10 , 23  to  15 , 50   title '"ВHИМАHИЕ"';
shad doub color r+/b,n/n,rb/bg+ 
ACTI WIND vnc
A= 0 
B= 0 
@  0 , 05  SAY ' УДАЛИТЬ ЗАПИСЬ' 
@  2 , 03  GET A FUNC '*   OK' 
@  2 , 13  GET B FUNC '*  Отмена' 
READ
IF a= 1 
delete
endif
rele wind vnc
pop key
endif
return
******************************************************************
          **** Процедура поиска ****
procedure poisk
define window find from  1 , 1  to  13 , 30 ;
title ' Поиск гостей ' foot 'Esc - Выход' 

defi wind mes from  18 , 20  to  23 , 70  ;
title " Пaрaмeтpы поискa " ;
foot 'Esc - Выход'
if Last_search= 0 
  acti wind find
  @  1 , 9  say'Искать по:'
  @  3 , 5  get k function"*RVT ;
  Месту в гостинице;Фамилии;Дате прибытия;Дате отбытия;Дате оплаты;Отмена";
  DEFAULT  1 
  read
  Last_search=k
  select guests
  r=recno()
  go top
  deactivate window find
else
  k=last_search
  select guests
endif

acti wind mes
do case
   case k= 1 
       store SPACE( 5 ) to U
       @  1 , 1  say'Введите место гостя:' get U  picture  ('99999')
       read
       deactivate wind mes
       locate rest for mes==U 
       if found()
         r=recno()
       else
         wait window nowait "Поиск не дал результатов!!!"
         go r
       endif
   case k= 2 
       store SPACE( 20 ) to U
       @  1 , 1  say 'Введите ФИО гостя:';
             get U  picture  ('xxxxxxxxxxxxxxxxxxxx')
       read
       deactivate wind mes
       locate rest for fam==U 
       if found()
         r=recno()
       else
         wait window nowait "Поиск не дал результатов!!!"
         go r
       endif
   case k= 3 
       store Ctod("") to U
       @  1 , 1  say'Введите дату прибытия гостя:';
             get U  picture  ('99.99.9999')
       read
       deactivate wind mes
       locate rest for pri==U 
       if found()
         r=recno()
       else
         wait window nowait "Поиск не дал результатов!!!"
         go r
       endif
   case k= 4 
       store ctod("") to U
       @  1 , 1  say'Введите дату отбытия гостя:';
             get U  picture  ('99.99.9999')
       read
       deactivate wind mes
       locate rest for otb==U 
       if found()
         r=recno()
       else
         wait window nowait "Поиск не дал результатов!!!"
         go r
       endif
   case k= 5 
       store ctod("") to U
       @  1 , 1  say'Введите дату оплаты гостя:';
             get U  picture  ('99.99.9999')
       read
       deactivate wind mes
       locate rest for opl==U 
       if found()
         r=recno()
       else
         wait window nowait "Поиск не дал результатов!!!"
         go r
       endif
   case k= 6 
       deacti wind find,mes
       Last_search= 0 
endcase
release windows find,mes
r=recno()
*massage 'Для продолжения поиска нажмите ctrl+e.' 
*read
*do wixod 
on key labe ctrl+e do wixod
retu

procedure wixod
push key clear
define window vopros from  5 , 20  to  10 , 70 
activate window vopros
@  1 , 17  say "Продолжить поиск?"
@  3 , 1  get v function "*RHT Продолжить; Новый поиск; Завершить" default  1 
read
deactivate window vopros
do case
   case v= 1  
     if !Continue_search
       Continue_search=.t.
       Last_search= 0 
     endif
       do poisk
   case v= 2     
      Continue_search=.t.
      Last_search= 0 
      do poisk
   case v= 3 
      Continue_search=.t.
      Last_search= 0 
endcase
release window vopros
return

FUNCTION ttt &&-----------ФУНКЦИЯ обновления курсора 
r=RECNO() 
SHOW WINDOW gosti REFRESH 
RETURN      

procedure kvit
defi wind kvit from  4 , 8  to  17 , 60 ; 
titl '<<< Квитанция оплаты >>>'foot 'Выход - Esc' color , , W+/B,W+/B,W+/B
acti wind kvit
dime s( 4 )
s( 1 )=fam
s( 2 )=mes
s( 3 )=pri
s( 4 )=otb
@  1 , 16  say'проживает в'
@  1 , 36  say'номере.'
@  2 , 0   say'Дата оплаты номера:'
@  3 , 0   say'с'
@  3 , 13  say'до'

@  1 , 0   get s( 1 ) pict 'xxxxxxxxxxxxxxx' 
@  1 , 28  get s( 2 ) pict '99999'
@  3 , 02  get s( 3 ) pict '99.99.9999'
@  3 , 16  get s( 4 ) pict '99.99.9999'
return
запись внизу окна списка гостей. Извините, не помню как она называется... Так вот. Я хочу, чтобы эта запись была кнопками. Я пытался в отдельном окне их сделать, но вместо этого при запуске программы, появляются два пустых окна. И если сделать второе окно активным, то первое исчезает. В приведённом варианте программы, я сделал, чтобы кнопки были внизу экрана. Но кнопок почему-то нет. И, если программу запустить отдельно, то записей не будет, а если из главной программы, то на этом окне ещё будут кнопки, которые у меня на заставке "Гостиница". Скажите, пожалуйста, можно ли как-нибудь расширить это окно, чтобы был пустой промежуток и в этот промежуток влепить кнопки или, чтобы в отдельном окне были кнопки, и, чтобы первое окно не закрывалось при работе со вторым.
Это всё! Помогите мне, пожалуйста, и курсовую я сделаю полностью!
...
Рейтинг: 0 / 0
Курсовая почти готова! Помогите, пожалуйста!
    #33950987
olegov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Етиттвою мать, эт в каком долбаном институте такому бреду учат. Так уже сто лет на фоксе никто ничего не пишет, эт что на фоксе 2.6 или Dbase IV ? Дурдом какой-то. По выборкам читай общую концепцию построения SQL запросов, Не стану вникать в то что ты написал (често говоря чего ты хочешь в конце поста я вообще не понял).

Выбрать всех отезжающих сегодня

select * from table where dateout=date()

Выбрать повторяющиеся по номеру комноты можно

1. двумя запросами

select sum(1) as itog, komnota from table group by komnota into 'table1'
select * from table1 where itog>1

2. или одним
select sum(1), komnota from table group by komnota having sum(1)>1

ну и т.д.
...
Рейтинг: 0 / 0
Курсовая почти готова! Помогите, пожалуйста!
    #33951268
foxwizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegovЕтиттвою мать, эт в каком долбаном институте такому бреду учат. Так уже сто лет на фоксе никто ничего не пишет, эт что на фоксе 2.6 или Dbase IV ? Дурдом какой-то.
Ет. точно.
Решил тут на старости лет универ закончить.
ТАКОЕ преподают!!! Отстали от жизни лет на 15.
...
Рейтинг: 0 / 0
Курсовая почти готова! Помогите, пожалуйста!
    #33951431
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://diary.ru/~geraldine/?comments&postid=16443952

дали вчера ссылку

я не смеялся, народ спросил - почему??

тоже самое было в универе
на информатике

перс.комп состоит из корпуса, монитора, клавиатуры ...

еле на 4 сдал экзамен, пипец
...
Рейтинг: 0 / 0
Курсовая почти готова! Помогите, пожалуйста!
    #33952616
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegovЕтиттвою мать, эт в каком долбаном институте такому бреду учат.Приезжай в Барнаул, походи в АЛТГТУ хотябы месяц!!! И ты ещё не так заговоришь! olegovТак уже сто лет на фоксе никто ничего не пишет, эт что на фоксе 2.6 или Dbase IV ? Дурдом какой-то.Дело в том, что меня никто и не учил! Лекций и консультаций по Фоксу не было! Эту курсовую могли сделать только те, кто раньше учился в другом институте и изучал Фокс! Благо в моей группе есть пацан, который, по словам препода, очень хорошо её сделал и мне досталась его курсовая. Я её переделываю под свою, взяв кое-что из других программ, которые мне дали. Книг по Фоксу никаких нет! Только электронная и одна единственная в институте, которую можно взять в залог на несколько дней, а потом платить за неё после прохождения срока. olegovВыбрать всех отезжающих сегодня

select * from table where dateout=date()

Выбрать повторяющиеся по номеру комноты можно

1. двумя запросами

select sum(1) as itog, komnota from table group by komnota into 'table1'
select * from table1 where itog>1

2. или одним
select sum(1), komnota from table group by komnota having sum(1)>1

ну и т.д.Спасибо большое! Сейчас попробую! olegovНе стану вникать в то что ты написал (често говоря чего ты хочешь в конце поста я вообще не понял).Ты не понял про кнопки, да? Попробую спросить по другому. В вышеопубликованной программе, я хочу вот эту запись:
Код: plaintext
foot 'F3-поиск F5-добавить F8-удалить  F7-редактировать Esc-выход '
сделать кнопками, т.е., чтобы была кнопка "Поиск", "Добавить" и т.д. Для этого я взял из другой программы участок, в котором как раз описывается определение кнопок. Подкорректировал его и вот, что у меня получилось:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
define menu m in screen color gr/bg,r/bg,gr/bg,gr/bg,gr+/w,rb/w,gr+/bg
set defa to c:\kurs
define pad kvi of m prompt'\<Квитанция' at  20 , 0 ;
message 'Просмотр квитанции гостя.'
define pad poi of m prompt'\<Поиск' at  20 , 10 ;
message 'Поиск гостя по определённому признаку.'
define pad dob of m prompt'\<Добавить' at  20 , 16 ;
message 'Добавление гостя в БД.'
define pad red of m prompt'\<Редактировать' at  20 , 25 ;
message 'Редактирование БД гостя.'
define pad del of m prompt'\<Удалить' at  20 , 39 ;
message 'Удаление БД гостя.'

on selection pad kvi of m do kvit
on selection pad poi of m do poisk
on selection pad dob of m do red_v 
on selection pad red of m do dob
on selection pad del of m do del
Но кнопки у меня не появлялись. И сейчас я понял почему. Потому что я не написал acti menu m ! Написав это после активирования окна gosti, у меня кнопки появились. Но они исчезают, когда у меня активно окно. Скажите, пожалуйста, можно ли сделать так, чтобы у меня кнопки не исчезали? Повторюсь, я делал кнопки в отдельном окне, но оно проподает, когда я активирую окна gosti.
...
Рейтинг: 0 / 0
Курсовая почти готова! Помогите, пожалуйста!
    #33953025
pitermax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тебе меню надо или кнопки?
Если кнопки смотри @ get.
Если я сам чего-то не забыл.
...
Рейтинг: 0 / 0
Курсовая почти готова! Помогите, пожалуйста!
    #33953154
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой! Меню. Или с кнопками будет проще? Если разницы нет, то скажите как сделать так, чтобы меню не пропадало.
...
Рейтинг: 0 / 0
Курсовая почти готова! Помогите, пожалуйста!
    #33953435
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olegovВыбрать всех отезжающих сегодня

select * from table where dateout=date()Т.е. процедура выбора всех постояльцев, отъезжающих сегодня выглядет следующим образом:
Код: plaintext
1.
2.
3.
4.
proc vib
push key clear
select fam from guests.dbf where opl=date()
return
Правильно? Но в этом случае при вызове процедуры у меня появляется пустое окно. Слева справа написано fam и снизу черта и справа черта, т.е. вот так:

fam |
|
-------------------------------------------------------
|
|
|
|


olegovВыбрать повторяющиеся по номеру комноты можно

1. двумя запросами

select sum(1) as itog, komnota from table group by komnota into 'table1'
select * from table1 where itog>1

2. или одним
select sum(1), komnota from table group by komnota having sum(1)>1

ну и т.д.Прошу прощения, но мне повторяющиеся места и фамилии надо не выбирать, а просто находить. Если написать словами, что я хочу сделать, то это выглядет так:

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

Ну и т.д. А с фамилиями так:

Если найдены повторяющиеся фамилии, то вывести сообщение: "Такой гость уже есть! Хотите добавить его в качестве однофамильца?".

Вот. Ну я затрудняюсь лишь в том, как сделать, чтобы программа искала повторяющие записи места и фамилии (искала, но не выделяла!), а остальное я сделаю сам. Помогите, пожалуйста!
...
Рейтинг: 0 / 0
Курсовая почти готова! Помогите, пожалуйста!
    #33953571
pitermax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используй seek()
...
Рейтинг: 0 / 0
Курсовая почти готова! Помогите, пожалуйста!
    #33954939
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А без seek()'а никак? Ведь это придётся базу индексировать и менять процедуру поиска...
...
Рейтинг: 0 / 0
Курсовая почти готова! Помогите, пожалуйста!
    #33958530
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ох-ох-ох! Решил я сделать не меню, а кнопки. Сделал. Кнопки появились, а окно "Список гостей" появляется пустым. Только написано сколько там записей и всё. Приведу отрывок программы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
defi wind kn from  19 , 00  to  23 , 79 ;
title '<<< Управление гостями >>>'
acti wind kn

@  0 , 1  get v function "*RHT Квитанция; Поиск; Добавить; Редактировать; Удалить" default  1 
@  1 , 1  get v function "*RHT Выбрать всех постояльцев, отъезжающих сегодня" default  1 
read 
select guests
r=recno()
go top
deacti window kn
do case
   case v= 1  
        do kvit
   case v= 2 
        do poisk
   case v= 3 
        do dob
   case v= 4 
        do red_v
   case v= 5 
        do del
   case v= 6 
        do vib
endcase 
Когда нажимаешь на какую-нибудь кнопку, то после появления следующего окна, окно "Управление гостями" пропадает. Например, жму на кнопку "Добавить", появляется соответсвующее окно, а окно "Управление гостями" пропадает. Скажите, пожалуйста, как сделать так, чтобы оно не пропадало. На всякий случай вот вся программа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
********************************************************************************
****************** Работа с БД гостей ***************
close data
*SET DEFAULT TO C:\kr
set talk on
sele a
use guests.dbf
push key clea

*define menu m in screen color gr/bg,r/bg,gr/bg,gr/bg,gr+/w,rb/w,gr+/bg
*set defa to c:\kurs
*define pad kvi of m prompt'\<Квитанция' at  20 , 0 ;
*message 'Просмотр квитанции гостя.'
*define pad poi of m prompt'\<Поиск' at  20 , 10 ;
*message 'Поиск гостя по определённому признаку.'
*define pad dob of m prompt'\<Добавить' at  20 , 16 ;
*message 'Добавление гостя в БД.'
*define pad red of m prompt'\<Редактировать' at  20 , 25 ;
*message 'Редактирование БД гостя.'
*define pad del of m prompt'\<Удалить' at  20 , 39 ;
*message 'Удаление БД гостя.'

*on selection pad kvi of m do kvit
*on selection pad poi of m do poisk
*on selection pad dob of m do red_v
*on selection pad red of m do dob
*on selection pad del of m do del

defi wind gosti from  1 , 00  to  18 , 79 ; 
title '<<< Список гостей >>>';
foot 'F3-поиск F5-добавить F8-удалить  F7-редактировать Esc-выход 'color w,r/br,gr+/rb+,gr+/br 
acti wind gosti

public Continue_search && глобальная переменная для продолжения поиска
Continue_search=.f. && поиск пока не продолжаем
Public last_search  && глобальная переменная для сохранения последнего поиска
last_search= 0       && пока поиска не было / новый поиск

defi wind kn from  19 , 00  to  23 , 79 ;
title '<<< Управление гостями >>>'
acti wind kn

@  0 , 1  get v function "*RHT Квитанция; Поиск; Добавить; Редактировать; Удалить" default  1 
@  1 , 1  get v function "*RHT Выбрать всех постояльцев, отъезжающих сегодня" default  1 
read 
select guests
r=recno()
go top
deacti window kn
do case
   case v= 1  
        do kvit
   case v= 2 
        do poisk
   case v= 3 
        do dob
   case v= 4 
        do red_v
   case v= 5 
        do del
   case v= 6 
        do vib
endcase 

on key labe f2 do kvit
on key labe f3 do poisk
on key labe f7 do red_v
on key labe f5 do dob
*on key labe F10 do keyboard '{Ctrl+END}' do_vih 
on key labe F8 do del
on key labe F9 do vib
on key labe HOME go top
on key labe END go bott
pack 
r=recno()
browse;
    field  t=iif(r=recno(),'>',' '):h=' ',;
           mes:h='Место': 5 ,;
           fam:h='ФИО': 15 ,;
           pol:h='Пол': 3 ,;
           pas:h='ь паспорта': 10 ,;
           pri:h='Дата приб.': 10 ,;
           otb:h='Дата отб.': 10 ,;
           opl:h='Оплач. до': 10 ,;
           num:h='ь гостя': 7 ;
           noed noap nodel in wind gosti when ttt() 

set deleted on
on key labe f3
on key labe f5
on key labe f7
on key labe f10
on key labe F8
on key labe HOME
on key labe END
clos data
 on key labe F1 do HELP.PRG
retu
********************************************************************************
****************** Процедура выбора всех постояльцев, отъезжающих сегодня*******
proc vib
push key clear
select fam from guests.dbf where otb=date()
return
********************************************************************************
****************** Процедура ввода записей БД гостей ***************
proc dob
push key clear
defi wind dobav from  4 , 8  to  17 , 70 ; 
titl '<<< Характеристики нового гостя >>>'foot 'Выход - Esc' color , , W+/B,W+/B,W+/B 
acti wind dobav
dime s( 8 )
store space( 5 ) to s( 1 )
store space( 20 ) to s( 2 )
store space( 1 ) to s( 3 )
store space( 10 ) to s( 4 )
store space( 10 ) to s( 5 )
store space( 10 ) to s( 6 )
store space( 10 ) to s( 7 )
store space( 2 ) to s( 8 )
if eof()
s( 1 )= 1 
else
go BOTTOM
endif
@  1 , 0  say'Место'
@  2 , 0  say'ФИО'
@  3 , 0  say'Пол'
@  4 , 0  say'Номер паспорта'
@  5 , 0  say'Дата приезда'
@  6 , 0  say'Дата отъезда'
@  7 , 0  say'Оплачено до'
@  8 , 0  say'Номер'

@  1 , 20  get s( 1 ) pict'99999'
@  2 , 20  get s( 2 ) pict'xxxxxxxxxxxxxxxxxxxx' 
@  3 , 20  get s( 3 ) pict'x'
@  4 , 20  get s( 4 ) pict'9999999999'
@  5 , 20  get s( 5 ) pict'99.99.9999' 
@  6 , 20  get s( 6 ) pict'99.99.9999'
@  7 , 20  get s( 7 ) pict'99.99.9999'
@  8 , 20  get s( 8 ) pict'99'

a= 0 
b= 0 
@  10 , 10  GET A FUNC '*   OK' 
@  10 , 20  GET B FUNC '*  Отмена' 
read cycle 
if a= 1 
   if (s( 1 )=mes and date()>opl)
      defi wind w from  10 , 23  to  15 , 90 ;
      title '<<< ВНИМАНИЕ!!! >>>'
      acti wind w
   
      @  0 , 1  say 'В этом месте раньше проживал "+fam+"!"
      @ 1,1 say 'Хотите, чтобы здесь жил новый гость?"
      a=0
      b=0
      @ 3,10 GET A FUNC '*   Да' 
      @ 3,20 GET B FUNC '*  Нет'
      read cycle 
   
      if a=1
         gather from s
      ENDIF
   endif

   append blank
   gather from s
ENDIF
rele wind dobav
pop key
return
********************************************************************************
****************** Процедура редактирования записей БД продуктов ***************
proc red_v
if !eof()
push key clear
defi wind red from 4,8 to 17,50; 
titl '<<< Редактирование гостя >>>'foot 'Выход - Esc' color , , W+/B,W+/B,W+/B
acti wind red
dime s(8)
s(1)=mes
s(2)=fam
s(3)=pol
s(4)=pas
s(5)=pri
s(6)=otb
s(7)=opl
s(8)=num
@ 1,0 say'Место'
@ 2,0 say'ФИО'
@ 3,0 say'Пол'
@ 4,0 say'Номер паспорта'
@ 5,0 say'Дата приезда'
@ 6,0 say'Дата отъезда'
@ 7,0 say'Оплачено до'
@ 8,0 say'Номер'

@ 1,20 get s(1) pict'99999'
@ 2,20 get s(2) pict'xxxxxxxxxxxxxxxxxxxx' 
@ 3,20 get s(3) pict'x'
@ 4,20 get s(4) pict'9999999999'
@ 5,20 get s(5) pict'99.99.9999' 
@ 6,20 get s(6) pict'99.99.9999'
@ 7,20 get s(7) pict'99.99.9999'
@ 8,20 get s(8) pict'99'

a=0
b=0
@ 10,10 GET A FUNC '*   OK' 
@ 10,20 GET B FUNC '*  Отмена' 
read cycle 
if a=1
gather from s
ENDIF
rele wind red
pop key
endif
return
********************************************************************************
****************** Процедура удаления записей БД  ***************
proc del
if !eof()
push key clear
define window vnc from 10,23 to 15,50  title '"ВHИМАHИЕ"';
shad doub color r+/b,n/n,rb/bg+ 
ACTI WIND vnc
A=0
B=0
@ 0,05 SAY ' УДАЛИТЬ ЗАПИСЬ' 
@ 2,03 GET A FUNC '*   Да' 
@ 2,13 GET B FUNC '*  Нет' 
READ
IF a=1
delete
endif
rele wind vnc
pop key
endif
return
******************************************************************
          **** Процедура поиска ****
procedure poisk
define window find from 1,1 to 13,30;
title ' Поиск гостей ' foot 'Esc - Выход' 

defi wind mes from 18,20 to 23,70 ;
title " Пaрaмeтpы поискa " ;
foot 'Esc - Выход'
if Last_search=0
  acti wind find
  @ 1,9 say'Искать по:'
  @ 3,5 get k function"*RVT ;
  Месту в гостинице;Фамилии;Дате прибытия;Дате отбытия;Дате оплаты;Отмена";
  DEFAULT 1
  read
  Last_search=k
  select guests
  r=recno()
  go top
  deactivate window find
else
  k=last_search
  select guests
endif

acti wind mes
do case
   case k=1
       store SPACE(5) to U
       @ 1,1 say'Введите место гостя:' get U  picture  ('99999')
       read
       deactivate wind mes
       locate rest for mes==U 
       if found()
         r=recno()
       else
         wait window nowait "Поиск не дал результатов!!!"
         go r
       endif
   case k=2
       store SPACE(20) to U
       @ 1,1 say 'Введите ФИО гостя:';
             get U  picture  ('xxxxxxxxxxxxxxxxxxxx')
       read
       deactivate wind mes
       locate rest for fam==U 
       if found()
         r=recno()
       else
         wait window nowait "Поиск не дал результатов!!!"
         go r
       endif
   case k=3
       store Ctod("") to U
       @ 1,1 say'Введите дату прибытия гостя:';
             get U  picture  ('99.99.9999')
       read
       deactivate wind mes
       locate rest for pri==U 
       if found()
         r=recno()
       else
         wait window nowait "Поиск не дал результатов!!!"
         go r
       endif
   case k=4
       store ctod("") to U
       @ 1,1 say'Введите дату отбытия гостя:';
             get U  picture  ('99.99.9999')
       read
       deactivate wind mes
       locate rest for otb==U 
       if found()
         r=recno()
       else
         wait window nowait "Поиск не дал результатов!!!"
         go r
       endif
   case k=5
       store ctod("") to U
       @ 1,1 say'Введите дату оплаты гостя:';
             get U  picture  ('99.99.9999')
       read
       deactivate wind mes
       locate rest for opl==U 
       if found()
         r=recno()
       else
         wait window nowait "Поиск не дал результатов!!!"
         go r
       endif
   case k=6
       deacti wind find,mes
       Last_search=0
endcase
release windows find,mes
r=recno()
on key labe ctrl+e do wixod
retu

procedure wixod
push key clear
define window vopros from 5,20 to 10,70
activate window vopros
@ 1,17 say "Продолжить поиск?"
@ 3,1 get v function "*RHT Продолжить; Новый поиск; Завершить" default  1 
read
deactivate window vopros
do case
   case v= 1  
     if !Continue_search
       Continue_search=.t.
       Last_search= 0 
     endif
       do poisk
   case v= 2     
      Continue_search=.t.
      Last_search= 0 
      do poisk
   case v= 3 
      Continue_search=.t.
      Last_search= 0 
endcase
release window vopros
return

FUNCTION ttt &&-----------ФУНКЦИЯ обновления курсора 
r=RECNO() 
SHOW WINDOW gosti REFRESH 
RETURN      

procedure kvit
defi wind kvit from  4 , 8  to  17 , 60 ; 
titl '<<< Квитанция оплаты >>>'foot 'Выход - Esc' color , , W+/B,W+/B,W+/B
acti wind kvit
dime s( 4 )
s( 1 )=fam
s( 2 )=mes
s( 3 )=pri
s( 4 )=otb
@  1 , 16  say'проживает в'
@  1 , 36  say'номере.'
@  2 , 0   say'Дата оплаты номера:'
@  3 , 0   say'с'
@  3 , 13  say'до'

@  1 , 0   get s( 1 ) pict 'xxxxxxxxxxxxxxx' 
@  1 , 28  get s( 2 ) pict '99999'
@  3 , 02  get s( 3 ) pict '99.99.9999'
@  3 , 16  get s( 4 ) pict '99.99.9999'
return
...
Рейтинг: 0 / 0
Курсовая почти готова! Помогите, пожалуйста!
    #33958830
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у тя АШИПКА!!!!
'Хотите, чтобы здесь жил новый гость?"

пол программы динамической стало. гы.. гы...
...
Рейтинг: 0 / 0
Курсовая почти готова! Помогите, пожалуйста!
    #33959485
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хо-хо! Спасибо форуму! Подсказал ошибку в строке
Код: plaintext
@  0 , 1  say 'В этом месте раньше проживал "+fam+"!"
Вместо " надо написать '. Интересно, что из этого выйдет? И, странно, почему Фокс её не увидел?!
...
Рейтинг: 0 / 0
Курсовая почти готова! Помогите, пожалуйста!
    #33959806
Проходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И, странно, почему Фокс её не увидел?!
И ничего странного. У фокса 3 вида ограничителей символьной строки: одинарные кавычки (апострофы), двойные кавычки и квадратные скобки. Пары этих символов могут вкладыватся друг в друга, но не могут пересекаться.
...
Рейтинг: 0 / 0
Курсовая почти готова! Помогите, пожалуйста!
    #33960017
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
М-даааааааа... Чё-то исправил ошибку, где вместо " надо ' и лучше не стало... При запуске программы, почему-то сразу выдаётся ошибка "Переменная не обнаружена" в команде read , которая находится в этом участке программы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
defi wind kn from  19 , 00  to  23 , 79 ;
title '<<< Управление гостями >>>'
acti wind kn

@  0 , 1  get v function "*RHT Квитанция; Поиск; Добавить; Редактировать; Удалить" default  1 
@  1 , 1  get v function "*RHT Выбрать всех постояльцев, отъезжающих сегодня" default  1 
read 
r=recno()
go top
deacti window kn
do case
   case v= 1  
        do kvit
   case v= 2 
        do poisk
   case v= 3 
        do dob
   case v= 4 
        do red_v
   case v= 5 
        do del
   case v= 6 
        do vib
endcase 
Потом ни с того, ни с сего, появляется квитанция оплаты первого гостя, потом появляется окно выбора БД и после этого в окне "Квитанция оплаты" появляется список гостей. Причём окно "Список гостей" всё время пустое! Помогите, пожалуйста, исправить этот недочёт!
...
Рейтинг: 0 / 0
Курсовая почти готова! Помогите, пожалуйста!
    #33960021
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже надо просто переместить это окно в другой участок программы. Но вот в какой?
...
Рейтинг: 0 / 0
Курсовая почти готова! Помогите, пожалуйста!
    #33977832
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажите, пожалуйста, почему после вызова окна "Квитанция оплаты", т.е. этого:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
procedure kvit
defi wind kvit from  4 , 8  to  17 , 60 ; 
titl '<<< Квитанция оплаты >>>'foot 'Выход - Esc' color , , W+/B,W+/B,W+/B
acti wind kvit
dime s( 4 )
s( 1 )=fam
s( 2 )=mes
s( 3 )=pri
s( 4 )=otb
@  1 , 16  say'проживает в'
@  1 , 36  say'номере.'
@  2 , 0   say'Дата оплаты номера:'
@  3 , 0   say'с'
@  3 , 13  say'до'

@  1 , 0   get s( 1 ) pict 'xxxxxxxxxxxxxxx' 
@  1 , 28  get s( 2 ) pict '99999'
@  3 , 02  get s( 3 ) pict '99.99.9999'
@  3 , 16  get s( 4 ) pict '99.99.9999'
rele wind red
pop key
return
у меня оно открывается, но при этом программа закрывается?
...
Рейтинг: 0 / 0
Курсовая почти готова! Помогите, пожалуйста!
    #33978023
parenyok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВСЁ!!! Разобрался в чём дело! Надо было просто кнопку сделать. Так. Теперь у меня осталось самое последнее(!!!) и курсовая будет сделана!!! Помогите мне, пожалуйста, сделать выбор всех постояльцев, отъезжающих сегодня и курсовая будет сделана полностью!
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Курсовая почти готова! Помогите, пожалуйста!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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