Разработка и внедрение информационной системы "Автовокзал"
Автоматизация режима получения аналитических данных, сведений о срывах и не заходах автобуса. Разработка модуля для анализа пассажиропотока, расчеты коэффициента использования вместимости автотранспорта по временному промежутку, учет проданных билетов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 09.08.2011 |
Размер файла | 2,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Рисунок Б.9 - Форма получения отчета о вокзальном расписании
Рисунок Б.10 - Форма получения отчета о работе автовокзала
Рисунок Б.11 - Форма выбора промежутка времени для ввода статистики продаж согласно договору компании
Рисунок Б.12 - Форма выбора промежутка времени для вывода отчета о не прибытии и опоздании автотранспорта
Рисунок Б.13 - Форма выбора интервала времени отчета по оформленным штрафам и сведений о работе АТП
Рисунок Б.14 - Форма выбора данных для составления отчета
пассажиропотока по автовокзалу
Рисунок Б.15 - Форма выбора данных для отчета показателей перевозки пассажиров
Рисунок Б.16 - Форма выбора данных для вывода сведений по льготному проезду
Рисунок Б.17 - Форма выбора данных для вывода сведений по
предварительным продажам билетов
Приложение В - Структурные карты Константайна разрабатываемого модуля АИС
Приложение Г - таблицы тестовых данных
Таблица Г.1 - Таблица тестов взаимодействия пользователя с системой
Описание входных данных |
Входные данные |
Ожидаемый результат |
Реальный результат |
Отметка о дефектах |
|
Выбрать пункт меню «Настройка приложения» из меню «Система». Указать путь расположения БД, нажать кнопку «Выполнить» |
Окно «Настройка приложения» Выбранный путь к БД |
Отобразилось окно настройки приложения. Отобразилось окно указания пути к БД |
Отобразилось окно настройки приложения. Отобразилось окно указания пути к БД |
||
Выбрать пункт меню «Коэффициент вместимости по временному промежутку» из меню «Расчет», нажать кнопку «Выполнить» |
Окно «Выберете промежуток и рейс» Маршрут, время, рейс, дата |
Отобразился отчет в формате Excel «Коэффициент вместимости по временному промежутку» |
Отобразился отчет в формате Excel «Коэффициент вместимости по временному промежутку |
||
Выбрать пункт меню «Проданные билеты, выручка, наполняемость автобусов» из меню «Расчет», нажать кнопку «Выполнить» |
Окно «Выберете промежуток и АВ» Дата, город, название автостанции, тип расчета. |
Отобразился отчет в формате Excel «Проданные билеты, выручка, наполняемость автобусов» |
Отобразился отчет в формате Excel «Проданные билеты, выручка, наполняемость автобусов» |
||
Выбрать пункт меню «Потребность в кассовых ведомостях» из меню «Расчет», нажать кнопку «Выполнить» |
Окно «Выберите интервал времени» Месяц, год |
Отобразился отчет в формате Excel «Потребность в кассовых ведомостях» |
Отобразился отчет в формате Excel «Потребность в кассовых ведомостях» |
||
Выбрать пункт меню «Вокзальное расписание» из меню «Расчет», нажать кнопку «Выполнить» |
Окно «Выберете месяц и АВ» Месяц, год, название автовокзала, тип расписания (поминутное, станционное) |
Отобразился отчет в формате Excel «Вокзальное расписание» |
Отобразился отчет в формате Excel «Вокзальное расписание» |
||
Выбрать пункт меню «Оперативные сведения» из меню «Доходы», нажать кнопку «Выполнить» |
Окно «Выберете промежуток и АВ» Месяц, год, название автовокзала, тип ведомости (сводная, обычная) |
Отобразился отчет в формате Excel «Оперативные сведения» |
Отобразился отчет в формате Excel «Оперативные сведения» |
||
Выбрать пункт меню «Задания по доходам» из меню «Доходы», нажать кнопку «Выполнить» |
Окно «Выберите интервал времени» Месяц, год |
Отобразился отчет в формате Excel «Задания по доходам» |
Отобразился отчет в формате Excel «Задания по доходам» |
||
Выбрать пункт меню «Выполнение условий договора АТП» из меню «Доходы», нажать кнопку «Выполнить» |
Окно «Выберите интервал времени» Месяц, год, город, область |
Отобразился отчет в формате Excel «Выполнение условий договора АТП» |
|||
Выбрать пункт меню «Расчет планового задания по выручке и доходам» из меню «Доходы», нажать кнопку «Выполнить» |
Окно «Выберите интервал времени» Год |
Отобразился отчет в главном окне программы «Расчет планового задания по выручке и доходам» |
Отобразился отчет в главном окне программы «Расчет планового задания по выручке и доходам» |
||
Выбрать пункт меню «Доходы по багажу» из меню «Доходы», нажать кнопку «Выполнить» |
Окно «Выберите интервал времени» Месяц, год |
Отобразился отчет в формате Excel «Доходы по багажу» |
Отобразился отчет в формате Excel «Доходы по багажу» |
||
Выбрать пункт меню «Не прибытия и опоздания» из меню «Аналитика», нажать кнопку «Выполнить» |
Окно «Выберите интервал времени» Месяц, год, отчет по типу (автостанция, АТП) |
Отобразился отчет в формате Excel «Не прибытия и опоздания» |
Отобразился отчет в формате Excel «Не прибытия и опоздания» |
||
Выбрать пункт меню «Штрафы АТП» из меню «Аналитика», нажать кнопку «Выполнить» |
Окно «Выберите интервал времени» Месяц, год, название АТП |
Отобразился отчет в формате Excel «Штрафы АТП» |
Отобразился отчет в формате Excel «Штрафы АТП» |
||
Выбрать пункт меню «Сведения о срывах и не заходах» из меню «Аналитика», нажать кнопку «Выполнить» |
Окно «Выберите период» Месяц, год, тип ведомости (развернутая, сводная) |
Отобразился отчет в формате Excel «Сведения о срывах и не заходах» |
Отобразился отчет в формате Excel «Сведения о срывах и не заходах» |
||
Выбрать пункт меню «Анализ пассажиропотока» из меню «Аналитика», нажать кнопку «Выполнить» |
Окно «Выберете промежуток и АВ» Месяц, год, название автовокзала, тип отчета (полный, по области, другой) |
Отобразился отчет в формате Excel «Анализ пассажиропотока» |
Отобразился отчет в формате Excel «Анализ пассажиропотока» |
||
Выбрать пункт меню «Показатели перевозки пассажиров» из меню «Аналитика», нажать кнопку «Выполнить» |
Окно «Показатели перевозки пассажиров» Выбор интервала времени, тип следования рейса (межгород, пригород, транзит) |
Отобразился отчет в формате Excel «Показатели перевозки пассажиров» |
Отобразился отчет в формате Excel «Показатели перевозки пассажиров» |
||
Выбрать пункт меню «Сведения о работе АТП» из меню «Аналитика», нажать кнопку «Выполнить» |
Окно «Выберите интервал времени» Месяц, год, название АТП |
Отобразился отчет в формате Excel «Сведения о работе АТП» |
Отобразился отчет в формате Excel «Сведения о работе АТП» |
||
Выбрать пункт меню «Суммарный километраж и количество пассажиров» из меню «Аналитика», нажать кнопку «Выполнить» |
Окно «Выберите интервал времени» Месяц, год |
Отобразился отчет в формате Excel «Суммарный километраж и количество пассажиров» |
Отобразился отчет в формате Excel «Суммарный километраж и количество пассажиров» |
||
Выбрать пункт меню «Льготные пассажиры» из меню «Аналитика», нажать кнопку «Выполнить» |
Окно «Сведения по льготному проезду» Месяц, год, вид ведомости (по категориям, сводная, по АТП) |
Отобразился отчет в формате Excel «Сведения по льготному проезду» |
Отобразился отчет в формате Excel «Сведения по льготному проезду» |
||
Выбрать пункт меню «Суммарный коэффициент загрузки» из меню «Аналитика», нажать кнопку «Выполнить» |
Окно «Выберите интервал времени» Месяц, год |
Отобразился отчет в формате Excel «Суммарный коэффициент загрузки» |
Отобразился отчет в формате Excel «Суммарный коэффициент загрузки» |
||
Выбрать пункт меню «Предварительная продажа билетов» из меню «Аналитика», нажать кнопку «Выполнить» |
Окно «Выберете промежуток и АВ» Месяц, год, название автовокзала, тип ведомости (развернутая сводная) |
Отобразился отчет в формате Excel «Предварительная продажа билетов» |
Отобразился отчет в формате Excel «Предварительная продажа билетов» |
||
Выбрать пункт меню «Коэффициент повышения тарифов» из меню «Аналитика», нажать кнопку «Выполнить» |
Окно «Выберете месяцы расчета» Месяц, год |
Отобразился отчет в формате Excel «Коэффициент повышения тарифов»» |
Отобразился отчет в формате Excel «Коэффициент повышения тарифов» |
Приложение Д - Программный код методов и функций
Реализация функции Atp_Anal, Atp_Anal_All - «Анализ работы АТП»
public pubDate[2]
local buf
buf='01.'+str(ThisForm.From_Month)+'.'+str(ThisForm.From_Year)
if empty(ctod(buf))
MessageBox('Неверная дата начала периода',16,'Выбор интервала времени')
return
else
pubDate[1]=ctod(buf)
endif
if ThisForm.To_Month=12
buf=31
else
buf=day(ctod('01.'+str(ThisForm.To_Month+1)+'.'+str(ThisForm.To_Year))-1)
endif
buf=str(buf)+'.'+str(ThisForm.To_Month)+'.'+str(ThisForm.To_Year)
if empty(ctod(buf))
MessageBox('Неверная дата конца периода',16,'Выбор интервала времени')
return
else
pubDate[2]=ctod(buf)
endif
if pubDate[1]>pubDate[2]
MessageBox('Дата начала периода больше даты конца периода',16,'Выбор интервала времени')
return
endif
if pubDate[2]>date()
MessageBox('Дата конца периода больше текущей даты',16,'Выбор интервала времени')
return
endif
if Year(pubDate[1])<Year(pubDate[2])-1
MessageBox('Слишком большой период',16,'Выбор интервала времени')
return
endif
*******************************************************
WAIT "Ждите, идет формирование отчета ..." WINDOW NOWAIT
create cursor RejsMas (Pec N(5), Name C(22), Time N(5,2))
create cursor C_BdBase (Pec N(5), tMonth N(2), tYear N(4), KolP N(4), SumN N(11,2), Km_Sum N(8), K_Load N(6,2))
PRIVATE XLApp, pubMonth, pubYear
public MassLen
local MaxLen
local j, ii, lName, lTime, lYear
MaxLen=0
XLApp=0
pubMonth=ThisForm.MonthArray[Month(pubDate[1])]
pubYear=alltrim(str(Year(pubDate[1])))
pubAtp=Atp.Naim
if ThisForm.From_Month=ThisForm.To_Month and ThisForm.From_Year=ThisForm.To_Year && За один месяц
PRIVATE XLSheets
XlSheets=0
if !CreatExc(@XLApp, 1, @XLSheets, 25)
return .f.
endif
if empty(Open_Table('bd'+ALLTRIM(STR(ThisForm.From_Month))+ALLTRIM(str(ThisForm.From_Year)),,;
'Bd_Base'))
return
endif
buf=Atp.Kat
SET TALK ON
select Pec, ;
sum(KolP) as KolP, ;
sum(SumN) as SumN, ;
sum(Km_Sum) as Km_Sum, ;
sum(KolP/KolM) as K_Load ;
from Bd_Base ;
group by Pec ;
where Atp1=buf ;
order by Pec ;
into cursor C_Bd
set talk off
scan
select RejsMas
locate for Pec=C_Bd.Pec
if !found()
select C_Rejs
locate for Rec=C_Bd.Pec
if found()
lName=Name+' п'
lTime=Tyda
endif
locate for Reo=C_Bd.Pec
if found()
lName=Name+' о'
lTime=Obra
endif
select RejsMas
append blank
replace Pec with C_Bd.Pec, Name with lName, Time with lTime
endif
select C_BdBase
append blank
replace Pec with C_Bd.Pec, tMonth with ThisForm.From_Month, tYear with ThisForm.From_Year, ;
KolP with C_Bd.KolP, SumN with C_Bd.SumN, Km_Sum with C_Bd.Km_Sum, ;
K_Load with C_Bd.K_Load
select C_Bd
endscan
use
select Bd_Base
use
select RejsMas
MassLen=RecCount()
if MassLen=0
MessageBox('Выбранное АТП рейсов за указанный период не совершало.')
return
endif
Atp_Anal(@XlSheets, Month(pubDate[1]), Year(pubDate[1]))
XLApp.Visible = .T.
select RejsMas
use
select C_BdBase
use
release XlSheets, pubDate
return
endif
local Month_Num && Несколько месяцев
if Year(pubDate[1])=Year(pubDate[2])
Month_Num=Month(pubDate[2])-Month(pubDate[1])+1
else
Month_Num=13-Month(pubDate[1])+Month(pubDate[2])
endif
Month_Num=Month_Num+1 && Итоговый лист
****************************************************
public Month_Array[Month_Num], XLSheets[Month_Num]
store 0 to XlSheets
j=1
buf=Atp.Kat
if Year(pubDate[1])=Year(pubDate[2])
lYear=Year(pubdate[1])
for ii=Month(pubDate[1]) to Month(pubDate[2])
Month_Array[j]=ThisForm.MonthArray[ii]+'_'+alltrim(str(lYear))
if empty(Open_Table('bd'+ALLTRIM(STR(ii))+ALLTRIM(str(lYear)),, 'Bd_Base'))
return
endif
SET TALK ON
select Pec, ;
sum(KolP) as KolP, ;
sum(SumN) as SumN, ;
sum(Km_Sum) as Km_Sum, ;
sum(KolP/KolM) as K_Load ;
from Bd_Base ;
group by Pec ;
where Atp1=buf ;
order by Pec ;
into cursor C_Bd
set talk off
scan
select RejsMas
locate for Pec=C_Bd.Pec
if !found()
select C_Rejs
locate for Rec=C_Bd.Pec
if found()
lName=Name+' п'
lTime=Tyda
endif
locate for Reo=C_Bd.Pec
if found()
lName=Name+' о'
lTime=Obra
endif
select RejsMas
append blank
replace Pec with C_Bd.Pec, Name with lName, Time with lTime
endif
select C_BdBase
append blank
replace Pec with C_Bd.Pec, tMonth with ii, tYear with lYear, KolP with C_Bd.KolP, ;
SumN with C_Bd.SumN, Km_Sum with C_Bd.Km_Sum, K_Load with C_Bd.K_Load
select C_Bd
endscan
use
j=j+1
select Bd_Base
use
endfor
else
lYear=Year(pubdate[1])
for ii=Month(pubDate[1]) to 12
Month_Array[j]=ThisForm.MonthArray[ii]+'_'+alltrim(str(Year(pubdate[1])))
if empty(Open_Table('bd'+ALLTRIM(STR(ii))+ALLTRIM(str(Year(pubdate[1]))),,;
'Bd_Base'))
return
endif
SET TALK ON
select Pec, ;
sum(KolP) as KolP, ;
sum(SumN) as SumN, ;
sum(Km_Sum) as Km_Sum, ;
sum(KolP/KolM) as K_Load ;
from Bd_Base ;
group by Pec ;
where Atp1=buf ;
order by Pec ;
into cursor C_Bd
set talk off
scan
select RejsMas
locate for Pec=C_Bd.Pec
if !found()
select C_Rejs
locate for Rec=C_Bd.Pec
if found()
lName=Name+' п'
lTime=Tyda
endif
locate for Reo=C_Bd.Pec
if found()
lName=Name+' о'
lTime=Obra
endif
select RejsMas
append blank
replace Pec with C_Bd.Pec, Name with lName, Time with lTime
endif
select C_BdBase
append blank
replace Pec with C_Bd.Pec, tMonth with ii, tYear with lYear, KolP with C_Bd.KolP, ;
SumN with C_Bd.SumN, Km_Sum with C_Bd.Km_Sum, K_Load with C_Bd.K_Load
select C_Bd
endscan
use
j=j+1
select Bd_Base
use
endfor
lYear=Year(pubdate[2])
for ii=1 to Month(pubDate[2])
Month_Array[j]=ThisForm.MonthArray[ii]+'_'+alltrim(str(Year(pubdate[2])))
if empty(Open_Table('bd'+ALLTRIM(STR(ii))+ALLTRIM(str(Year(pubdate[2]))),,;
'Bd_Base'))
return
endif
SET TALK ON
select Pec, ;
sum(KolP) as KolP, ;
sum(SumN) as SumN, ;
sum(Km_Sum) as Km_Sum, ;
sum(KolP/KolM) as K_Load ;
from Bd_Base ;
group by Pec ;
where Atp1=buf ;
order by Pec ;
into cursor C_Bd
set talk off
scan
select RejsMas
locate for Pec=C_Bd.Pec
if !found()
select C_Rejs
locate for Rec=C_Bd.Pec
if found()
lName=Name+' п'
lTime=Tyda
endif
locate for Reo=C_Bd.Pec
if found()
lName=Name+' о'
lTime=Obra
endif
select RejsMas
append blank
replace Pec with C_Bd.Pec, Name with lName, Time with lTime
endif
select C_BdBase
append blank
replace Pec with C_Bd.Pec, tMonth with ii, tYear with lYear, KolP with C_Bd.KolP, ;
SumN with C_Bd.SumN, Km_Sum with C_Bd.Km_Sum, K_Load with C_Bd.K_Load
select C_Bd
endscan
use
j=j+1
select Bd_Base
use
endfor
endif
select RejsMas
MassLen=RecCount()
if MassLen=0
MessageBox('Выбранное АТП рейсов за указанный период не совершало.')
return
endif
Month_Array[j]='Итого'
if !CreatExc(@XLApp, Month_Num, @XLSheets, 25, @Month_Array)
return .f.
endif
XLApp.Calculation=xlCalculationManual
j=1
if Year(pubDate[1])=Year(pubDate[2])
lYear=Year(pubdate[1])
for ii=Month(pubDate[1]) to Month(pubDate[2])
pubMonth=ThisForm.MonthArray[ii]
pubYear=alltrim(str(lYear))
Atp_Anal(XlSheets[j], ii, lYear)
if MaxLen<MassLen
MaxLen=MassLen
endif
j=j+1
endfor
else
lYear=Year(pubdate[1])
for ii=Month(pubDate[1]) to 12
pubMonth=ThisForm.MonthArray[ii]
pubYear=alltrim(str(lYear))
Atp_Anal(XlSheets[j], ii, lYear)
if MaxLen<MassLen
MaxLen=MassLen
endif
j=j+1
endfor
lYear=Year(pubdate[2])
for ii=1 to Month(pubDate[2])
pubMonth=ThisForm.MonthArray[ii]
pubYear=alltrim(str(lYear))
Atp_Anal(XlSheets[j], ii, lYear)
if MaxLen<MassLen
MaxLen=MassLen
endif
j=j+1
endfor
endif
Atp_Anal_All(XlSheets[Month_Num], @Month_Array, Month_Num, ;
pubDate[1], pubDate[2], MaxLen)
XLApp.Calculation=xlCalculationAutomatic
XLApp.Visible = .T.
select RejsMas
use
select C_BdBase
use
release XlSheets, MassLen, pubDate
parameters pXlSheet, Set_Month, Set_Year, Beg_Date, End_Date
set deleted on
local XlSheet
XlSheet=pXlSheet
local i, j
i=Atp.Kat
if empty(Open_Table('bd'+ALLTRIM(STR(Set_Month))+ALLTRIM(str(Set_Year)),,;
'Bd_Base'))
return
endif
WAIT "Производится выборка из рейсовых ведомостей за "+pubMonth+" "+pubYear WINDOW NOWAIT
SET TALK ON
select b.Pec, ;
sum(b.KolP) as KolP, ;
sum(b.SumN) as SumN, ;
sum(b.Km_Sum) as Km_Sum, ;
sum(b.KolP/b.KolM) as K_Load ;
from Bd_Base b ;
group by b.Pec ;
where Atp1=i ;
order by b.Pec ;
into cursor C_Bd
select Bd_Base
use
i=1
MassLen = reccount('C_Bd')
if MassLen>0
local Otch[MassLen*2, 6]
STORE 0 TO Otch
select C_Bd
use
return
endif
susp
select C_BdBase
set filter to tMonth=Set_Month and tYear=Set_Year
select RejsMas
scan
Otch[i, 1]=RejsMas.Name
Otch[i, 2]=RejsMas.Time
select C_BdBase
locate for Pec=RejsMas.Pec
Otch[i, 3]=KolP
Otch[i, 4]=SumN
Otch[i, 5]=Km_Sum
Otch[i, 6]=K_Load
select RejsMas
i=i+1
endscan
select C_Rejs
scan
select RejsMas
locate for Pec=C_Rejs.Rec
if found()
select C_Bd
locate for Pec=C_Rejs.Rec
if found()
Otch[i, 1]=C_Rejs.Name+' п'
Otch[i, 2]=C_Rejs.tyda
Otch[i, 1]=RejsMas.Name
Otch[i, 2]=RejsMas.Time
Otch[i, 3]=KolP
Otch[i, 4]=SumN
Otch[i, 5]=Km_Sum
Otch[i, 6]=K_Load
else
Otch[i, 1]=C_Rejs.Name+' нет'
endif
i=i+1
endif
select RejsMas
locate for Pec=C_Rejs.Reo
if found()
select C_Bd
locate for Pec=C_Rejs.Reo
if found()
Otch[i, 1]=C_Rejs.Name+' о'
Otch[i, 2]=C_Rejs.obra
Otch[i, 1]=RejsMas.Name
Otch[i, 2]=RejsMas.Time
Otch[i, 3]=KolP
Otch[i, 4]=SumN
Otch[i, 5]=Km_Sum
Otch[i, 6]=K_Load
else
Otch[i, 1]=C_Rejs.Name+' нет'
endif
i=i+1
endif
select C_Rejs
endscan
select C_Bd
use
********************************************************
MassLen=i-1
i=5
XlSheet.Activate
XlSheet.Range("A2:F2").Value=PubAtp+" за "+pubMonth+" месяц " + pubYear+" г."
XLSheet.Range("A5:F5").Copy
XLSheet.Range("A6:F"+alltrim(str(MassLen+5))).Select
XLSheet.Paste
for j=1 to MassLen
XLSheet.Cells(i,1).Value = Otch[j,1]
XLSheet.Cells(i,2).Value = Otch[j,2]
XLSheet.Cells(i,3).Value = Otch[j,3]
XLSheet.Cells(i,4).Value = Otch[j,4]
XLSheet.Cells(i,5).Value = Otch[j,5]
XLSheet.Cells(i,6).Value = Otch[j,6]
i=i+1
endfor
ci = alltrim(str(i-1))
XLSheet.Cells(i,1).Value = 'Итого:'
XLSheet.Cells(i,3).Formula = '=Sum(C5:C'+ci+')'
XLSheet.Cells(i,4).Formula = '=Sum(D5:D'+ci+')'
XLSheet.Cells(i,5).Formula = '=Sum(E5:E'+ci+')'
XLSheet.Cells(i,6).Formula = '=Sum(F5:F'+ci+')/COUNTIF(F5:F'+ci+', "<>0")'
XLSheet.Range("A5:F5").Borders(3).Weight=xlMedium
ci = alltrim(str(i))
XLSheet.Range("A"+ci+":F"+ci).Borders(3).Weight=xlMedium
XLSheet.Range("A"+ci+":F"+ci).Borders(4).Weight=xlMedium
*************************************************************
XLSheet.Range("A5").Select
WAIT CLEAR
RELEASE Otch, XlSheet
Реализация процедуры sould_tisket - «Проданные билеты»
* Procedure Sold_Tisked
* Сведения о продаже билетов, выручке и наполняемости автобусов по АВ (АС)
parameters Rep_Type
* 1 - Накопительная, 2 - на 1 рейс
set deleted on
local Def_Path
Def_Path=set('default')
set default to &gl_Temp_Path
PRIVATE XLApp, XLSheet
XLApp=0
XLSheet=0
if empty(Open_Table('Hace','IHace'))
return
endif
seek pubBg1 && 1 Bg
if Cru>0 && Если есть варианты ID
Cru_buf=Cru
* выбираем все ID города
select Khp from Hace where Cru=Cru_buf into cursor C_BG_ID1
else
select Khp from Hace where Khp=pubBG1 into cursor C_BG_ID1
endif
select Hace
seek pubBg2 && 2 Bg
if Cru>0 && Если есть варианты ID
Cru_buf=Cru
* выбираем все ID города
select Khp from Hace where Cru=Cru_buf into cursor C_BG_ID2
else
select Khp from Hace where Khp=pubBG2 into cursor C_BG_ID2
endif
***************************************************
if empty(Open_Table('SostMar','IPoiskm'))
return
endif
************* Маршруты, проходящие через оба BG
select mar distinct from SostMar s, C_BG_ID1 b1 ;
where s.Kpp=b1.Khp ;
into cursor Mar_C1
select mar distinct from SostMar s, C_BG_ID2 b2 ;
where s.Kpp=b2.Khp ;
into cursor Mar_C2
select m1.mar from Mar_C1 m1, Mar_C2 m2 ;
where m1.Mar=m2.Mar ;
into cursor Mar_C
select Mar_C1
use
select Mar_C2
use
*********** Города, лежащие на маршрутах
select s.Kpp, f.Name distinct from SostMar s, Mar_C m, Filial f ;
where s.Mar=m.Mar and s.kpp=f.Kab ;
order by s.Psl ;
into table BG_Temp
if empty(Open_Table('Atp'))
return
endif
if empty(Open_Table('Pejc','IRejc'))
return
endif
****************************************************
select 0
if file('Rejs_Table.dbf')
if used('Rejs_Table')
select Rejs_Table
use
endif
erase Rejs_Table.dbf
erase Rejs_Table.cdx
endif
create table Rejs_Table (Bg N(4), Atp1 N(4), Atp_Name C(20), Pec N(5), ;
Mar N(5), Otprav N(5), KolM N(5), KolP N(5), P_KolP N(5), ;
SumN N(11,2), Km N(5), AKolP N(5), Tranz N(5), Numb N(4), ;
Name C(20), Tydap N(5,2), Obra C(1), BG_Time N(5,2), Fop N(1), ;
Direct N(11,2), ObraM C(1), Km_Sum N(8))
index on str(Bg_Time,5,2)+ObraM+str(Pec,5)+str(Atp1,4)+str(Tydap,5,2) ;
tag Bg_Time of Rejs_Table
index on str(Pec)+str(Fop)+Obra tag Pec of Rejs_Table
index on Bg tag Bg of Rejs_Table
local buf, i, j
*****************************************************
if Year(pubDate[1])=Year(pubDate[2])
for j=Month(pubDate[1]) to Month(pubDate[2])
do Rejs_Scan with j, Year(pubDate[1]), pubDate[1], pubDate[2]
endfor
else
for j=Month(pubDate[1]) to 12
do Rejs_Scan with j, Year(pubDate[1]), pubDate[1], pubDate[2]
endfor
for j=1 to Month(pubDate[2])
do Rejs_Scan with j, Year(pubDate[2]), pubDate[1], pubDate[2]
endfor
endif
*****************************************************
if reccount('Rejs_Table')=0
release Num_Bg, MassLen, XlApp, XlSheet
MessageBox('Не найдено ни одного рейса между данными городами',16,'')
return
endif
select Atp
use
select Mar_C
use
select Rejs_Table
set order to Bg
local Old_Bg, New_Bg, N_Rec
Old_Bg=-1
scan
if Bg#Old_Bg
Old_Bg=Bg
New_Bg=-1
select Bg_Temp
locate for Kpp=Old_Bg
if !found()
select Hace
seek Old_Bg
if Cru>0
buf=Cru
scan for Cru=buf
select Bg_Temp
locate for Kpp=Hace.Khp
if found()
New_Bg=Hace.Khp
exit
endif
select Hace
endscan
endif
select Rejs_Table
if New_Bg>0
skip -1
N_Rec=recno()
replace Bg with New_Bg for Bg=Old_Bg
go N_Rec
endif
endif
endif
endscan
select Bg_Temp
scan
select Rejs_Table
if !seek(Bg_Temp.Kpp)
select Bg_Temp
delete
endif
select Bg_Temp
endscan
pack
select Rejs_Table
set order to Pec
local Old_Rejs, Old_Obra, luPsl, luTime, luObra, luRec, luRejs
Old_Rejs=-1
Old_Obra='!'
scan
if Pec#Old_Rejs or Obra#Old_Obra
Old_Rejs=Pec
Old_Obra=Obra
luTime=-1
if Fop=0 && Формирующийся рейс
select C_BG_ID1
locate for Khp=Rejs_Table.Bg
if found()
select Rejs_Table
luTime=Tydap
luObra='1'
endif
endif
if luTime<0
luPsl=-1
select C_BG_ID1 && Ищем Psl 1 BG
scan
select SostMar
if seek(Old_Obra+str(C_BG_ID1.Khp,5)+str(Rejs_Table.Mar,5))
luPsl=Psl
exit
endif
select C_BG_ID1
endscan
if luPsl>0
select C_BG_ID2 && Ищем Psl 2 BG
luTime=-2
scan
select SostMar
if seek(Old_Obra+str(C_BG_ID2.Khp,5)+str(Rejs_Table.Mar,5))
if luPsl<Psl && Прямой маршрут
select Rejs_Table
luTime=Tydap
luObra='1'
else
luTime=-1
luObra='2'
endif
exit
endif
select C_BG_ID2
endscan
if luTime=-2
luPsl=-1
endif
endif
if luPsl<0 && На маршруте не найден хотя бы один BG
luTime=-1
luObra='0'
endif
endif
select Rejs_Table
endif
replace BG_Time with luTime, ObraM with luObra
endscan
Old_Rejs=-1
scan
if BG_Time<0
if Pec#Old_Rejs
luRec=recno()
select Pejc
if Rejs_Table.Obra='п' && Прямой рейс
locate for Rec=Rejs_Table.Pec
if found()
luRejs=Reo
else
locate for Reo=Rejs_Table.Pec
if found()
luRejs=Rec
endif
endif
else
locate for Reo=Rejs_Table.Pec
if found()
luRejs=Rec
else
locate for Rec=Rejs_Table.Pec
if found()
luRejs=Reo
endif
endif
endif
select Rejs_Table
if !seek(str(luRejs))
go luRec
endif
luTime=BG_Time
luObra=Obram
go luRec
endif
replace BG_Time with luTime
if ObraM='0'
replace Obram with iif(luObra='2','1','2')
endif
endif
endscan
scan for BG_Time<0
replace BG_Time with Tydap
endscan
local Old_Time, luRec
Old_Rejs=-1
Old_Time=-1
Old_Obra='!'
set order to BG_Time
scan
if Old_Time=BG_Time and Old_Rejs#Pec and Old_Obra=ObraM
skip -1
luRec=recno()
skip
buf=BG_Time
replace BG_Time with buf+0.01
go luRec
loop
endif
Old_Time=BG_Time
Old_Rejs=Pec
Old_Obra=ObraM
endscan
select SostMar
use
select C_BG_ID1
use
select C_BG_ID2
use
select count(*) from Rejs_Table ;
group by Pec, Atp1, Tydap into cursor C_Temp
public Num_Bg, MassLen
Num_Bg=reccount('Bg_Temp')
MassLen=reccount('C_Temp')
select C_Temp
use
public Otch[MassLen, 20+Num_Bg*9]
store 0 to Otch
************************************************************
i=0
local Old_Atp, Old_Rejs, Old_Tydap, Sum_Pass, Old_Name
select Rejs_Table
set order to BG_Time
Old_Atp=-1
Old_Rejs=-1
Old_Tydap=-1
Old_Name='!'
Sum_Pass=0
scan
if Old_Atp#Atp1 or Old_Rejs#Pec or Old_Tydap#Tydap
if i>0
if Otch[i,11]>0
Otch[i,11]=Sum_Pass/Otch[i,11]
endif
Sum_Pass=0
if Otch[i,17]>0
Otch[i,17]=Otch[i,14]/Otch[i,17]
endif
endif
i=i+1
if Name#Old_Name
Otch[i,1]=Name
Old_Name=Name
endif
* Otch[i,3]=Km
Otch[i,19]=BG_Time
Otch[i,15]=Pec && № рейса
Otch[i,4]=Tydap && Время отправления
Otch[i,2]=Atp_Name
Otch[i,20]=ObraM
* Otch[i,20]=Atp1 && Код АТП
Old_Atp=Atp1
Old_Rejs=Pec
Old_Tydap=Tydap
endif
if Fop=0 && Формирующийся рейс
Otch[i,5]=Otch[i,5]+Numb && Рейсов - план
if Otprav<20
Otch[i,6]=Otch[i,6]+Numb && Рейсов - факт
endif
Otch[i,17]=Otch[i,17]+Direct*KolM
endif
select Bg_Temp
locate for Kpp=Rejs_Table.Bg
if !found() && Не АВ ДАВ
select Rejs_Table
if Otprav<20
Otch[i,7]=Otch[i,7]+KolP && Продано всего
Otch[i,8]=Otch[i,8]+P_KolP && Продано прямых
Otch[i,9]=Otch[i,9]+SumN && Выручка
Otch[i,12]=Otch[i,12]+KolP && Всего продано билетов
Otch[i,13]=Otch[i,13]+P_KolP && Всего прямых
Otch[i,14]=Otch[i,14]+SumN && Сумма выручки
if KolP>0
Otch[i,10]=Otch[i,10]+Km_Sum && Общий километраж
endif
Otch[i,11]=Otch[i,11]+KolM && Коэф. наполн
Sum_Pass=Sum_Pass+KolP+Tranz
endif
loop
endif
j=recno()
select Rejs_Table
Otch[i,3]=Km
if Otprav<20
Otch[i,12+j*9]=Otch[i,12+j*9]+KolP && Продано всего
Otch[i,12+j*9+1]=Otch[i,12+j*9+1]+P_KolP && Продано прямых
Otch[i,12+j*9+2]=Otch[i,12+j*9+2]+SumN && Выручка
if KolP>0
Otch[i,12+j*9+4]=Otch[i,12+j*9+4]+Km_Sum && Общий километраж
endif
Otch[i,12+j*9+5]=Otch[i,12+j*9+5]+KolM && Макс. кол-во мест
Otch[i,12+j*9+6]=Otch[i,12+j*9+6]+KolP+Tranz && Всего отправлено
Otch[i,12+j*9+7]=Otch[i,12+j*9+7]+P_KolP+AKolP && Отправлено прямых
Otch[i,12+j*9+8]=Otch[i,12+j*9+8]+Numb && Рейсов факт
Otch[i,12]=Otch[i,12]+KolP && Всего продано билетов
Otch[i,13]=Otch[i,13]+P_KolP && Всего прямых
Otch[i,14]=Otch[i,14]+SumN && Сумма выручки
endif
if Otch[i,12+j*9+8]>0
if Otch[i,12+j*9+6]/Otch[i,12+j*9+8]>Otch[i,18] && Макс. число пасс.
Otch[i,18]=Otch[i,12+j*9+6]/Otch[i,12+j*9+8]
endif
endif
endscan
if Otch[i,11]>0
Otch[i,11]=Sum_Pass/Otch[i,11]
endif
if Otch[i,17]>0
Otch[i,17]=Otch[i,14]/Otch[i,17]
endif
select Pejc
use
select Rejs_Table
use
for i=1 to MassLen
if Otch[i,7]>0
Otch[i,10]=Otch[i,10]/Otch[i,7] && Средн. километраж
endif
buf=0
for j=1 to Num_Bg
if Otch[i,12+j*9+8]>buf
buf=Otch[i,12+j*9+8]
endif
if Otch[i,12+j*9+5]>0
Otch[i,12+j*9+5]=Otch[i,12+j*9+6]/Otch[i,12+j*9+5] && Коэф. наполн
endif
if Otch[i,12+j*9]>0
Otch[i,12+j*9+4]=Otch[i,12+j*9+4]/Otch[i,12+j*9] && Средн. километраж
endif
endfor
if Otch[i,6]=0
Otch[i,6]=buf
endif
endfor
set default to &Def_Path
************************************************************
if Rep_Type=1 && Накопительная
Summary_Rep()
else
OneRejs_Rep()
endif
XLSheet.Range("A5").Select
XLApp.Calculation=xlCalculationAutomatic
release Otch, MassLen, Num_Bg, AllTyda, AllObra, AllRejs
wait clear
XLApp.Visible=.T.
release XlApp, XlSheet
***********************************************************
Реализация процедуры Rejs_Scan - «Следование рейса»
procedure Rejs_Scan
parameters DB_Month, DB_Year, Beg_Date, End_Date
local bd_base
bd_base='bd'+alltrim(str(DB_Month))+alltrim(str(DB_Year))
if empty(Open_Table(bd_base,'IBEDOM','BD_Table'))
return
endif
set talk on
select Bg, Atp1, Pec, Mar, Otprav, sum(KolM) as KolM, sum(KolP) as KolP, ;
sum(P_KolP) as P_KolP, sum(SumN-SumS-SumT) as SumN, Km, ;
sum(AKolP) as AKolp, sum(Tranz) as Tranz, Count(*) as Numb, Naim, ;
Obra, Tydap, Fop, sum(Km_Sum) as Km_Sum, ;
iif(Fop=0, Direct*20/21-1.5, 0000000.00) as Direct ;
from BD_Table ;
where DatV>=Beg_Date and ;
DatV<=End_Date and prib=0 and Otprav#30 ;
group by Bg, Atp1, Pec, Otprav, Obra, Tydap, Direct ;
into cursor Rejs_Temp1
select b.Bg, b.Atp1, a.Naim as Atp_Name, b.Pec, b.Mar, b.Otprav, KolM, KolP, ;
P_KolP, SumN, AKolp, Tranz, b.Km, b.Numb, b.Naim as Name, b.Obra, ;
b.Tydap, b.Fop, b.Km_Sum, iif(b.Direct>0,Direct, 0000000.00) as Direct;
from Rejs_Temp1 b, Mar_C m, Atp a ;
where m.Mar=b.Mar and b.Atp1=a.Kat;
into table Rejs_Temp
set talk off
select Bd_Table
use
select Rejs_Temp1
use
select Rejs_Table
append from Rejs_Temp
select Rejs_Temp
use
ENDPROC
**********************************************
Реализация процедуры Summary_Rep - «Суммарный километраж»
PROCEDURE Summary_Rep
LOCAL i, j, buf
buf=(pubDate[2]-pubDate[1])/30*4
i=1
do while i<=MassLen
if Otch[i,6]<buf
if empty(Otch[i+1,1])
Otch[i+1,1]=Otch[i,1]
endif
adel(Otch,i)
MassLen=MassLen-1
else
i=i+1
endif
enddo
CreatExc(@XLApp, 1, @XLSheet, 13)
XLApp.Calculation=xlCalculationManual
for i=2 to Num_Bg
XlSheet.Columns("S:AA").Copy
XlSheet.Cells(1,10+i*9).Select
XlSheet.Paste
XlSheet.Cells(1,10+i*9).Value = ''
endfor
XlSheet.Range("S1:AB1").MergeCells = .T.
select BG_Temp
i=1
scan
XlSheet.Cells(2,10+i*9).Value=Name
i=i+1
endscan
use
local Old_Time, Old_Rejs, Old_Obra, k, n, m, ci, ci1
local RejsTyda, RejsObra, AllRejs, AllTyda, AllObra
RejsTyda=''
RejsObra=''
AllTyda=''
AllObra=''
AllRejs=''
k=Masslen+8
XLSheet.Rows(5).Copy
XLSheet.Range("A6:A"+alltrim(str(k))).Select
XLSheet.Paste
j=5
ci=alltrim(str(j))
Old_Time=Otch[1,19]
Old_Rejs=Otch[1,15]
Old_Obra=Otch[1,20]
for i=1 to MassLen
if Otch[i,19]#Old_Time or Otch[i,15]#Old_Rejs
if ci#alltrim(str(j-1))
XLSheet.Rows(k).Copy
k=k+1
XLSheet.Rows(k).Select
XLSheet.Paste
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;
.Borders(3).Weight = xlMedium
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;
.Borders(4).Weight = xlMedium
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;
.Font.Bold=.T.
if Old_Obra='1' && Прямой рейс
XlSheet.Cells(j,1).Value='Итого прямой рейс:'
else
XlSheet.Cells(j,1).Value='Итого обратн. рейс:'
endif
Itog(ci,alltrim(str(j-1)),j)
j=j+1
endif
if Old_Obra='1' && Прямой рейс
AllTyda=AllTyda+RejsTyda
else
AllObra=AllObra+RejsObra
endif
if Otch[i,19]#Old_Time && Итого рейс
XLSheet.Rows(k).Copy
k=k+1
XLSheet.Rows(k).Select
XLSheet.Paste
XlSheet.Cells(j,1).Value='Итого рейс:'
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;
.Borders(3).Weight = xlMedium
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;
.Borders(4).Weight = xlMedium
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;
.Font.Bold=.T.
AllRejs=RejsTyda+RejsObra+'0'
AllItog(AllRejs, j, 0)
RejsTyda=''
RejsObra=''
j=j+1
endif
ci=alltrim(str(j))
Old_Rejs=Otch[i,15]
Old_Time=Otch[i,19]
Old_Obra=Otch[i,20]
endif
ci1=alltrim(str(j))
if Old_Obra='1' && Прямой рейс
RejsTyda=RejsTyda+'Otch['+alltrim(str(i))+',k]+'
else
RejsObra=RejsObra+'Otch['+alltrim(str(i))+',k]+'
endif
for n=1 to 14
XlSheet.Cells(j,n).Value=Otch[i,n]
endfor
for n=16 to 18
XlSheet.Cells(j,n).Value=Otch[i,n]
endfor
for n=1 to Num_Bg
if Otch[i,12+n*9]>0
Otch[i,12+n*9+3]=Otch[i,12+n*9+2]/Otch[i,12+n*9]
endif
for m=1 to 3
XlSheet.Cells(j,9+n*9+m).Value=Otch[i,11+n*9+m]
endfor
for m=5 to 9
XlSheet.Cells(j,9+n*9+m).Value=Otch[i,11+n*9+m]
endfor
endfor
j=j+1
endfor
***************************************************
if ci#alltrim(str(j-1))
XLSheet.Rows(k).Copy
k=k+1
XLSheet.Rows(k).Select
XLSheet.Paste
endif
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;
.Borders(3).Weight = xlMedium
if ci#alltrim(str(j-1))
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j+3,18+Num_Bg*9)).Font.Bold=.T.
if Old_Obra='1'
XlSheet.Cells(j,1).Value='Итого прямой рейс:'
else
XlSheet.Cells(j,1).Value='Итого обратн. рейс:'
endif
Itog(ci,alltrim(str(j-1)),j)
j=j+1
endif
if Old_Obra='1'
AllTyda=AllTyda+RejsTyda+'0'
AllObra=AllObra+'0'
else
AllObra=AllObra+RejsObra+'0'
AllTyda=AllTyda+'0'
endif
**********************************************
XlSheet.Cells(j,1).Value='Итого рейс:'
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;
.Borders(3).Weight = xlMedium
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;
.Borders(4).Weight = xlMedium
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;
.Font.Bold=.T.
AllRejs=RejsTyda+RejsObra+'0'
AllItog(AllRejs, j, 0)
j=j+1
XlSheet.Cells(j,1).Value='Всего в прямом:'
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;
.Borders(3).Weight = xlMedium
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)).Font.Bold=.T.
AllItog(AllTyda, j, 0)
j=j+1
XlSheet.Cells(j,1).Value='Всего в обратном:'
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;
.Borders(4).Weight = xlMedium
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)).Font.Bold=.T.
AllItog(AllObra, j, 0)
j=j+1
XlSheet.Cells(j,1).Value='Всего:'
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)) ;
.Borders(4).Weight = xlMedium
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,18+Num_Bg*9)).Font.Bold=.T.
AllRejs='XlSheet.Cells('+alltrim(str(j-2))+',k-buf).Value+'+ ;
'XlSheet.Cells('+alltrim(str(j-1))+',k-buf).Value'
AllItog(AllRejs, j, 2)
XlSheet.Range(XlSheet.Cells(5,1), XlSheet.Cells(5,18+Num_Bg*9)) ;
.Borders(3).Weight = xlMedium
ENDPROC
*****************************************************************
Реализация процедуры OneRejs_Rep - «Километраж за единый рейс»
PROCEDURE OneRejs_Rep
local i, j, n, m, buf
buf=(pubDate[2]-pubDate[1])/30*4
i=1
do while i<=MassLen
if Otch[i,6]>buf
for j=7 to 10
Otch[i,j]=Otch[i,j]/Otch[i,6]
endfor
for j=12 to 14
Otch[i,j]=Otch[i,j]/Otch[i,6]
endfor
for n=1 to Num_Bg
for m=1 to 3
Otch[i, 11+n*9+m]=Otch[i, 11+n*9+m]/Otch[i,6]
endfor
for m=7 to 8
Otch[i, 11+n*9+m]=Otch[i, 11+n*9+m]/Otch[i,6]
endfor
endfor
i=i+1
else
if empty(Otch[i+1,1])
Otch[i+1,1]=Otch[i,1]
endif
adel(Otch,i)
MassLen=MassLen-1
endif
enddo
CreatExc(@XLApp, 1, @XLSheet, 14)
XLApp.Calculation=xlCalculationManual
FOR i=2 TO Num_Bg
XlSheet.Columns("Q:X").Copy
XlSheet.Cells(1,9+i*8).Select
XlSheet.Paste
XlSheet.Cells(1,9+i*8).Value = ''
ENDFOR
XlSheet.Range("Q1:Y1").MergeCells = .T.
select BG_Temp
i=1
scan
XlSheet.Cells(2,9+i*8).Value=Name
i=i+1
endscan
use
local Old_Time, Old_Rejs, Old_Obra, k, ci, ci1
local RejsTyda, RejsObra, AllRejs, AllTyda, AllObra
RejsTyda=''
RejsObra=''
AllTyda=''
AllObra=''
AllRejs=''
k=Masslen+8
XLSheet.Rows(5).Copy
XLSheet.Range("A6:A"+alltrim(str(k))).Select
XLSheet.Paste
j=5
ci=alltrim(str(j))
Old_Time=Otch[1,19]
Old_Rejs=Otch[1,15]
Old_Obra=Otch[1,20]
for i=1 to MassLen
if Otch[i,19]#Old_Time or Otch[i,15]#Old_Rejs
if ci#alltrim(str(j-1))
XLSheet.Rows(k).Copy
k=k+1
XLSheet.Rows(k).Select
XLSheet.Paste
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;
.Borders(3).Weight = xlMedium
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;
.Borders(4).Weight = xlMedium
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;
.Font.Bold=.T.
if Old_Obra='1' && Прямой рейс
RejsTyda='XlSheet.Cells('+alltrim(str(j))+',k).Value+'
XlSheet.Cells(j,1).Value='Итого прямой рейс:'
else
RejsObra='XlSheet.Cells('+alltrim(str(j))+',k).Value+'
XlSheet.Cells(j,1).Value='Итого обратн. рейс:'
endif
Itog1(ci,alltrim(str(j-1)),j)
j=j+1
else
if Old_Obra='1' && Прямой рейс
RejsTyda='XlSheet.Cells('+alltrim(str(j-1))+',k).Value+'
else
RejsObra='XlSheet.Cells('+alltrim(str(j-1))+',k).Value+'
endif
endif
if Old_Obra='1' && Прямой рейс
AllTyda=AllTyda+RejsTyda
else
AllObra=AllObra+RejsObra
endif
if Otch[i,19]#Old_Time && Итого рейс
XLSheet.Rows(k).Copy
k=k+1
XLSheet.Rows(k).Select
XLSheet.Paste
XlSheet.Cells(j,1).Value='Итого рейс:'
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;
.Borders(3).Weight = xlMedium
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;
.Borders(4).Weight = xlMedium
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;
.Font.Bold=.T.
AllRejs=RejsTyda+RejsObra+'0'
AllItog1(AllRejs, j)
RejsTyda=''
RejsObra=''
j=j+1
endif
ci=alltrim(str(j))
Old_Rejs=Otch[i,15]
Old_Time=Otch[i,19]
Old_Obra=Otch[i,20]
endif
ci1=alltrim(str(j))
for n=1 to 4
XlSheet.Cells(j,n).Value=Otch[i,n]
endfor
for n=7 to 14
XlSheet.Cells(j,n-2).Value=Otch[i,n]
endfor
for n=16 to 18
XlSheet.Cells(j,n-2).Value=Otch[i,n]
endfor
for n=1 to Num_Bg
if Otch[i,12+n*9]>0
Otch[i,12+n*9+3]=Otch[i,12+n*9+2]/Otch[i,12+n*9]
endif
for m=1 to 3
XlSheet.Cells(j,8+n*8+m).Value=Otch[i,11+n*9+m]
endfor
for m=5 to 8
XlSheet.Cells(j,8+n*8+m).Value=Otch[i,11+n*9+m]
endfor
endfor
j=j+1
endfor
***************************************************
if ci#alltrim(str(j-1))
XLSheet.Rows(k).Copy
k=k+1
XLSheet.Rows(k).Select
XLSheet.Paste
endif
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;
.Borders(3).Weight = xlMedium
if ci#alltrim(str(j-1))
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j+3,16+Num_Bg*8)).Font.Bold=.T.
if Old_Obra='1'
XlSheet.Cells(j,1).Value='Итого прямой рейс:'
RejsTyda='XlSheet.Cells('+alltrim(str(j))+',k).Value+'
else
XlSheet.Cells(j,1).Value='Итого обратн. рейс:'
RejsObra='XlSheet.Cells('+alltrim(str(j))+',k).Value+'
endif
Itog1(ci,alltrim(str(j-1)),j)
j=j+1
else
if Old_Obra='1' && Прямой рейс
RejsTyda='XlSheet.Cells('+alltrim(str(j-1))+',k).Value+'
else
RejsObra='XlSheet.Cells('+alltrim(str(j-1))+',k).Value+'
endif
endif
if Old_Obra='1'
AllTyda=AllTyda+RejsTyda+'0'
AllObra=AllObra+'0'
else
AllObra=AllObra+RejsObra+'0'
AllTyda=AllTyda+'0'
endif
**********************************************
XlSheet.Cells(j,1).Value='Итого рейс:'
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;
.Borders(3).Weight = xlMedium
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;
.Borders(4).Weight = xlMedium
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;
.Font.Bold=.T.
AllRejs=RejsTyda+RejsObra+'0'
AllItog1(AllRejs, j)
j=j+1
XlSheet.Cells(j,1).Value='Всего в прямом:'
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;
.Borders(3).Weight = xlMedium
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)).Font.Bold=.T.
AllItog1(AllTyda, j)
j=j+1
XlSheet.Cells(j,1).Value='Всего в обратном:'
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;
.Borders(4).Weight = xlMedium
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)).Font.Bold=.T.
AllItog1(AllObra, j)
j=j+1
XlSheet.Cells(j,1).Value='Всего:'
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)) ;
.Borders(4).Weight = xlMedium
XlSheet.Range(XlSheet.Cells(j,1), XlSheet.Cells(j,16+Num_Bg*8)).Font.Bold=.T.
AllRejs='XlSheet.Cells('+alltrim(str(j-2))+',k).Value+'+ ;
'XlSheet.Cells('+alltrim(str(j-1))+',k).Value'
AllItog1(AllRejs, j)
XlSheet.Range(XlSheet.Cells(5,1), XlSheet.Cells(5,16+Num_Bg*8)) ;
.Borders(3).Weight = xlMedium
ENDPROC
*********************************************************
Реализация функции load_factor - «Загруженность работы автовокзала»
local buf, pubDate[2]
buf='01.'+str(ThisForm.From_Month)+'.'+str(ThisForm.From_Year)
if empty(ctod(buf))
MessageBox('Неверная дата начала периода',16,'Выбор интервала времени')
return
else
pubDate[1]=ctod(buf)
endif
if ThisForm.To_Month=12
buf=31
else
buf=day(ctod('01.'+str(ThisForm.To_Month+1)+'.'+str(ThisForm.To_Year))-1)
endif
buf=str(buf)+'.'+str(ThisForm.To_Month)+'.'+str(ThisForm.To_Year)
if empty(ctod(buf))
MessageBox('Неверная дата конца периода',16,'Выбор интервала времени')
return
else
pubDate[2]=ctod(buf)
endif
if pubDate[1]>pubDate[2]
MessageBox('Дата начала периода больше даты конца периода',16,'Выбор интервала времени')
return
endif
if pubDate[2]>date()
MessageBox('Дата конца периода больше текущей даты',16,'Выбор интервала времени')
return
endif
if Year(pubDate[1])<Year(pubDate[2])-1
MessageBox('Слишком большой период',16,'Выбор интервала времени')
return
endif
PRIVATE XLApp, pubMonth, pubYear
XLApp=0
pubMonth=ThisForm.MonthArray[Month(pubDate[1])]
pubYear=alltrim(str(Year(pubDate[1])))
public _BG[1], MassLen, NDS
if empty(Open_Table('Filial'))
return
endif
set deleted on
Set_BG()
MassLen = ALEN(_BG)
if MassLen<=1
release _BG, _Atp, MassLen, pubDate
return
endif
if ThisForm.From_Month=ThisForm.To_Month and ThisForm.From_Year=ThisForm.To_Year && За один месяц
PRIVATE XLSheets
XlSheets=0
if !CreatExc(@XLApp, 1, @XLSheets, 28)
return .f.
endif
XLApp.Calculation=xlCalculationManual
Load_Factor(@XlSheets, Month(pubDate[1]), Year(pubDate[1]), pubMonth)
XLApp.Calculation=xlCalculationAutomatic
XLApp.Visible = .T.
release XlSheets, _BG, MassLen, pubDate
ThisForm.Release
return
endif
local Month_Num && Несколько месяцев
if Year(pubDate[1])=Year(pubDate[2])
Month_Num=Month(pubDate[2])-Month(pubDate[1])+1
else
Month_Num=13-Month(pubDate[1])+Month(pubDate[2])
endif
Month_Num=Month_Num+1 && Итоговый лист
****************************************************
public Month_Array[Month_Num], XLSheets[Month_Num]
store 0 to XlSheets
local j
j=1
if Year(pubDate[1])=Year(pubDate[2])
for i=Month(pubDate[1]) to Month(pubDate[2])
Month_Array[j]=ThisForm.MonthArray[i]+'_'+alltrim(str(Year(pubdate[1])))
j=j+1
endfor
else
for i=Month(pubDate[1]) to 12
Month_Array[j]=ThisForm.MonthArray[i]+'_'+alltrim(str(Year(pubdate[1])))
j=j+1
endfor
for i=1 to Month(pubDate[2])
Month_Array[j]=ThisForm.MonthArray[i]+'_'+alltrim(str(Year(pubdate[2])))
j=j+1
endfor
endif
Month_Array[j]='Итого'
if !CreatExc(@XLApp, Month_Num, @XLSheets, 28, @Month_Array)
return .f.
endif
XLApp.Calculation=xlCalculationManual
j=1
if Year(pubDate[1])=Year(pubDate[2])
for i=Month(pubDate[1]) to Month(pubDate[2])
pubMonth=ThisForm.MonthArray[i]
pubYear=alltrim(str(Year(pubDate[1])))
Load_Factor(XlSheets[j], i, Year(pubDate[1]), ThisForm.MonthArray[i])
j=j+1
endfor
else
for i=Month(pubDate[1]) to 12
pubMonth=ThisForm.MonthArray[i]
pubYear=alltrim(str(Year(pubDate[1])))
Load_Factor(XlSheets[j], i, Year(pubDate[1]), ThisForm.MonthArray[i])
j=j+1
endfor
for i=1 to Month(pubDate[2])
pubMonth=ThisForm.MonthArray[i]
pubYear=alltrim(str(Year(pubDate[2])))
Dohod(XlSheets[j], i, Year(pubDate[2]), ThisForm.MonthArray[i])
j=j+1
endfor
endif
Load_Factor_All(XlSheets[Month_Num], @Month_Array, Month_Num, pubDate[1], pubDate[2])
select Filial
use
XLApp.Calculation=xlCalculationAutomatic
XLApp.Visible = .T.
release XlSheets, _BG, MassLen, pubDate
ThisForm.Release
Размещено на Allbest.ru
Подобные документы
Создание программного обеспечения для автоматизации процесса администрирования сеансов кинотеатра и продажи билетов. Разработка приложений базы данных по учету управления продажи билетов в кинотеатре средствами Microsoft Access. Программный листинг.
курсовая работа [572,9 K], добавлен 15.04.2014Автоматизация регистрации и хранения данных о самолетах и экипажах. Автоматизация получения справок о полетах потенциальными пассажирами. Анализ области применения и планирование требований. Проектирование базы данных. Формирование основных SQL запросов.
курсовая работа [625,8 K], добавлен 15.08.2010Разработка информационной системы учета регистрации пассажиров и реализации билетов в кассе аэрофлота. Изменение учетных данных клиентов аэропорта. Реализация функции возврата билета. Составление посадочной ведомости и отчета по продажам билетов.
курсовая работа [4,9 M], добавлен 13.08.2012Разработка системы, предназначенной для автоматизации работы касс железнодорожного вокзала. Хранение сведений о проданных билетах, их возврате, отчеты о количестве проданных, оплате для любого заданного периода времени. Концептуальная схема базы данных.
курсовая работа [3,5 M], добавлен 06.08.2013Создание базы данных "Автовокзал" как части информационной системы. Требования к базе данных и этапы ее разработки. Анализ информационных потоков, выбор модели. Входные и выходные данные. Программирование базы данных на языке Borland Delphi 7.0.
курсовая работа [105,8 K], добавлен 16.05.2011Выбор методологии проектирования и разработка информационной системы "Расчёт зарплаты" для предприятия ОАО РТП "Авторемонтник". Архитектурное проектирование базы данных информационной системы и разработка её интерфейса. Тестирование программного модуля.
дипломная работа [2,3 M], добавлен 25.05.2014Анализ входной информации и процессов, уровня автоматизации на предприятии. Выявление объекта и задачи автоматизации. Разработка концепции построения информационной модели информационной системы. Разработка структуры базы данных и клиентского приложения.
дипломная работа [2,0 M], добавлен 22.11.2015Разработка информационной системы на платформе "1С:Предприятие 8.0" для автоматизации документооборота и учета по приему аварийных автомобилей и составлению заказ-нарядов. Проектирование интерфейса. Построение логической и физической моделей данных.
дипломная работа [640,5 K], добавлен 14.02.2015Обслуживающая система предприятия. Услуги по перевозкам пассажиров. Клиенты автовокзала - лица, проживающие в данном регионе. Предназначение системы "Автовокзал-2" для автоматизации продажи билетов на междугородние и пригородные автобусные перевозки.
курсовая работа [618,5 K], добавлен 19.01.2009Моделирование предметной области. Состав программного модуля. Разработка логической структуры единой базы данных банковской информационной системы "БИС". Создание экранных форм для ввода и корректировки информации. Разработка интерфейса пользователя.
курсовая работа [1,8 M], добавлен 17.05.2016