21.02.2011, 16:13
общий
это ответ
Здравствуйте, Нитрит Алексей!
Похоже, базы и программа на Visual FoxPro. С визуалом я не сталкивался ( сам пишу на VB6 ) , но предлагаю программу на обычном FoxPro 2.6 для DOS. Язык программ практически одинаковый.
Сразу для пункта 3 задания. Остальные получаются упрощением программы.
В программе для вывода данных применена функция " ? " , т.к. данных может быть много и они не поместятся на экране. К тому же так удобно будет выводить в текстовый отчет. Следует добавить команды в начале программы :
set alte to ('text.txt')
set cons off
set alte on
а потом в конце программы :
set alte off
set cons on
set alte to
Если будут вопросы - пишите.
С уважением.
Приложение:
clear
close all
set date german
set cent on
*открываем базы
sele a
use cars
set order to carid
sele b
use clients
set order to clid
sele c
use orders
set order to clid
*таблица заказов должна быть отсортирована по коду клиента
*устанавливаем связь со справочниками
set rela to clid into b
set rela to carid into a addi
*обнуляем переменные
klient=0
zak=0
vip=0
su=0
i=0
*сканируем таблицу заказов
do while !eof()
*если текущий код клиента не совпадает со значением переменной
if numord<>klient
*если до этого уже выводились значения для этого клиента, то выводим итоги
if klient<>0
? ' Всего заказано - '+str(zak,3,0)+' Всего выполнено - '+str(vip,4,0)+' Всего сумма - '+str(su,14,2)
endif
*пропускаем строку и выводим код и имя клиента
?
? '№ клиента - '+str(numord,5,0)+' ФИО - '+b.name
*обнуляем итоговые суммы и переменную кода клиента
zak=0
vip=0
su=0
i=0
klient=numord
endif
*выводим строку заказа
i=i+1
? ' поездка № '+str(i,3,0)+' Заказано часов - '+str(hour1,3,0)+' Выполнено часов - '+str(hour2,4,0)+' Сумма заказа - '+str(a.price*c.hour2,14,2)
*перемещаемся по таблице
skip
enddo
*выводим итоги для последнего клиента
if klient<>0
? ' Всего заказано - '+str(zak,3,0)+' Всего выполнено - '+str(vip,4,0)+' Всего сумма - '+str(su,14,2)
endif
5
Большущие Вам спасибо!!!<br>