Microsoft Excel

трюкиприёмырешения

Настраиваем учет внесения денежных средств при платных образовательных услугах при помощи Excel и сети Интернет

Форма для регистрации квитанций

Для внесения записей на лист Квитанции предусмотрена форма ввода (рис. 4.32), которая открывается при щелчке на кнопке Регистрация квитанций (рис. 4.33). Первая процедура для создаваемой книги представлена в листинге 4.19, где учтено, что в качестве значения свойства Name формы ввода выбрано Kvit.

Рис. 4.32. Форма для фиксирования выписанных квитанций

Рис. 4.32. Форма для фиксирования выписанных квитанций

Рис. 4.33. Размещение кнопок на листе Квитанции

Рис. 4.33. Размещение кнопок на листе Квитанции

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
' Листинг 4.33. Процедура обработки щелчка на кнопке Создать файл
Private Sub CommandButton3_Click()
N = 0
' Подсчет числа квитанций
While Cells(N + 5, 1).Value <> ""
	N = N + 1
Wend
Open "C:oplata.txt" For Output As #1
For i = 1 To N
If Cells(i + 4, 3).Value = "оплачено" Then
' Внесение номера договора
	a = Cells(i + 4, 1).Value 
    Print #1, a
' Внесение даты договора
	b = Cells(i + 4, 2).Value
    Print #1, b
End If
Next
Close #1
End Sub

Форма содержит много элементов управления различных типов — это надписи (Label), текстовые окна (TextBox), кнопки (CommandButton), список (ListBox), поле со списком (ComboBox) и переключатели (OptionButton). При открытии (активизации) формы автоматически вносится информация в текстовые окна, расположенные напротив надписей Месяц оплаты, Год оплаты и Тариф. В этом случае учитывается текущая дата (установленная на компьютере) и информация, представленная на листе Тарифы. Значения свойства Name рассмотренных текстовых окон, а также поля со списком (расположетюго ниже надписи ФИО учащегося) приведены в табл. 4.4.

Таблица 4.4. Значения свойства Name фрагмента элементов управления на форме

Тип элемента управления Значение Name Подпись рядом
Текстовое окно MesPlata Месяц оплаты
Текстовое окно GodPlata Год оплаты
Текстовое окно Tarif Тариф
Поле со списком People ФИО учащегося

В листинге 4.20 приведена процедура, выполняемая при активизации формы. В ней сначала в переменной N подсчитывается число имеющихся договоров на втором листе. Далее фамилиями учащихся, которые указаны в этих договорах, заполняется поле со списком People. После этого в строке mes = DatePart("m", Date) мы воспользовались двумя стандартными функциями — Date и DatePart. Первая из них позволяет получить текущую дату, а другая — выделить из этой даты числовое значение месяца. Далее аналогичным образом мы получаем текущий год.

1
2
3
4
5
6
7
8
9
10
11
12
// Листинг 4.34. Файл index.html
<html><head><title>Оплата обучения</title>
<style type="text/css">
a {text-decoration:none; font-size:14pt;}
a:hover {text-decoration:underline; color:green; background-color:#CCFFCC;}
</style></head>
<body>
<a href="stud.php">Раздел для студентов</a>
<br>
<a href="stud.php">Администрирование</a>
</body>
</html>

В процедуре листинга 4.20 после получения сведений о текущем месяце и годе данными значениями заполняются окна MesPlata и GodPlata. Далее производится поиск (на листе Тарифы) значения тарифа на указанные таким образом месяц и год. Если такой тариф имеется, то его значение записывается в текстовое окно Tarif.

Кнопка Расчет необходима в случае, если учащийся собирается оплатить квитанцию не в текущем месяце, а позднее. В этом случае, набрав в текстовых окнах MesPlata и GodPlata необходимые месяц и год оплаты, следует щелкнуть на кнопке Расчет. В результате мы получим в текстовом окне Tarif новый тариф. В листинге 4.21 приведена процедура, которая выполняется при щелчке на кнопке Расчет.

1
2
3
4
5
6
7
8
// Листинг 4.35. Файл admin.html
<html><head><title>Авторизация</title>
</head><body>
<form action="obr.php" method="post">
Логин: <input type="text" name="n1"><br><br>
Пароль: <input type="password" name="n2"><br><br>
<input name="n3" type="submit" value="OK">
</form></body></html>

Теперь пользователь должен выбрать в поле со списком People учащегося, которому он собирается выписать квитанцию на оплату обучения.

На форме располагается несколько элементов управления типа Label, которые заполняются при выборе конкретного учащегося в поле со списком People. В табл. 4.5 перечислены надписи, в которые вносится информация с листа Квитанции.

Таблица 4.5. Элементы управления, заполняемые при выборе учащегося

Тип элемента управления Значение Name Комментарий
Label DataLog Дата договора
Label NumDog Номер договора
Label Mes1 Информация о последней оплаченной квитанции (начало)
Label God1
Label Mes2 Информация о последней оплаченной квитанции (окончание)
Label God2

Заполнение надписей, перечисленных в табл. 4.5, производится при щелчке на поле со списком People. В листинге 4.22 приведена необходимая процедура для этого случая.

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
// Листинг 4.36. Файл obr.php
<html><head>
<title>Проверка пароля и логина</title>
<style type="text/css">
a {text-decoration:none; font-size:14pt;}
a:hover {text-decoration:underline; color:green; background-color:#CCFFCC;}
</style></head>
<body>
<?php
if (isset($_POST['n3']))
{
	if ($_POST['n1'] == "sm" && $_POST['n2'] == "230")
    {	echo "Авторизация прошла успешно!!!";
    	echo "<br><a href='perevod.html'>
        Перевод информации об оплатах в базу данных</a>";
    }
else
    {	die('Неверный пароль <br><a href="index.html"><br>
        Вернуться на стартовую страницу</a>'); }
    }
else
{ echo '<a href="index.html">Вернуться на главную страницу</a>';}
?>
</body>
</html>

В начале процедуры People_Click в элемент NumDog заносится номер договора, в элемент DataDog — дата выбранного договора. Значительную часть процедуры занимает фрагмент, в котором производится поиск последней оплаченной квитанции по указанному договору. В результате поля Mes1, God1, Mes2 и God2 заполняются полученными данными. В центре формы располагается элемент типа ListBox (Name — Kvitansii), в который выводятся все выписанные квитанции по данному договору.

Информация обо всех выписанных квитанциях дает в ряде случаев дополнительную информацию по оплате конкретного учащегося.

Заключительный фрагмент процедуры People_Clicк позволяет заполнить элементы TextBox, которые фиксируют, с какого месяца будет производиться оплата по выписываемой квитанции. Эти элементы располагаются на форме ниже надписи С какого месяца платить, а значения их свойства NameBeginPlataMes и BeginPlataGod.

Таким образом, после выбора договора автоматически на форме установлена дата следующей оплаты. От пользователя теперь требуется установить один из переключателей, определяющих, за какое количество месяцев учащийся собирается платить. После этого следует щелкнуть на кнопке Рассчитать сумму, что приведет к выполнению процедуры, расположенной в листинге 4.23.

1
2
3
4
5
6
7
8
9
// Листинг 4.37. Файл perevod.html
<html><head>
<title>Отправка на сайт файла</title>
</head><body>
<h1>Отправка на сайт файла</h1>
<form action="upload.php" method="post" enctype="multipart/form-data">
Имя файла:<input type="file" name="filename" size="40"><br><br>
<input type="submit" value="Загрузить"><br>
</form></body></html>

Для текстового окна, предназначенного для суммы новой квитанции, выбрано имя NewSymma. В него вносится произведение количества оплачиваемых месяцев на значение тарифа. В правой нижней части формы расположено два элемента типа Label для отражения интервала окончания оплаты (последний месяц оплачиваемого интервала):

  • FinMes — для месяца;
  • FinGod — для года.
Рис. 4.34. Расчет суммы для новой квитанции

Рис. 4.34. Расчет суммы для новой квитанции

Результат заполнения параметров квитанции показан на рис. 4.34. Теперь вся необходимая информация сформирована, и осталось распечатать бланк квитанции, а также зафиксировать данную квитанцию в информационной базе на листе Квитанции. Эти действия выполняются при щелчке на кнопке ОК в нижней части формы. В листинге 4.24 приведена процедура обработки щелчка на кнопке ОК, в которой реализована запись информации на лист Квитанции. Что касается формирования самого бланка с квитанцией, то подобную задачу мы уже рассматривали. Поэтому здесь ее повторять не будем.

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
// Листинг 4.38. Файл upload.php
<html><head>
<title>Копирование информации в базу данных</title>
</head><body>
<?php
if (copy($_FILES["filename"]["tmp_name"],$_FILES["filename"]["name"]))
{
	echo "<h1>Файл перенесен на сервер!</h1>";
    require_once('connect.php');
    $f=fopen("oplata.txt","rt") or die("не могу открыть файл");
    while (!feof($f))
    {	$data1-fgets($f); // договор
    $data2=fgets($f); // сумма
    if ($data1 <> "")
    {
    $sql="INSERT INTO oplata SET
    summa=".$data1.",dog='".$data1."'";
    MySQL_query($sql) or die(MySQL_error());
    echo "Информация введена в базу данных<br>";
    }
    }
    fclose($f);
}
?>
</body>
</html>

В процедуре листинга 4.24 сначала проверяется заполнение необходимых параметров квитанции. Если какие-либо сведения не указаны, то пользователь возвращается к работе с формой. При условии, что все необходимые сведения введены, информация о новой квитанции заносится на лист Квитанции. Таким образом, мы обеспечили механизм внесения в базу данных информации об очередной квитанции. Следующая задача — обеспечить механизм регистрации оплаты. Для этого на листе Квитанции уже предусмотрена кнопка Регистрация оплаты.

1 2 3 4 5 6 7 8


Top