ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅, ΠΎΡ‡Π΅Π½ΡŒ быстро...
Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ вмСстС Π΄ΠΎ ΠΏΠΎΠ±Π΅Π΄Ρ‹

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° «Автоматизированная систСма управлСния ΠΎΡ‚Π΄Π΅Π»ΠΎΠΌ Π±ΡƒΡ…Π³Π°Π»Ρ‚Π΅Ρ€ΠΈΠΈ ΠΏΠΎ расчСту Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹Β»

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

БистСмныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ доступ ΠΊ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡΠΌ ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ…, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΉΠΊΠ°Ρ… сСрвСра. ΠŸΡ€ΠΈ этом ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ настройки сСрвСра. К ΡΡ‚ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ относят Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСобразования Ρ‚ΠΈΠΏΠΎΠ² CAST ΠΈ CONVERT, послСдняя позволяСт Π·Π°Π΄Π°Ρ‚ΡŒ ΡΡ‚ΠΈΠ»ΡŒ для конвСртирования Π΄Π°Ρ‚Ρ‹ Π² ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…; CURRENT_USER — позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, CURRENT_TIMESTAMP — Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ Π΄Π°Ρ‚Ρƒ ΠΈ Π²Ρ€Π΅ΠΌΡ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° «Автоматизированная систСма управлСния ΠΎΡ‚Π΄Π΅Π»ΠΎΠΌ Π±ΡƒΡ…Π³Π°Π»Ρ‚Π΅Ρ€ΠΈΠΈ ΠΏΠΎ расчСту Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹Β» (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠœΠΈΠ½ΠΈΡΡ‚Π΅Ρ€ΡΡ‚Π²ΠΎ образования РСспублики Π‘Π΅Π»Π°Ρ€ΡƒΡΡŒ Π£Ρ‡Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ образования

«Π“ΠΎΠΌΠ΅Π»ΡŒΡΠΊΠΈΠΉ государствСнный унивСрситСт ΠΈΠΌΠ΅Π½ΠΈ Ѐранциска Π‘ΠΊΠΎΡ€ΠΈΠ½Ρ‹»

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚ ΠšΠ°Ρ„Π΅Π΄Ρ€Π° матСматичСских ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ управлСния ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΠΊΡƒΡ€ΡΡƒ «Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…»

Ρ€ΠΠ—Π ΠΠ‘ΠžΠ’ΠšΠ Π£Π§Π•Π‘ΠΠžΠ“Πž ΠŸΠ ΠžΠ•ΠšΠ’Π «ΠΠ’Π’ΠžΠœΠΠ’Π˜Π—Π˜Π ΠžΠ’ΠΠΠΠΠ― Π‘Π˜Π‘Π’Π•ΠœΠ Π£ΠŸΠ ΠΠ’Π›Π•ΠΠ˜Π― ΠΎΡ‚Π΄Π΅Π»ΠΎΠΌ Π±ΡƒΡ…Π³Π°Π»Ρ‚Π΅Ρ€ΠΈΠΈ ΠΏΠΎ Ρ€Π°ΡΡ‡Π΅Ρ‚Ρƒ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹»

Π˜ΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ:

студСнт Π³Ρ€ΡƒΠΏΠΏΡ‹ ПО-41 Π€Π΅Π΄ΠΎΡ€Π΅Π½ΠΊΠΎ А.М.

Π“ΠΎΠΌΠ΅Π»ΡŒ 2014

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π§Π΅Π»ΠΎΠ²Π΅ΠΊ всСгда стрСмился ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ свою Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ свои возмоТности. ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ Π±Ρ‹Π»ΠΈ созданы для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΎΠ½ΠΈ всС Ρ‡Π°Ρ‰Π΅ стали ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для построСния систСм ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², содСрТащСйся Π² Π½ΠΈΡ… ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π² ΡΡ‚ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡΠΈΡΡ‚Π΅ΠΌ управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Π˜Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ позволяСт:

— ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ, Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ ΡΠΎΡ…Ρ€Π°Π½Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…;

— ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚Ρ€ΡƒΠ΄Π°;

— ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ простоту ΠΈ Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒ использования Π΄Π°Π½Π½Ρ‹Ρ…;

— ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΎΡ‚ Π΄Π°Π½Π½Ρ‹Ρ… (ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΡ… ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ ΠΈ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² хранСния);

— ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…;

— ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π·Π° ΡΡ‡Π΅Ρ‚ структурирования Π΄Π°Π½Π½Ρ‹Ρ….

ЦСлью курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ являСтся ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ срСдств Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡΠΈΡΡ‚Π΅ΠΌΠ°ΠΌΠΈ управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ MS SQL SERVER. Π—Π°Π΄Π°Ρ‡Π° курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ — Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ «ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрноС» ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΡ‚Π΄Π΅Π»Π° Π±ΡƒΡ…Π³Π°Π»Ρ‚Π΅Ρ€ΠΈΠΈ ΠΏΠΎ ΡƒΡ‡Π΅Ρ‚Ρƒ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹ ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MS SQL SERVER.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ клиСнтской ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Ρ‹Π» использован C++ Builder.

Основная Ρ‡Π°ΡΡ‚ΡŒ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ состоит ΠΈΠ· ΠΏΡΡ‚ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ².

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ описано Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Π² Ρ…ΠΎΠ΄Π΅ курсового проСктирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ прилоТСния, Π΅Π³ΠΎ основныС возмоТности.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π·Π΄Π΅Π» содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Ρ… функциях MS SQL SERVER.

Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ описан состав Ρ‚Π°Π±Π»ΠΈΡ† Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° схСма Π΄Π°Π½Π½Ρ‹Ρ…, описана структура Ρ‚Π°Π±Π»ΠΈΡ† Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ SQL-ΠΊΠΎΠ΄ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ.

Π’ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ описан Π΄ΠΈΠ°Π»ΠΎΠ³ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

Π’ ΠΏΡΡ‚ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ описаны Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ срСдства SQL-сСрвСра ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ SQL-тСкст Π΄Π°Π½Π½Ρ‹Ρ… срСдств.

1. НазначСниС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΡ‚Π΄Π΅Π»Π° Π±ΡƒΡ…Π³Π°Π»Ρ‚Π΅Ρ€ΠΈΠΈ ΠΏΠΎ Ρ€Π°ΡΡ‡Π΅Ρ‚Ρƒ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹. Оно позволяСт Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ справочники ΠΎΡ‚Π΄Π΅Π»ΠΎΠ², долТностСй, Π²ΠΈΠ΄ΠΎΠ² начислСний ΠΈ ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ, Π΄Π°Ρ‚ начислСния Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹. Основная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ прилоТСния: ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ ΡΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠ°Ρ…, ΠΈΡ… Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΡ… Π½Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΠΈ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ расчСт Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹ ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ Ρ‚Π°Π±Π΅Π»ΡŒ с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Π΅ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… часов, ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… начислСниях ΠΈ ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΡΡ…. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со ΡΠΏΠΈΡΠΊΠΎΠΌ сотрудников ΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΉ табСля Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΠΎΠΈΡΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈ вставкС Π½ΠΎΠ²ΠΎΠΉ Π΄Π°Ρ‚Ρ‹ Π² ΡΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ, для походящих Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ автоматичСски осущСствляСтся Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Ρ‚Π°Π±Π΅Π»ΡŒ.

Π’Π°ΠΊ ΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ сравнСния уровня Π²Ρ‹ΠΏΠ»Π°Ρ‚ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚ Π² ΠΎΡ‚Π΄Π΅Π»Π°Ρ… Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π΅.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° позволяСт ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ:

— ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ях с ΠΎΠΊΠ»Π°Π΄ΠΎΠΌ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅;

— Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΡ… сотрудника;

— Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ях, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ сотрудники ΠΎΡ‚Π΄Π΅Π»Π° ΠΈ ΡΠΏΠΈΡΠΊΠΎΠΌ сотрудников Π½Π° Π½ΠΈΡ…;

— Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°Ρ… Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΎΠ², сгруппированных ΠΏΠΎ ΠΌΠ΅ΡΡΡ†Π°ΠΌ, Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄.

ВСдСтся ΠΆΡƒΡ€Π½Π°Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†, с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ выполнСния ΠΎΡ‚ΠΊΠ°Ρ‚Π° дСйствий ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. МоТно Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ сСрвСр ΠΈ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… для Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ способ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прилоТСния прСдставлСны Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 1.1.

Рисунок 1.1 — ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прилоТСния

2. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MS SQL-Π‘Π΅Ρ€Π²Π΅Ρ€Π° Π‘Ρ€Π΅Π΄ΠΈ стандартных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ MS SQL SERVER ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΡ‹:

— Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ;

— Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ курсоров;

— Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Π°Ρ‚Ρ‹ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ;

— ΠΌΠ°Ρ‚СматичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ;

— Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…;

— Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°Π±ΠΎΡ€ΠΎΠ² записСй;

— Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ бСзопасности;

— ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ;

— ΡΠΈΡΡ‚Π΅ΠΌΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ;

— Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ тСкстовых Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ [1],.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ Π½Π°Π±ΠΎΡ€Π°ΠΌ записСй ΠΈ Ρ‡Π°ΡΡ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΡΠΎΡ‡Π΅Ρ‚Π°Π½ΠΈΠΈ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ GROUP BY. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ сумму (SUM), срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (AVG), ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΠΎΠ΅ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ (STDEV), Π΄ΠΈΡΠΏΠ΅Ρ€ΡΠΈΡŽ (VAR), минимальноС (MIN) ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ (MAX) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΠ»ΡŽ ΠΈΠ»ΠΈ количСство записСй Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ (COUNT). Π‘ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова ALL — ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎ Π²ΡΠ΅ΠΌ значСниям выраТСния Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ DISTINCT — Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ СдинствСнный Ρ€Π°Π·. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ подзапросом.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ курсоров ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΡΠΎΡΡ‚оянии курсора ΠΏΠΎ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. К ΡΡ‚ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ относится функция CURSOR_STATUS. Π’Π°ΠΊ ΠΆΠ΅ ΠΊ Ρ„ункциям этой Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΌΠΎΠΆΠ½ΠΎ отнСсти @@FETCH_STATUS — Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° FETCH, ΠΈ @@CURSOR_ROWS — количСство строк Π² ΠΊΡƒΡ€ΡΠΎΡ€Π΅.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Π°Ρ‚Ρ‹ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для получСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠ°ΠΊ Π² Ρ‡ΠΈΡΠ»ΠΎΠ²ΠΎΠΌ (DATEPART, DATE, MONTH, YEAR), Ρ‚Π°ΠΊ ΠΈ Π² Ρ‚Скстовом Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ (DATENAME), измСнСния (DATEADD) ΠΈ ΠΏΠΎΠ΄ΡΡ‡Π΅Ρ‚Π° Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ (DATEDIFF) ΠΌΠ΅ΠΆΠ΄Ρƒ двумя значСниями, получСния Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… Π΄Π°Ρ‚Ρ‹ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (GETDATE, GETUTCDATE).

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для выполнСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ — Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ (POWER, SQUARE, SQRT), логарифмичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (LOG, LOG10, EXP), вычислСниС тригономСтричСских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (SIN, COS, TAN, COT, ASIN, ACOS, ATAN, DEGREES, RADIANS, PI), ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ (CEILING, FLOOR, ROUND), ΠΌΠΎΠ΄ΡƒΠ»ΡŒ (ABS), Ρ‚Π°ΠΊ ΠΆΠ΅ функция ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° Ρ‡ΠΈΡΠ»ΠΎΠ²ΠΎΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… (ISNUMERIC). НСкоторыС ΠΈΠ· Π½ΠΈΡ… Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°Π±ΠΎΡ€ΠΎΠ² записСй Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ссылку Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ с Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ сСрвСра (OPENQUERY, OPENROWSET), Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с XML Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ (OPENXML).

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ бСзопасности ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΡ€Π°Π² Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Сля для доступа ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… (HAS_DBACCESS), ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ€ΠΎΠ»ΠΈ (IS_MEMBER, IS_SRVROLEMEMBER), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (SUSER_ID, SUSER_SID, USER_ID) ΠΈ ΠΈΠΌΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (SUSER_NAME, SUSER_SNAME, USER).

Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π½Π°Π±ΠΎΡ€ срСдств для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Скстовыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ рСгистр (LOWER, UPPER), Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ подстроки (LEFT, RIGHT, SUBSTRING), ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ поиск (CHARINDEX, PATINDEX) ΠΈ Π·Π°ΠΌΠ΅Π½Ρƒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (REPLACE, STUFF), Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строки (REPLICATE), ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ строки (LEN). Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ символа (ASCII, UNICODE) ΠΈ ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ (CHAR, NCHAR), ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Π΅ символы (LTRIM, RTRIM) ΠΈ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΡ… (SPACE), ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ порядок символов Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ (REVERSE), ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ число Π² ΡΡ‚Ρ€ΠΎΠΊΡƒ (STR).

БистСмныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ доступ ΠΊ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡΠΌ ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ…, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΉΠΊΠ°Ρ… сСрвСра. ΠŸΡ€ΠΈ этом ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ настройки сСрвСра. К ΡΡ‚ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ относят Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСобразования Ρ‚ΠΈΠΏΠΎΠ² CAST ΠΈ CONVERT, послСдняя позволяСт Π·Π°Π΄Π°Ρ‚ΡŒ ΡΡ‚ΠΈΠ»ΡŒ для конвСртирования Π΄Π°Ρ‚Ρ‹ Π² ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…; CURRENT_USER — позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, CURRENT_TIMESTAMP — Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ Π΄Π°Ρ‚Ρƒ ΠΈ Π²Ρ€Π΅ΠΌΡ. Ѐункция IDENT_CURRENT позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ послСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика сгСнСрированноС для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, IDENT_INCR Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΈΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅, Π° IDENT_SEED — Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика. IDENTITY — примСняСтся для вставки счСтчика Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΏΡ€ΠΈ использовании ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° SELECT INTO.

К Π³Ρ€ΡƒΠΏΠΏΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Скстовыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (text) ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ (image) относят Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ TEXTPRT ΠΈ TEXTVALID, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ указатСля.

Π•ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ограничСния Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ MS SQL SERVER Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ функциях. НапримСр, нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚. Π΅. Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ с ΠΎΠ΄Π½ΠΈΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². АргумСнтация этого ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для построСния вычисляСмых ΠΏΠΎΠ»Π΅ΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅ΠΉ Π² ΠΏΡ€Π΅Π΄ΡΡ‚авлСниях, ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ проиндСксировано. А ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° для ΠΏΠΎΠ»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ значСния ΠΏΡ€ΠΈ любом Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

3. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… прилоТСния Бостав Ρ‚Π°Π±Π»ΠΈΡ† Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 3.1.

Π’Π°Π±Π»ΠΈΡ†Π° 3.1 — Бостав Ρ‚Π°Π±Π»ΠΈΡ† Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… прилоТСния

НаимСнованиС

ΠžΠ±Ρ‰ΠΈΠ΅ свСдСния ΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠΌ

ΠžΡ‚Π΄Π΅Π»Ρ‹

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ ΠΎΡ‚Π΄Π΅Π»ΠΎΠ² прСдприятия

Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ

Бписок сотрудников прСдприятия

ДолТности

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ долТностСй прСдприятия

НазначСния

Бписок Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ сотрудников

Π”Π°Ρ‚Ρ‹

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ Π΄Π°Ρ‚ начислСния Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹

Π’ΠΈΠ΄Ρ‹_начислСний

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ Π²ΠΈΠ΄ΠΎΠ² начислСний

Π’ΠΈΠ΄Ρ‹_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ Π²ΠΈΠ΄ΠΎΠ² ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ

НачислСния

Бписок начислСний для записСй табСля

УдСрТания

Бписок ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ для записСй табСля

ВабСль

Бписок записСй табСля начислСния Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹

appointments_log

Π–ΡƒΡ€Π½Π°Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «ΠΠ°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ»

Π‘Ρ…Π΅ΠΌΠ° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… прСдставлСна Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3.1

Рисунок 3.1 — Π‘Ρ…Π΅ΠΌΠ° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… прилоТСния

Бостав Ρ‚Π°Π±Π»ΠΈΡ† Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… 3.2 — 3.12.

Π’Π°Π±Π»ΠΈΡ†Π° 3.2 — Бостав Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «ΠžΡ‚Π΄Π΅Π»Ρ‹»

НаимСнованиС поля

Π€ΠΎΡ€ΠΌΠ°Ρ‚ поля

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ поля

Код

числовой, счСтчик

ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΎΡ‚Π΄Π΅Π»Π°

НазваниС

тСкстовый

Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»Π°

Π’Π°Π±Π»ΠΈΡ†Π° 3.3 — Бостав Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ»

НаимСнованиС поля

Π€ΠΎΡ€ΠΌΠ°Ρ‚ поля

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ поля

Код

числовой, счСтчик

ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ сотрудника

ЀИО

тСкстовый

фамилия, имя, отчСство сотрудника

Π”Π°Ρ‚Π°_ роТдСния

Π΄Π°Ρ‚Π°/врСмя

Π΄Π°Ρ‚Π° роТдСния сотрудника

Код_ ΠΎΡ‚Π΄Π΅Π»Π°

числовой

ΠΊΠΎΠ΄ ΠΎΡ‚Π΄Π΅Π»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ сотрудник

Π’Π°Π±Π»ΠΈΡ†Π° 3.4 — Бостав Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «Π”олТности»

НаимСнованиС поля

Π€ΠΎΡ€ΠΌΠ°Ρ‚ поля

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ поля

Код

числовой, счСтчик

ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ долТности

НазваниС

тСкстовый

Π½Π°Π·Π²Π°Π½ΠΈΠ΅ долТности

Оклад

Π΄Π΅Π½Π΅ΠΆΠ½Ρ‹ΠΉ

Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠΊΠ»Π°Π΄Π° Π² Ρ€ΡƒΠ±.

Π’Π°Π±Π»ΠΈΡ†Π° 3.5 — Бостав Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «ΠΠ°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ»

НаимСнованиС поля

Π€ΠΎΡ€ΠΌΠ°Ρ‚ поля

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ поля

Код

числовой, счСтчик

ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ назначСния сотрудника Π½Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ

Код_ долТности

числовой

ΠΊΠΎΠ΄ долТности, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Код_ сотрудника

числовой

ΠΊΠΎΠ΄ Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ сотрудника

Π”Π°Ρ‚Π°_ назначСния

Π΄Π°Ρ‚Π°/врСмя

Π΄Π°Ρ‚Π° назначСния сотрудника Π½Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ

Π”Π°Ρ‚Π°_ ΡƒΡ…ΠΎΠ΄Π°

Π΄Π°Ρ‚Π°/врСмя

Π΄Π°Ρ‚Π° ΡƒΡ…ΠΎΠ΄Π° сотрудника с Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΠΈ

Π’Π°Π±Π»ΠΈΡ†Π° 3.6 — Бостав Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «Π”Π°Ρ‚Ρ‹»

НаимСнованиС поля

Π€ΠΎΡ€ΠΌΠ°Ρ‚ поля

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ поля

Код

числовой, счСтчик

ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π΄Π°Ρ‚Ρ‹ для записСй табСля

Π”Π°Ρ‚Π°

Π΄Π°Ρ‚Π°/врСмя

Π΄Π°Ρ‚Π° начислСния Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ _часов

числовой

колличСство часов Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π½ΠΎΠΌ мСсяцС

Π’Π°Π±Π»ΠΈΡ†Π° 3.7 — Бостав Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «Π’ΠΈΠ΄Ρ‹_начислСний»

НаимСнованиС поля

Π€ΠΎΡ€ΠΌΠ°Ρ‚ поля

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ поля

Код

числовой, счСтчик

ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π²ΠΈΠ΄Π° начислСния

НазваниС

тСкстовый

Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄Π° назначСния

Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π°

числовой

Ρ€Π°Π·ΠΌΠ΅Ρ€ начислСния Π² ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°Ρ… ΠΈΠ»ΠΈ рублях

Π’ΠΈΠΏ

тСкстовый

оопрСдСляСт Ρ‚ΠΈΠΏ начислСния (Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ `А` ΠΈΠ»ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ `О`)

Π’Π°Π±Π»ΠΈΡ†Π° 3.8 — Бостав Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «Π’ΠΈΠ΄Ρ‹_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ»

НаимСнованиС поля

Π€ΠΎΡ€ΠΌΠ°Ρ‚ поля

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ поля

Код

числовой, счСтчик

ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π²ΠΈΠ΄Π° удСрТания

НазваниС

тСкстовый

Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄Π° удСрТания

Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π°

числовой

Ρ€Π°Π·ΠΌΠ΅Ρ€ удСрТания Π² ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°Ρ… ΠΈΠ»ΠΈ рублях

Π’ΠΈΠΏ

тСкстовый

опрСдСляСт Ρ‚ΠΈΠΏ удСрТания (Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ `А` ΠΈΠ»ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ `О`)

Π’Π°Π±Π»ΠΈΡ†Π° 3.9 — Бостав Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «ΠΠ°Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡ»

НаимСнованиС поля

Π€ΠΎΡ€ΠΌΠ°Ρ‚ поля

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ поля

Код

числовой, счСтчик

ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ начислСния

Код_Π²ΠΈΠ΄Π°_начислСния

числовой

ΠΊΠΎΠ΄ Π²ΠΈΠ΄Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ начислСния

Код_табСля

числовой

ΠΊΠΎΠ΄ записи табСля для начислСния

ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚

числовой

коэффициСнт измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° начислСния

Π’Π°Π±Π»ΠΈΡ†Π° 3.10 — Бостав Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «Π£Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΡ»

НаимСнованиС поля

Π€ΠΎΡ€ΠΌΠ°Ρ‚ поля

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ поля

Код

числовой, счСтчик

ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ удСрТания

Код_Π²ΠΈΠ΄Π°_удСрТания

числовой

ΠΊΠΎΠ΄ Π²ΠΈΠ΄Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ удСрТания

Код_табСля

числовой

ΠΊΠΎΠ΄ записи табСля для удСрТания

ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚

числовой

коэффициСнт измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° удСрТания

Π’Π°Π±Π»ΠΈΡ†Π° 3.11 — Бостав Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «Π’абСль»

НаимСнованиС поля

Π€ΠΎΡ€ΠΌΠ°Ρ‚ поля

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ поля

Код

числовой, счСтчик

ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ записи табСля

Код_назначСния

числовой

ΠΊΠΎΠ΄ назначСния, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ производится начислСниС Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹

Часы

числовой

количСство ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… часов Π·Π° ΠΌΠ΅ΡΡΡ†

Код_Π΄Π°Ρ‚Ρ‹

числовой

ΠΊΠΎΠ΄ Π΄Π°Ρ‚Ρ‹, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ производится начислСниС Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹

Π’Π°Π±Π»ΠΈΡ†Π° 3.12 — Бостав Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «appointments_log»

НаимСнованиС поля

Π€ΠΎΡ€ΠΌΠ°Ρ‚ поля

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ поля

id

числовой, счСтчик

ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ записи ΠΆΡƒΡ€Π½Π°Π»Π°

oper

тСкстовый

произвСдСнная опСрация

t_user

тСкстовый

ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ²ΡˆΠΈΠΉ дСйствиС

date

Π΄Π°Ρ‚Π°/врСмя

Π΄Π°Ρ‚Π° ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ дСйствия

anum

числовой

код измСнСнной записи

aworker

числовой

ΠΊΠΎΠ΄ сотрудника

aposition

числовой

ΠΊΠΎΠ΄ долТности

astart

Π΄Π°Ρ‚Π°/врСмя

Π΄Π°Ρ‚Π° назначСния Π½Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ

aend

Π΄Π°Ρ‚Π°/врСмя

Π΄Π°Ρ‚Π° ΡƒΡ…ΠΎΠ΄Π° с Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΠΈ

SQL-тСкст создания Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ:

—Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†

CREATE TABLE ΠžΡ‚Π΄Π΅Π»Ρ‹ (Код int IDENTITY Primary key, НазваниС varchar (50) not null)

GO

CREATE TABLE Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ (Код int IDENTITY Primary key, ЀИО varchar (200), Π”Π°Ρ‚Π°_роТдСния datetime, Код_ΠΎΡ‚Π΄Π΅Π»Π° int not null)

GO

CREATE TABLE ДолТности (Код int IDENTITY Primary key, НазваниС varchar (50) not null, Оклад money not null)

GO

CREATE TABLE НазначСния (Код int IDENTITY Primary key, Код_долТности int, Код_сотрудника int, Π”Π°Ρ‚Π°_назначСния datetime, Π”Π°Ρ‚Π°_ΡƒΡ…ΠΎΠ΄Π° datetime)

GO

CREATE TABLE Π”Π°Ρ‚Ρ‹ (Код int IDENTITY Primary key, Π”Π°Ρ‚Π° datetime not null, ΠšΠΎΠ»Π»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ_часов int not null)

GO

CREATE TABLE ВабСль (Код int IDENTITY Primary key, Код_назначСния int, Часы int, Код_Π΄Π°Ρ‚Ρ‹ int)

GO

CREATE TABLE Π’ΠΈΠ΄Ρ‹_начислСний (Код int IDENTITY Primary key, НазваниС varchar (50), Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π° int not null, Π’ΠΈΠΏ varchar (1) not null default 'О')

GO

CREATE TABLE Π’ΠΈΠ΄Ρ‹_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ (Код int IDENTITY Primary key, НазваниС varchar (50), Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π° int not null, Π’ΠΈΠΏ varchar (1) not null default 'О')

GO

CREATE TABLE НачислСния (Код int IDENTITY Primary key, Код_Π²ΠΈΠ΄Π°_начислСния int, Код_табСля int, ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ float)

GO

CREATE TABLE УдСрТания (Код int IDENTITY Primary key, Код_Π²ΠΈΠ΄Π°_удСрТания int, Код_табСля int, ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ float)

GO

—ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ связСй ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ

ALTER TABLE Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ ADD CONSTRAINT FK_Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ_ΠžΡ‚Π΄Π΅Π»Ρ‹ FOREIGN KEY (Код_ΠΎΡ‚Π΄Π΅Π»Π°) REFERENCES ΠžΡ‚Π΄Π΅Π»Ρ‹

GO

ALTER TABLE НазначСния ADD CONSTRAINT FK_НазначСния_Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ FOREIGN KEY (Код_сотрудника) REFERENCES Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ

GO

ALTER TABLE НазначСния ADD CONSTRAINT FK_НазначСния_ДолТности FOREIGN KEY (Код_долТности) REFERENCES ДолТности

GO

ALTER TABLE ВабСль ADD CONSTRAINT FK_ВабСль_НазначСния FOREIGN KEY (Код_назначСния) REFERENCES НазначСния

GO

ALTER TABLE ВабСль ADD CONSTRAINT FK_ВабСль_Π”Π°Ρ‚Ρ‹ FOREIGN KEY (Код_Π΄Π°Ρ‚Ρ‹) REFERENCES Π”Π°Ρ‚Ρ‹

GO

ALTER TABLE НачислСния ADD CONSTRAINT FK_НачислСния_ВабСль FOREIGN KEY (Код_табСля) REFERENCES ВабСль

GO

ALTER TABLE УдСрТания ADD CONSTRAINT FK_УдСрТания_ВабСль FOREIGN KEY (Код_табСля) REFERENCES ВабСль

GO

ALTER TABLE УдСрТания ADD CONSTRAINT FK_УдСрТания_Π’ΠΈΠ΄Ρ‹_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ FOREIGN KEY (Код_Π²ΠΈΠ΄Π°_удСрТания) REFERENCES Π’ΠΈΠ΄Ρ‹_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ

GO

—Π–ΡƒΡ€Π½Π°Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

Create table appointments_log (id int identity primary key, oper char, t_user varchar (50), date datetime, anum int, aworker int, aposition int, astart datetime, aend datetime)

go

4. Π‘Ρ…Π΅ΠΌΠ° Π΄ΠΈΠ°Π»ΠΎΠ³Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ

4.1 ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Ρ‚Π°Π±Π»ΠΈΡ†-справочников

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠ΅ справочников, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΈΠ»ΠΈ Π·Π°ΠΉΡ‚ΠΈ Π² ΠΏΡƒΠ½ΠΊΡ‚ мСню «Π’Π΅Π΄Π΅Π½ΠΈΠ΅» ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π² Π½Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ справочник. МСню прСдставлСно Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.1.

Рисунок 4.1 — МСню рСдактирования справочников Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ прСдставлСн Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.2, ΠΌΠΎΠΆΠ½ΠΎ нСпосрСдствСнно Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. Для пСрСмСщСния ΠΌΠ΅ΠΆΠ΄Ρƒ записями слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΠΏΡ€Π°Π²ΠΎΠΉ части ΠΎΠΊΠ½Π° ΠΈΠ»ΠΈ курсорныС клавиши. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ запись Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈΠ»ΠΈ Π³ΠΎΡ€ΡΡ‡ΡƒΡŽ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ. МоТно ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΡΡ‚ΠΎΠ»Π±Ρ†Π΅ ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ ΠΈ ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ΠΌ Π½Π° Π΅Π³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со ΡΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ А. ΠŸΡ€ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «Π’ΠΈΠ΄Ρ‹ начислСний» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹ контроля ссылочной цСлостности (№ 1) ΠΈ ΠΊΠΎΠ½Ρ‚роля Π΄Π°Π½Π½Ρ‹Ρ… (№ 10). ΠŸΡ€ΠΈ вставкС Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ «Π”Π°Ρ‚Ρ‹» осущСствляСтся каскадная вставка Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ «Π’абСль» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π° (№ 6).

Рисунок 4.2 — Окно рСдактирования справочника ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ записи Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ выполняСмого дСйствия Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ прСдставлСнном Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.3.

Рисунок 4.3 — Запрос подтвСрТдСния удалСния

4.2 Основная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ прилоТСния ΠΏΠΎ Π²Π΅Π΄Π΅Π½ΠΈΡŽ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΡΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠ°Ρ… ΠΈ ΠΈΡ… Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΡ… Π½Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ «Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ» Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡƒΠ½ΠΊΡ‚ мСню, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.4.

Рисунок 4.4 — МСню вСдСния Π±Π°Π·Ρ‹

Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅, прСдставлСнном Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.5, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΠΎΠΈΡΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…, произвСсти сортировку Π² ΡΡ‚ΠΎΠ»Π±Ρ†Π΅. ΠŸΡ€ΠΈ поискС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ всСми Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΌΠΈ записями с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΎΠΊ. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ обновляСмоС прСдставлСниС (№ 2), для вставки записСй примСняСтся ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° (№ 3).

Рисунок 4.5 — Окно со ΡΠΏΠΈΡΠΊΠΎΠΌ сотрудников ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ сотрудника ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΡƒΠΆΠ΅ внСсСнном Π² Π±Π°Π·Ρƒ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ΅ открываСтся ΠΎΠΊΠ½ΠΎ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.6, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ΅ ΠΈ Π΅Π³ΠΎ назначСниях Π½Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΠΈ. Для вставки Π½ΠΎΠ²ΠΎΠ³ΠΎ назначСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° (№ 4).

Рисунок 4.6 — Окно рСдактирования ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΡΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠ΅

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΡ… происходит Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ ΠΎΠΊΠ½Π΅, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½ΠΎΠΌ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.7. ИзмСнСния ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² ΠΆΡƒΡ€Π½Π°Π»Π΅.

Рисунок 4.7 — Окно рСдактирования ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ сотрудника ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΏΡƒΠ½ΠΊΡ‚Π° мСню «Π’абСль» открываСтся ΠΎΠΊΠ½ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдставлСно Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.8. Π’ Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ список записСй табСля Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄. ДоступСн поиск записСй ΠΈ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΎΠΊΠ½Ρƒ со ΡΠΏΠΈΡΠΊΠΎΠΌ сотрудников. Код для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π‘. Вставка записСй осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ (№ 5).

Рисунок 4.8 — Бписок записСй табСля ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ открываСтся ΠΎΠΊΠ½ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.9. Π’ ΡΡ‚ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π² Ρ‚ΠΎΠΌ числС список начислСний ΠΈ ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ. Для получСния списка Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ примСняСтся прСдставлСниС full_appointments_info (№ 1).

Рисунок 4.9 — Окно рСдактирования записи табСля Для рСдактирования Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ Π½Π°Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡΠΌ ΠΈΠ»ΠΈ удСрТаниям слуТит ΠΎΠΊΠ½ΠΎ, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½ΠΎΠ΅ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.10. Для контроля ссылочной цСлостности ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹ (№ 2, 3), для вставки — Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ (№ 6, 7).

Рисунок 4.10 — Окно рСдактирования начислСний ΠΈ ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ

4.3 ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ

Доступ ΠΊ ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΡŽ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡƒΠ½ΠΊΡ‚ мСню «ΠžΡ‚Ρ‡Π΅Ρ‚Ρ‹». ВсСго прСдусмотрСно Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚Ρ‡Π΅Ρ‚Π°. Если Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ «Π’абСль», Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ ΠΎΠΊΠ½ΠΎ, прСдставлСнноС Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.11, Π² Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄, Π΄Π°Π½Π½Ρ‹Π΅ Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ прСдставлСны Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅.

Рисунок 4.11 — Окно задания ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² для ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΏΠΎ Ρ‚Π°Π±Π΅Π»ΡŽ ПослС наТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ «ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ», Π½Π° ΡΠΊΡ€Π°Π½Π΅ появится ΠΎΡ‚Ρ‡Π΅Ρ‚, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ прСдставлСн Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.12. Для получСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ хранимая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° (№ 2) ΠΈ ΡΠΊΠ°Π»ΡΡ€Π½Π°Ρ функция (№ 1).

Рисунок 4.12 — ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΏΠΎ Ρ‚Π°Π±Π΅Π»ΡŽ Π’ ΡΠ»ΡƒΡ‡Π°Π΅ отсутствия Π΄Π°Π½Π½Ρ‹Ρ… Π·Π° Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.13.

Рисунок 4.13 — Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡ‚сутствии Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° «ΠΠ°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ» появится ΠΎΠΊΠ½ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.14. Π’ Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ сотрудника, для получСния списка Π΅Π³ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΠΈ.

Рисунок 4.14 — Π’Ρ‹Π±ΠΎΡ€ сотрудника для построСния ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΏΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΠΌ сотрудника ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.15. Для получСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ хранимая функция (№ 2).

Рисунок 4.15 — ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΏΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΠΌ сотрудника ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ «Π”олТности» Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ ΠΎΠΊΠ½ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.16. Π’ ΡΡ‚ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠΊΠ»Π°Π΄Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… долТностСй, Ссли ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ»Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ пустым.

Рисунок 4.16 — Π—Π°Π΄Π°Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΎΠΊΠ»Π°Π΄Π° для построСния ΠΎΡ‚Ρ‡Π΅Ρ‚Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° прСдставлСн Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.17. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π’.

Рисунок 4.17 — ΠžΡ‚Ρ‡Π΅Ρ‚ со ΡΠΏΠΈΡΠΊΠΎΠΌ долТностСй По ΠΊΠ½ΠΎΠΏΠΊΠ΅ «ΠžΡ‚Π΄Π΅Π»Ρ‹» Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ слСдуСт Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π» для построСния ΠΎΡ‚Ρ‡Π΅Ρ‚Π°. Оно прСдставлСно Π½Π° Ρ€ΠΈΡ. 4.18.

Рисунок 4.18 — Π’Ρ‹Π±ΠΎΡ€ ΠΎΡ‚Π΄Π΅Π»Π° для построСния ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠŸΡ€ΠΈΠΌΠ΅Ρ€ построСнного ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.19. Для получСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ прСдставлСниС (№ 1).

Рисунок 4.19 — Π—Π°Π΄Π°Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΎΠΊΠ»Π°Π΄Π° для построСния ΠΎΡ‚Ρ‡Π΅Ρ‚Π°

4.4 Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ прилоТСния

ΠŸΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ появляСтся ΠΎΠΊΠ½ΠΎ для Π²Ρ‹Π±ΠΎΡ€Π° Ρ‚ΠΈΠΏΠ° Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… для Ρ€Π°Π±ΠΎΡ‚Ρ‹, прСдставлСнноС Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.20. Π’Ρ‹Π±ΠΎΡ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ сохраняСтся ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ся Π² ΠΎΠΊΠ½Π΅ ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π΅Π³ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ.

Рисунок 4.20 — Окно Π΄Π°Π½Π½Ρ‹Ρ… для Π²Ρ…ΠΎΠ΄Π° Если ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ это ΠΎΠΊΠ½ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ, Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ возмоТности ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Доступ ΠΊ ΡΡ‚ΠΈΠΌ настройкам ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡƒΠ½ΠΊΡ‚ мСню «ΠΠ°ΡΡ‚Ρ€ΠΎΠΉΠΊΠ°». Π’ ΡΠ»ΡƒΡ‡Π°Π΅ Ссли ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, выводится ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.21.

Рисунок 4.21 — Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Для просмотра Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ суммы Π·Π°Ρ€ΠΏΠ»Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΎΠ² ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»Π°ΠΌ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² Π³Π»Π°Π²Π½ΠΎΠΌ мСню Π·Π°ΠΉΡ‚ΠΈ Π² «Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹» ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡƒΠ½ΠΊΡ‚ «Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° сумм Π·Π°Ρ€ΠΏΠ»Π°Ρ‚ Π² ΠΎΡ‚Π΄Π΅Π»Π°Ρ…». Π’ ΠΏΠΎΡΠ²ΠΈΠ²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ построСнной Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.22. Для получСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ скалярная функция (№ 1). Код ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π“.

Рисунок 4.22 — ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ Π’Π°ΠΊΠΆΠ΅ вСдСтся ΠΆΡƒΡ€Π½Π°Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ «ΠΠ°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ» с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΠ°Ρ‚Π° дСйствий ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ записСй ΠΈΠ· ΠΆΡƒΡ€Π½Π°Π»Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.23. На Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.24 прСдставлСна Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° послС выполнСния ΠΎΡ‚ΠΊΠ°Ρ‚Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ (№ 1) ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Для вСдСния ΠΆΡƒΡ€Π½Π°Π»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹ (№ 4, 5).

Рисунок 4.23 — Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° ΠΈΠ· ΠΆΡƒΡ€Π½Π°Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Рисунок 4.24 — ΠžΡ‚ΠΊΠ°Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠΎ ΠΆΡƒΡ€Π½Π°Π»Ρƒ

5. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ срСдства MS SQL Server

5.1 ИспользованиС прСдставлСний

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ прСдставлСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 5.1.

Π’Π°Π±Π»ΠΈΡ†Π° 5.1 — Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ прСдставлСния

β„– ΠΏ/ΠΏ

НазваниС

НазначСниС

Π“Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ

full_appointments_info

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΡ…, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΡ‚Π΄Π΅Π», Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ, ЀИО сотрудника.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ записСй табСля для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΡ… сотрудников. Π’Π°ΠΊΠΆΠ΅ это прСдставлСниС примСняСтся ΠΏΡ€ΠΈ построСнии ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΏΠΎ ΡΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠ°ΠΌ ΠΎΡ‚Π΄Π΅Π»Π°.

Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ_ΠΎΡ‚Π΄Π΅Π»Ρ‹

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΡΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠ°Ρ… вмСстС с Π½Π°Π·Π²Π°Π½ΠΈΡΠΌΠΈ ΠΎΡ‚Π΄Π΅Π»ΠΎΠ² с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ рСдактирования.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΡΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠ°Ρ… для получСния ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ свСдСний ΠΎ ΡΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠ΅.

SQL-тСкст прСдставлСний:

— Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ информация ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΡ…

CREATE VIEW full_appointments_info AS

SELECT НазначСния. Код Код, ΠžΡ‚Π΄Π΅Π»Ρ‹. НазваниС ΠžΡ‚Π΄Π΅Π», ЀИО,

ДолТности.НазваниС Π”ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ, Π”Π°Ρ‚Π°_назначСния, Π”Π°Ρ‚Π°_ΡƒΡ…ΠΎΠ΄Π°, ΠžΡ‚Π΄Π΅Π»Ρ‹. Код ΠšΠΎΠ΄ΠžΡ‚Π΄Π΅Π»Π° FROM НазначСния, ДолТности, Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ,

ΠžΡ‚Π΄Π΅Π»Ρ‹ WHERE Код_долТности = ДолТности. Код

and Код_сотрудника= Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ. Код

and Код_ΠΎΡ‚Π΄Π΅Π»Π° = ΠžΡ‚Π΄Π΅Π»Ρ‹. Код

— ΠžΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌΠΎΠ΅ прСдставлСниС — сотрудники с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΎΡ‚Π΄Π΅Π»ΠΎΠ²

CREATE VIEW Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ_ΠΎΡ‚Π΄Π΅Π»Ρ‹ AS

SELECT Код = сотрудники. Код + 0, ЀИО, Π”Π°Ρ‚Π°_роТдСния,

Код_ΠΎΡ‚Π΄Π΅Π»Π° = Код_ΠΎΡ‚Π΄Π΅Π»Π° + 0, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π» FROM сотрудники,

ΠžΡ‚Π΄Π΅Π»Ρ‹ WHERE Код_ΠΎΡ‚Π΄Π΅Π»Π° = ΠžΡ‚Π΄Π΅Π»Ρ‹. Код

5.2 ИспользованиС Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 5.2.

Π’Π°Π±Π»ΠΈΡ†Π° 5.2 — Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

β„– ΠΏ/ΠΏ

НазваниС

НазначСниС

Π“Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ

restore_appointments

ΠžΡ‚ΠΊΠ°Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ нСобходимости ΠΎΡ‚ΠΊΠ°Ρ‚Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

table_info

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ свСдСний ΠΎ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π΅ Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, которая Ρ‚Π°ΠΊΠΆΠ΅ содСрТит свСдСния ΠΎ ΡΡƒΠΌΠΌΠ°Ρ… начислСний ΠΈ ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ построСнии ΠΎΡ‚Ρ‡Π΅Ρ‚Π° с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π΅.

Insert_to_personal

Вставка записи Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ «Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ» ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π΅Π΅ ΠΊΠΎΠ΄Π°.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ записСй Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ «Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ»

Insert_to_appointments

Вставка записи Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ «ΠΠ°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ» ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π΅Π΅ ΠΊΠΎΠ΄Π°.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ записСй Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ «ΠΠ°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ»

Insert_to_table

Вставка записи Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ «Π’абСль» ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π΅Π΅ ΠΊΠΎΠ΄Π°.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ записСй Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ «Π’абСль»

Insert_to_charges

Вставка записи Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ «ΠΠ°Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡ» ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π΅Π΅ ΠΊΠΎΠ΄Π°.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ записСй Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ «ΠΠ°Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡ»

Insert_to_keepings

Вставка записи Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ «Π£Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΡ» ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π΅Π΅ ΠΊΠΎΠ΄Π°.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ записСй Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ «Π£Π΄Π΅Ρ€ΠΆΠ°Π½ΠΈΡ»

SQL-тСкст ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€:

—ΠžΡ‚ΠΊΠ°Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΠΎ ΠΆΡƒΡ€Π½Π°Π»Ρƒ

—ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — послСдняя запись, которая остаСтся Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

create proc restore_appointments @last_ok_id int

as

declare logc cursor for

select oper, anum, aworker, aposition, astart, aend

from appointments_log

where id > @last_ok_id

order by id desc

declare @oper char, @anum int, @aworker int, @aposition int,

@astart datetime, @aend datetime

set identity_insert назначСния on

open logc

fetch logc into @oper, @anum, @aworker,

@aposition, @astart, @aend

while @@fetch_status = 0 begin

if (@oper = 'I')

delete from назначСния where ΠΊΠΎΠ΄ = @anum

else if (@oper = 'D')

insert into назначСния (Код, Код_сотрудника, Код_долТности, Π”Π°Ρ‚Π°_назначСния, Π”Π°Ρ‚Π°_ΡƒΡ…ΠΎΠ΄Π°)

values (@anum,@aworker,@aposition,@astart,@aend)

else

update назначСния set Код_сотрудника = @aworker,

Код_долТности = @aposition,

Π”Π°Ρ‚Π°_назначСния = @astart, Π”Π°Ρ‚Π°_ΡƒΡ…ΠΎΠ΄Π° = @aend

where Код = @anum

fetch logc into @oper, @anum, @aworker,

@aposition, @astart, @aend

end

set identity_insert назначСния off

close logc

deallocate logc

—Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π΅

create proc table_info @date_id int as

select ВабСль. Код, Часы, ЀИО, ДолТности. НазваниС Π”ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ, ΠžΡ‚Π΄Π΅Π»Ρ‹. НазваниС ΠžΡ‚Π΄Π΅Π», Π”Π°Ρ‚Π°, ΠšΠΎΠ»Π»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ_часов, Оклад

INTO #table from ВабСль, НазначСния, Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ,

ДолТности, ΠžΡ‚Π΄Π΅Π»Ρ‹, Π”Π°Ρ‚Ρ‹

where Код_назначСния = НазначСния. Код

and Код_сотрудника = Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ. Код

and Код_долТности = ДолТности. Код

and Код_ΠΎΡ‚Π΄Π΅Π»Π° = ΠžΡ‚Π΄Π΅Π»Ρ‹. Код

and Код_Π΄Π°Ρ‚Ρ‹ = Π”Π°Ρ‚Ρ‹. Код and Π”Π°Ρ‚Ρ‹. Код = @date_id

order by Π΄Π°Ρ‚Π°, ΠΎΡ‚Π΄Π΅Π», Π€ΠΈΠΎ

—вычисляСмоС ΠΏΠΎΠ»Π΅ с ΡΡƒΠΌΠΌΠΎΠΉ ΠΎΠΊΠ»Π°Π΄Π° Π·Π° ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ часы

alter table #table add сумма_Π·Π°_часы as cast (ΠΎΠΊΠ»Π°Π΄ * (cast (часы as float)/колличСство_часов) as numeric (10,2))

—Ρ‚Π°Π±Π»ΠΈΡ†Π° для Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

CREATE TABLE #charges (Код int, ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚_начислСний int,

ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ int, сумма_начислСний float,

сумма_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ float, ΠΈΡ‚ΠΎΠ³ΠΎ float)

INSERT INTO #charges (код) SELECT Код FROM #table

—подсчСт ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π° для начислСния ΠΈ ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΡ

update #charges set ΠŸΡ€ΠΎΡ†Π΅Π½Ρ‚_начислСний =

(SELECT SUM (Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π°*ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚)

FROM Π’ΠΈΠ΄Ρ‹_начислСний, НачислСния

WHERE Код_Π²ΠΈΠ΄Π°_начислСния = Π’ΠΈΠ΄Ρ‹_начислСний.Код

AND Код_табСля = #charges.Код

AND Вип = 'О')

update #charges set ΠŸΡ€ΠΎΡ†Π΅Π½Ρ‚_начислСний =

isnull (ΠŸΡ€ΠΎΡ†Π΅Π½Ρ‚_начислСний, 0)

update #charges set ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ =

(SELECT SUM (Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π°*ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚)

FROM Π’ΠΈΠ΄Ρ‹_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ, УдСрТания

WHERE Код_Π²ΠΈΠ΄Π°_удСрТания = Π’ΠΈΠ΄Ρ‹_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ.Код

AND Код_табСля = #charges.Код

AND Вип = 'О')

update #charges set ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ =

isnull (ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ, 0)

—подсчСт сумм начислСния ΠΈ ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΡ

update #charges set Π‘ΡƒΠΌΠΌΠ°_начислСний =

(SELECT isnull (SUM (Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π°*ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚), 0)

FROM Π’ΠΈΠ΄Ρ‹_начислСний, НачислСния

WHERE Код_Π²ΠΈΠ΄Π°_начислСния = Π’ΠΈΠ΄Ρ‹_начислСний.Код

AND Код_табСля = #charges.Код

AND Π’ΠΈΠΏ = 'A')

update #charges set Π‘ΡƒΠΌΠΌΠ°_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ =

(SELECT isnull (SUM (Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π°*ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚), 0)

FROM Π’ΠΈΠ΄Ρ‹_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ, УдСрТания

WHERE Код_Π²ΠΈΠ΄Π°_удСрТания = Π’ΠΈΠ΄Ρ‹_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ.Код

AND Код_табСля = #charges.Код

AND Π’ΠΈΠΏ = 'A')

—добавляСм суммы ΠΏΠΎ ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Π½Π½Ρ‹ΠΌ Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°ΠΌ

update #charges set

Π‘ΡƒΠΌΠΌΠ°_начислСний = Π‘ΡƒΠΌΠΌΠ°_начислСний + сумма_Π·Π°_часы *

cast (ΠŸΡ€ΠΎΡ†Π΅Π½Ρ‚_начислСний as float) / 100

from #table where #charges.Код = #table.Код

update #charges set

Π‘ΡƒΠΌΠΌΠ°_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ = Π‘ΡƒΠΌΠΌΠ°_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ +

(сумма_Π·Π°_часы + Π‘ΡƒΠΌΠΌΠ°_начислСний) *

cast (ΠŸΡ€ΠΎΡ†Π΅Π½Ρ‚_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ as float) / 100

from #table where #charges.Код = #table.Код

—расчСт Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹

update #charges set

ΠΈΡ‚ΠΎΠ³ΠΎ = сумма_Π·Π°_часы + Π‘ΡƒΠΌΠΌΠ°_начислСний ;

Π‘ΡƒΠΌΠΌΠ°_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ

from #table where #charges.Код = #table.Код

—Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅

select Π”Π°Ρ‚Π°, ΠžΡ‚Π΄Π΅Π», ЀИО, Π”ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ, часы, сумма_Π·Π°_часы,

ΠŸΡ€ΠΎΡ†Π΅Π½Ρ‚_начислСний, ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ,

Cast (Π‘ΡƒΠΌΠΌΠ°_начислСний as numeric (10,2))

Π‘ΡƒΠΌΠΌΠ°_начислСний,

Cast (Π‘ΡƒΠΌΠΌΠ°_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ as numeric (10,2)) Π‘ΡƒΠΌΠΌΠ°_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ,

Cast (Π˜Ρ‚ΠΎΠ³ΠΎ as numeric (10,2)) Π˜Ρ‚ΠΎΠ³ΠΎ

from #table, #charges where #table.ΠΊΠΎΠ΄ = #charges.ΠΊΠΎΠ΄

go

— ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ для вставки записСй

— Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ — ΠΊΠΎΠ΄ вставлСнной записи

CREATE PROC Insert_to_personal AS

declare @code int;

select @code = min (ΠΊΠΎΠ΄) from ΠΎΡ‚Π΄Π΅Π»Ρ‹

insert into сотрудники (ЀИО, Код_ΠΎΡ‚Π΄Π΅Π»Π°) values ('', @code)

SELECT @@identity Код

GO

CREATE PROC Insert_to_appointments @worker_id int AS

declare @code int;

select @code = min (ΠΊΠΎΠ΄) from долТности

insert into назначСния (ΠΊΠΎΠ΄_сотрудника, Π΄Π°Ρ‚Π°_назначСния, Код_долТности) values (@worker_id, getdate (), @code)

SELECT IDENT_CURRENT ('назначСния') Код

GO

CREATE PROC Insert_to_table AS

declare @code int;

select @code = min (ΠΊΠΎΠ΄) from назначСния

insert into Ρ‚Π°Π±Π΅Π»ΡŒ (часы, ΠΊΠΎΠ΄_назначСния) values (0, @code)

SELECT @@identity Код

GO

CREATE PROC Insert_to_charges @table_id int AS

declare @code int;

select @code = min (ΠΊΠΎΠ΄) from Π²ΠΈΠ΄Ρ‹_начислСний

insert into начислСния (ΠΊΠΎΠ΄_табСля, коэффициСнт, ΠΊΠΎΠ΄_Π²ΠΈΠ΄Π°_начислСния) values (@table_id, 1, @code)

SELECT @@identity Код

GO

CREATE PROC Insert_to_keepings @table_id int AS

declare @code int;

select @code = min (ΠΊΠΎΠ΄) from Π²ΠΈΠ΄Ρ‹_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ

insert into удСрТания (ΠΊΠΎΠ΄_табСля, коэффициСнт, ΠΊΠΎΠ΄_Π²ΠΈΠ΄Π°_удСрТания) values (@table_id, 1, @code)

SELECT @@identity Код

GO

5.3 ИспользованиС Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 5.3.

Π’Π°Π±Π»ΠΈΡ†Π° 5.3 — Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

β„– ΠΏ/ΠΏ

НазваниС

НазначСниС

Π“Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ

salary

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ суммы Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹ для записи табСля.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π΅. Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π° для построСнии Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΠΎΠ².

Appointments_of_worker_by_id

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ сотрудника.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ построСнии ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΏΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΠΌ сотрудника.

SQL-тСкст Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

— ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — ΠΊΠΎΠ΄ табСля

— Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ — сумма Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹

create function salary (@table_id int) returns numeric (10,2)

begin

declare @sum float

set @sum = 0

— ΡΡƒΠΌΠΌΠ° ΠΎΠΊΠ»Π°Π΄Π° Π·Π° ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ часы

declare @sum_by_hours float

select @sum_by_hours = cast (ΠΎΠΊΠ»Π°Π΄ *(cast (часы as float) /

колличСство_часов) as numeric (10,2))

from Ρ‚Π°Π±Π΅Π»ΡŒ, назначСния, долТности, Π΄Π°Ρ‚Ρ‹

where ΠΊΠΎΠ΄_назначСния = назначСния. ΠΊΠΎΠ΄

and ΠΊΠΎΠ΄_долТности = долТности. ΠΊΠΎΠ΄

and ΠΊΠΎΠ΄_Π΄Π°Ρ‚Ρ‹ = Π΄Π°Ρ‚Ρ‹. ΠΊΠΎΠ΄ and Ρ‚Π°Π±Π΅Π»ΡŒ. ΠΊΠΎΠ΄ = @table_id

set @sum = @sum_by_hours

— ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ начислСний ΠΈ ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ

declare @percent_add float

declare @percent_keep float

SELECT @percent_add = SUM (Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π°*ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚)

FROM Π’ΠΈΠ΄Ρ‹_начислСний, НачислСния

WHERE Код_Π²ΠΈΠ΄Π°_начислСния = Π’ΠΈΠ΄Ρ‹_начислСний.Код

AND Код_табСля = @table_id AND Π’ΠΈΠΏ = 'О'

set @percent_add = isnull (@percent_add, 0)

SELECT @percent_keep = SUM (Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π°*ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚)

FROM Π’ΠΈΠ΄Ρ‹_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ, УдСрТания

WHERE Код_Π²ΠΈΠ΄Π°_удСрТания = Π’ΠΈΠ΄Ρ‹_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ.Код

AND Код_табСля = @table_id AND Π’ΠΈΠΏ = 'О'

set @percent_keep = isnull (@percent_keep, 0)

— ΡΡƒΠΌΠΌΠ° начислСний ΠΈ ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ

declare @sum_add float

declare @sum_keep float

SELECT @sum_add = isnull (SUM (Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π°*ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚), 0)

FROM Π’ΠΈΠ΄Ρ‹_начислСний, НачислСния

WHERE Код_Π²ΠΈΠ΄Π°_начислСния = Π’ΠΈΠ΄Ρ‹_начислСний.Код

AND Код_табСля = @table_id AND Π’ΠΈΠΏ = 'A'

SELECT @sum_keep = isnull (SUM (Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π°*ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚), 0)

FROM Π’ΠΈΠ΄Ρ‹_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ, УдСрТания

WHERE Код_Π²ΠΈΠ΄Π°_удСрТания = Π’ΠΈΠ΄Ρ‹_ΡƒΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠΉ.Код

AND Код_табСля = @table_id AND Π’ΠΈΠΏ = 'A'

set @sum_add = @sum_add + @sum_by_hours * @percent_add / 100

set @sum_keep = @sum_keep + (@sum_add + @sum_by_hours) *

@percent_keep / 100

— Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°

set @sum = @sum_by_hours + @sum_add — @sum_keep

return @sum

end

— ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — ΠΊΠΎΠ΄ сотрудника

— Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ — ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ этого сотрудника

CREATE FUNCTION Appointments_of_worker_by_id (@worker int)

RETURNS @appointments table (Код int, Код_долТности int,

Код_сотрудника int, Π”Π°Ρ‚Π°_назначСния datetime,

Π”Π°Ρ‚Π°_ΡƒΡ…ΠΎΠ΄Π° datetime, ЀИО varchar (50)) AS

BEGIN

DECLARE @name varchar (50)

SELECT @name = ЀИО

FROM Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ

WHERE Код = @worker

INSERT INTO @appointments (Код, Код_долТности, Код_сотрудника, Π”Π°Ρ‚Π°_назначСния, Π”Π°Ρ‚Π°_ΡƒΡ…ΠΎΠ΄Π°, ЀИО)

SELECT Код, Код_долТности, @worker,

Π”Π°Ρ‚Π°_назначСния, Π”Π°Ρ‚Π°_ΡƒΡ…ΠΎΠ΄Π°, @name

FROM НазначСния WHERE Код_сотрудника = @worker

RETURN

END

5.4 ИспользованиС Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 5.4.

Π’Π°Π±Π»ΠΈΡ†Π° 5.4 — Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

β„– ΠΏ/ΠΏ

НазваниС

НазначСниС

Π“Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ

#table

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ Π·Π°ΠΏΠΈΡΡΠΌ табСля, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ начисляСмый ΠΎΠΊΠ»Π°Π΄.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ № 2

#charges

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ Π·Π°ΠΏΠΈΡΡΠΌ табСля ΠΈ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ для Π΅Π΅ Ρ€Π°ΡΡ‡Π΅Ρ‚Π°.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ № 2

5.5 ИспользованиС курсоров

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ курсоры ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 5.4.

Π’Π°Π±Π»ΠΈΡ†Π° 5.4 — Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ курсоры

β„– ΠΏ/ΠΏ

НазваниС

НазначСниС

Π“Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ

logc

ΠŸΡ€ΠΎΡ…ΠΎΠ΄ ΠΏΠΎ Π·Π°ΠΏΠΈΡΡΠΌ ΠΆΡƒΡ€Π½Π°Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ № 1

dates

ΠŸΡ€ΠΎΡ…ΠΎΠ΄ ΠΏΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΡ‹ΠΌ Π΄Π°Ρ‚Π°ΠΌ.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π΅ № 6

5.6 ИспользованиС Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ΠΎΠ²

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 5.6.

Π’Π°Π±Π»ΠΈΡ†Π° 5.6 — Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹

β„– ΠΏ/ΠΏ

НазваниС

НазначСниС

Π“Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ

Π’ΠΈΠ΄Ρ‹_начислСний_ Del

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ ссылочной цСлостности.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ записСй ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «Π’ΠΈΠ΄Ρ‹_начислСний».

НачислСния_Ins

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ ссылочной цСлостности.

Вставка записСй Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ «ΠΠ°Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡ».

НачислСния_Upd

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ ссылочной цСлостности.

ИзмСнСниС записСй Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «ΠΠ°Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡ».

НазначСния_log

Π’Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΆΡƒΡ€Π½Π°Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

Вставка ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ записСй Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ «ΠΠ°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ».

НазначСния_log_upd

Π’Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΆΡƒΡ€Π½Π°Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

ИзмСнСниС записСй Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «ΠΠ°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ».

Π”Π°Ρ‚Ρ‹_Ins

Каскадная вставка Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ «Π’абСль».

Вставка записСй Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ «Π”Π°Ρ‚Ρ‹».

Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ_ΠΎΡ‚Π΄Π΅Π»Ρ‹_Ins

ОбновляСмоС прСдставлСниС.

Вставка записСй Π² ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ «Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ_ΠΎΡ‚Π΄Π΅Π»Ρ‹».

Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ_ΠΎΡ‚Π΄Π΅Π»Ρ‹_Upd

ОбновляСмоС прСдставлСниС.

ИзмСнСниС записСй прСдставлСния «Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ_ΠΎΡ‚Π΄Π΅Π»Ρ‹».

Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ_ΠΎΡ‚Π΄Π΅Π»Ρ‹_Del

ОбновляСмоС прСдставлСниС.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ записСй ΠΈΠ· ΠΏΡ€Π΅Π΄ΡΡ‚авлСния «Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ_ΠΎΡ‚Π΄Π΅Π»Ρ‹».

Π’ΠΈΠ΄Ρ‹_начислСний_Ins_Upd

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π΄Π°Π½Π½Ρ‹Ρ….

Вставка ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ записСй Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «Π’ΠΈΠ΄Ρ‹_начислСний».

SQL-тСкст Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ΠΎΠ²:

—Π’Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹ контроля цСлостности

CREATE TRIGGER Π’ΠΈΠ΄Ρ‹_начислСний_Del ON Π’ΠΈΠ΄Ρ‹_начислСний

FOR DELETE

AS

IF EXISTS (SELECT * FROM НачислСния WHERE Код_Π²ΠΈΠ΄Π°_начислСния IN (SELECT Код FROM deleted))

BEGIN

raiserror ('Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ записСй Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‚.ΠΊ. Π΅ΡΡ‚ΡŒ

связанныС записи Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅', 16, 1)

rollback tran

END

GO

CREATE TRIGGER НачислСния_Ins ON НачислСния

FOR INSERT

AS

IF (SELECT count (*) FROM inserted) <>

(SELECT count (*) FROM inserted

WHERE Код_Π²ΠΈΠ΄Π°_начислСния IN

(SELECT Код FROM Π’ΠΈΠ΄Ρ‹_начислСний))

BEGIN

raiserror ('НСвозмоТно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ запись: нСизвСстный Π²ΠΈΠ΄ начислСния', 16, 1)

rollback tran

END

GO

CREATE TRIGGER НачислСния_Upd ON НачислСния

FOR UPDATE

AS

IF update (Код_Π²ΠΈΠ΄Π°_начислСния) BEGIN

IF (SELECT count (*) FROM inserted) <>

(SELECT count (*) FROM inserted

WHERE Код_Π²ΠΈΠ΄Π°_начислСния IN

(SELECT Код FROM Π’ΠΈΠ΄Ρ‹_начислСний))

BEGIN

raiserror ('НСвозмоТно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ запись: нСизвСстный Π²ΠΈΠ΄ начислСния', 16, 1)

rollback tran

END

END

GO

—Π’Ρ€ΠΈΠ³Π³Π΅Ρ€ контроля Π΄Π°Π½Π½Ρ‹Ρ…

CREATE TRIGGER Π’ΠΈΠ΄Ρ‹_начислСний_Ins_Upd ON Π’ΠΈΠ΄Ρ‹_начислСний

FOR Insert, Update

AS

IF (SELECT count (*) FROM inserted) <>

(SELECT count (*) FROM inserted

WHERE Π’ΠΈΠΏ IN ('А','О'))

BEGIN

raiserror ('НСвозмоТно ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ запись. Π’Π²Π΅Π΄Π΅Π½ нСизвСстный Ρ‚ΠΈΠΏ начислСния', 16, 1)

rollback tran

END

GO

— Π’Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹ вСдСния ΠΆΡƒΡ€Π½Π°Π»Π° ΠΏΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ назначСния

create trigger НазначСния_log on Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ

after insert, update, delete

as

declare @date datetime

set @date = getdate ()

declare @user varchar (50)

set @user = current_user

insert into appointments_log

select 'D', @user, @date, Код, Код_сотрудника, Код_долТности, Π”Π°Ρ‚Π°_назначСния, Π΄Π°Ρ‚Π°_ΡƒΡ…ΠΎΠ΄Π°

from deleted

insert into appointments_log

select 'I',@user,@date, Код, Код_сотрудника, Код_долТности, Π”Π°Ρ‚Π°_назначСния, Π΄Π°Ρ‚Π°_ΡƒΡ…ΠΎΠ΄Π°

from inserted

go

create trigger НазначСния_log_upd on Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ

after update

as

declare @date datetime

set @date = getdate ()

declare @user varchar (50)

set @user = current_user

insert into appointments_log

select 'U', @user, @date, Код, Код_сотрудника, Код_долТности,

Π”Π°Ρ‚Π°_назначСния, Π΄Π°Ρ‚Π°_ΡƒΡ…ΠΎΠ΄Π°

from deleted

go

—Π’Ρ€ΠΈΠ³Π³Π΅Ρ€ каскадной вставки Π² Ρ‚Π°Π±Π΅Π»ΡŒ для подходящих Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

create trigger Π”Π°Ρ‚Ρ‹_Ins on Π”Π°Ρ‚Ρ‹

after insert

as

declare @date_id int

declare @date datetime

set nocount on

DECLARE dates CURSOR FOR

SELECT Код, Π”Π°Ρ‚Π°

FROM inserted

OPEN dates

FETCH dates INTO @date_id, @date

WHILE @@Fetch_status = 0 BEGIN

insert into Ρ‚Π°Π±Π΅Π»ΡŒ (Код_Π΄Π°Ρ‚Ρ‹, Код_назначСния, Часы)

select @date_id, Код, 0

from назначСния where

(Π”Π°Ρ‚Π°_ΡƒΡ…ΠΎΠ΄Π° is null or

Year (Π”Π°Ρ‚Π°_ΡƒΡ…ΠΎΠ΄Π°) > Year (@date) or

Year (Π”Π°Ρ‚Π°_ΡƒΡ…ΠΎΠ΄Π°) = Year (@date) and

Month (Π”Π°Ρ‚Π°_ΡƒΡ…ΠΎΠ΄Π°) >= Month (@date))

and

(Year (Π”Π°Ρ‚Π°_назначСния) < Year (@date) or

Year (Π”Π°Ρ‚Π°_назначСния) = Year (@date) and

Month (Π”Π°Ρ‚Π°_назначСния) < Month (@date))

FETCH dates INTO @date_id, @date

END

CLOSE dates

DEALLOCATE dates

go

—Π’Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹ обновляСмого прСдставлСния

create trigger Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ_ΠΎΡ‚Π΄Π΅Π»Ρ‹_Ins on Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ_ΠΎΡ‚Π΄Π΅Π»Ρ‹

instead of insert

as

insert into сотрудники (ЀИО, Π”Π°Ρ‚Π°_роТдСния, Код_ΠΎΡ‚Π΄Π΅Π»Π°)

select ЀИО, Π”Π°Ρ‚Π°_роТдСния, d. Код

from inserted i left join ΠΎΡ‚Π΄Π΅Π»Ρ‹ d

on i. Код_ΠΎΡ‚Π΄Π΅Π»Π° = d. Код and i. ΠžΡ‚Π΄Π΅Π» is Null

or i. ΠžΡ‚Π΄Π΅Π» = d. НазваниС and i. Код_ΠΎΡ‚Π΄Π΅Π»Π° is null

or i. Код_ΠΎΡ‚Π΄Π΅Π»Π° = d. Код and i. ΠžΡ‚Π΄Π΅Π» = d. НазваниС

go

create trigger Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ_ΠΎΡ‚Π΄Π΅Π»Ρ‹_Upd on Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ_ΠΎΡ‚Π΄Π΅Π»Ρ‹

instead of update

as

if update (ΠžΡ‚Π΄Π΅Π»)

if not update (Код_ΠΎΡ‚Π΄Π΅Π»Π°) begin

update сотрудники

set ЀИО = i. ЀИО,

Π”Π°Ρ‚Π°_роТдСния = i. Π”Π°Ρ‚Π°_роТдСния,

Код_ΠΎΡ‚Π΄Π΅Π»Π° = d. Код

from сотрудники, inserted i left join ΠΎΡ‚Π΄Π΅Π»Ρ‹ d

on i. ΠžΡ‚Π΄Π΅Π» = d. НазваниС

where сотрудники. ΠΊΠΎΠ΄ = i. Код

end

else begin

update сотрудники

set ЀИО = i. ЀИО,

Π”Π°Ρ‚Π°_роТдСния = i. Π”Π°Ρ‚Π°_роТдСния,

Код_ΠΎΡ‚Π΄Π΅Π»Π° = d. Код

from сотрудники, inserted i left join ΠΎΡ‚Π΄Π΅Π»Ρ‹ d

on i. ΠžΡ‚Π΄Π΅Π» = d. НазваниС

and i. Код_ΠΎΡ‚Π΄Π΅Π»Π° = d. Код

where сотрудники. ΠΊΠΎΠ΄ = i. Код

end

else if not update (Код_ΠΎΡ‚Π΄Π΅Π»Π°) begin

update сотрудники

set ЀИО = i. ЀИО,

Π”Π°Ρ‚Π°_роТдСния = i. Π”Π°Ρ‚Π°_роТдСния

from сотрудники, inserted i

where сотрудники. ΠΊΠΎΠ΄ = i. Код

end

else begin

update сотрудники

set ЀИО = i. ЀИО,

Π”Π°Ρ‚Π°_роТдСния = i. Π”Π°Ρ‚Π°_роТдСния,

Код_ΠΎΡ‚Π΄Π΅Π»Π° = d. Код

from сотрудники, inserted i left join ΠΎΡ‚Π΄Π΅Π»Ρ‹ d

on i. Код_ΠΎΡ‚Π΄Π΅Π»Π° = d. Код

where сотрудники. ΠΊΠΎΠ΄ = i. Код

end

go

create trigger Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ_ΠΎΡ‚Π΄Π΅Π»Ρ‹_Del on Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ_ΠΎΡ‚Π΄Π΅Π»Ρ‹

instead of delete

as

delete from сотрудники where ΠΊΠΎΠ΄ in

(select ΠΊΠΎΠ΄ from deleted)

go

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Ρ…ΠΎΠ΄Π΅ выполнСния курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π»ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½Ρ‹ стандартныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MS SQL SERVER ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ «ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрноС» ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ «ΠΠ²Ρ‚оматизированная систСма управлСния ΠΎΡ‚Π΄Π΅Π»ΠΎΠΌ Π±ΡƒΡ…Π³Π°Π»Ρ‚Π΅Ρ€ΠΈΠΈ ΠΏΠΎ Ρ€Π°ΡΡ‡Π΅Ρ‚Ρƒ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹».

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π°Π΄ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π±Ρ‹Π»Π°:

— ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области Π·Π°Π΄Π°Ρ‡ΠΈ;

— Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² сСрвСрной части;

— Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° клиСнтская ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Разработанная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° позволяСт:

— Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π½Π°Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠΈ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ‹ сотрудников,

— Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΡΡ‚ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ,

— Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ расчСт Π·Π°Ρ€Π°Π±ΠΎΡ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ‹.

ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠ°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ простым, понятным интСрфСйсом. Она прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ. ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° нСкоторая автоматизация внСсСния Π½ΠΎΠ²Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… источников

1 Π’ΡŒΠ΅ΠΉΡ€Π° Π . SQL Server 2000. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π§Π°ΡΡ‚ΡŒ 2 [ВСкст] / Π . Π’ΡŒΠ΅ΠΉΡ€Π°. — Πœ.: Π‘ΠΈΠ½ΠΎΠΌ, 2004. — 807 с.

2 МамаСв Π•. Π’. Microsoft SQL Server 2000. НаиболСС ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство [ВСкст] / Π•. Π’. МамаСв. — Π‘Пб.: BHV, 2005. — 1280 с.

3 Дэвидсон Π›. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° SQL Server 2000 [ВСкст] / Π›. Дэвидсон. — Πœ.: Π‘ΠΈΠ½ΠΎΠΌ, 2003. — 680 с.

сСрвСр ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹ΠΉ справочник Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, А ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° справочников Код Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «Π”олТности». ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ справочника.

//созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° для выполнСния запроса ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…

BaseFrame->query = new TADOQuery (this);

//ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ соСдинСния с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…

BaseFrame->query->Connection = connection;

BaseFrame->query->Active = False;

BaseFrame->query->SQL->Text =

" SELECT Код, НазваниС Π”ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ, Оклад FROM ДолТности order by ΠΠ°Π·Π²Π°Π½ΠΈΠ΅" ;

BaseFrame->query->Active = True;

//созданиС источника Π΄Π°Π½Π½Ρ‹Ρ… для Π³Ρ€ΠΈΠ΄Π°

BaseFrame->dataSource = new TDataSource (this);

//связываниС Π΅Π³ΠΎ с Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…

BaseFrame->dataSource->DataSet = BaseFrame->query;

//ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ источника ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ для Π³Ρ€ΠΈΠ΄Π°

BaseFrame->DBGrid->DataSource = BaseFrame->dataSource;

BaseFrame->DBGrid->Columns->Items[0]->FieldName = «ΠšΠΎΠ΄» ;

BaseFrame->DBGrid->Columns->Items[1]->FieldName = «Π”ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ» ;

BaseFrame->DBGrid->Columns->Items[2]->FieldName = «ΠžΠΊΠ»Π°Π΄» ;

BaseFrame->DBGrid->Columns->Items[0]->Visible = false;

//сокрытиС ΠΊΠ½ΠΎΠΏΠΎΠΊ Ссли Π½Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ…

if (BaseFrame->query->IsEmpty ()) {

BaseFrame->btnDel->Enabled = false;

BaseFrame->btnEdit->Enabled = false;

}

Код позиционирования Π½Π° Π·Π°ΠΏΠΈΡΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ послС измСнСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

//ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ записи

int k = query->FieldByName («ΠšΠΎΠ΄»)->AsInteger;

//сохранСниС строки сортировки

WideString s = query->Sort;

//ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…

query->Close ();

query->Open ();

query->DisableControls ();

//сортировка

query->Sort = s;

//поиск записи

query->Locate («ΠšΠΎΠ΄», k, TLocateOptions ());

query->EnableControls ();

УдалСниС записи.

query->Delete ();

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ записи.

if (query->State == dsEdit || query->State == dsInsert)

query->Post ();

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ записи.

query->Insert ();

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π‘ Π Π°Π±ΠΎΡ‚Π° с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ «Π’абСль»

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «Π’абСль» Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ «ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ» Π² ΠΎΠΊΠ½Π΅ рСдактирования.

query->Active = False;

//Π·Π°Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ запроса

query->SQL->Clear ();

query->SQL->Add («SELECT ВабСль. Код, «);

query->SQL->Add («Π€Π˜Πž, ДолТности. НазваниС Π”ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ,»);

query->SQL->Add («Π”Π°Ρ‚Π°, ΠžΡ‚Π΄Π΅Π»Ρ‹. НазваниС ΠžΡ‚Π΄Π΅Π», Часы, «);

query->SQL->Add («ΠšΠΎΠ»Π»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ_часов ВсСго, Код_назначСния, Код_Π΄Π°Ρ‚Ρ‹ «);

query->SQL->Add («FROM ВабСль, Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ, ΠžΡ‚Π΄Π΅Π»Ρ‹, «);

query->SQL->Add («Π”Π°Ρ‚Ρ‹, НазначСния, ДолТности «);

query->SQL->Add («WHERE Код_ΠΎΡ‚Π΄Π΅Π»Π° = ΠžΡ‚Π΄Π΅Π»Ρ‹. Код «);

query->SQL->Add («AND Код_долТности = ДолТности. Код «);

query->SQL->Add («AND Код_Π΄Π°Ρ‚Ρ‹ = Π”Π°Ρ‚Ρ‹. Код «);

query->SQL->Add («AND Код_назначСния = НазначСния. Код «);

query->SQL->Add («AND Код_сотрудника = Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ. Код «);

query->SQL->Add («AND Π”Π°Ρ‚Π° BETWEEN: start and: end»);

query->SQL->Add («ORDER BY Π”Π°Ρ‚Π°, ЀИО»);

//сохранСниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΡ

start = dateStart->Date;

end = dateEnd->Date;

//Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² для запроса

query->Parameters->ParamByName («start»)->Value = dateStart->Date;

query->Parameters->ParamByName («end»)->Value = dateEnd->Date;

query->Active = True;

ИзмСнСниС записи табСля.

//ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ записи

int id = query->FieldByName («ΠšΠΎΠ΄»)->AsInteger;

//созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

TRecordInfo* x = new TRecordInfo (id);

x->SetHours (query->FieldByName («Π§Π°ΡΡ‹»)->AsInteger);

x->SetTotal (query->FieldByName («Π’сСго»)->AsInteger);

x->SetAppointmentId (query->FieldByName («ΠšΠΎΠ΄_назначСния»)->AsInteger);

x->SetDateId (query->FieldByName («ΠšΠΎΠ΄_Π΄Π°Ρ‚Ρ‹»)->AsInteger);

x->SetStartDate (start);

x->SetEndDate (end);

//созданиС ΠΎΠΊΠ½Π° для рСдактирования запси табСля

TableRecord = new TTableRecord (this, connection, x);

//ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

connection->BeginTrans ();

TModalResult mr = TableRecord->ShowModal ();

//созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° для обновлСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

TADOQuery* queryUpd = new TADOQuery (this);

queryUpd->Connection = connection;

queryUpd->Active = False;

queryUpd->SQL->Clear ();

if (mr == mrOk){

//запрос Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ записи

queryUpd->SQL->Add («UPDATE ВабСль SET «);

queryUpd->SQL->Add («Π§Π°ΡΡ‹ = :hours, «);

queryUpd->SQL->Add («ΠšΠΎΠ΄_назначСния = :app_id, «);

queryUpd->SQL->Add («ΠšΠΎΠ΄_Π΄Π°Ρ‚Ρ‹ = :date_id «);

queryUpd->SQL->Add («WHERE Код = :id»);

//Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

queryUpd->Parameters->ParamByName («id»)->Value = id;

queryUpd->Parameters->ParamByName («hours»)->Value =

x->GetHours ();

queryUpd->Parameters->ParamByName («app_id»)->Value =

x->GetAppointmentId ();

queryUpd->Parameters->ParamByName («date_id»)->Value =

x->GetDateId ();

queryUpd->ExecSQL ();

//Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

connection->CommitTrans ();

//ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Π³Ρ€ΠΈΠ΄Π΅ ΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

int oldID = query->FieldByName («ΠšΠΎΠ΄»)->AsInteger;

positioning (oldID);

} else {

//ΠΎΡ‚ΠΊΠ°Ρ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

connection->RollbackTrans ();

}

delete queryUpd;

delete TableRecord;

delete x;

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ записи.

//ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

connection->BeginTrans ();

//созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° для выполнСния Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

TADOStoredProc* storedProc = new TADOStoredProc (this);

storedProc->Connection = connection;

//Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

storedProc->ProcedureName = «Insert_to_table» ;

storedProc->Active = True;

//ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠΉ записи

int id = storedProc->FieldByName («ΠšΠΎΠ΄»)->AsInteger;

//ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…

TRecordInfo* x = new TRecordInfo (id);

x->SetStartDate (dateStart->Date);

x->SetEndDate (dateEnd->Date);

//ΠΎΠΊΠ½ΠΎ рСдактирования

TableRecord = new TTableRecord (this, connection, x);

TModalResult mr = TableRecord->ShowModal ();

//ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для сохранСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

TADOQuery* queryUpd = new TADOQuery (this);

queryUpd->Connection = connection;

queryUpd->Active = False;

int oldID;

if (mr == mrOk){

queryUpd->SQL->Clear ();

queryUpd->SQL->Add («UPDATE ВабСль SET «);

queryUpd->SQL->Add («Π§Π°ΡΡ‹ = :hours, «);

queryUpd->SQL->Add («ΠšΠΎΠ΄_назначСния = :app_id, «);

queryUpd->SQL->Add («ΠšΠΎΠ΄_Π΄Π°Ρ‚Ρ‹ = :date_id «);

queryUpd->SQL->Add («WHERE Код = :id»);

queryUpd->Parameters->ParamByName («id»)->Value = id;

queryUpd->Parameters->ParamByName («hours»)->Value =

x->GetHours ();

queryUpd->Parameters->ParamByName («app_id»)->Value =

x->GetAppointmentId ();

queryUpd->Parameters->ParamByName («date_id»)->Value =

x->GetDateId ();

queryUpd->ExecSQL ();

//Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ ΠΊΠΎΠ΄ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠΉ записи для позиционирования

oldID = id;

//Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

connection->CommitTrans ();

} else {

//Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ ΠΊΠΎΠ΄ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ записи для позиционирования

oldID = query->FieldByName («ΠšΠΎΠ΄»)->AsInteger;

connection->RollbackTrans ();

}

//ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Π³Ρ€ΠΈΠ΄Π΅ ΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

positioning (oldID);

delete storedProc;

delete queryUpd;

delete TableRecord;

delete x;

УдалСниС записи.

TADOQuery* queryUpd = new TADOQuery (this);

queryUpd->Connection = connection;

int id = query->FieldByName («ΠšΠΎΠ΄»)->AsInteger;

queryUpd->Active = False;

//ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° сущСствования связанных записСй

queryUpd->SQL->Add («Select Код FROM НачислСния»);

queryUpd->SQL->Add («WHERE Код_табСля = :id»);

queryUpd->SQL->Add («UNION»);

queryUpd->SQL->Add («Select Код FROM УдСрТания»);

queryUpd->SQL->Add («WHERE Код_табСля = :id2»);

queryUpd->Parameters->ParamByName («id»)->Value = id;

queryUpd->Parameters->ParamByName («id2»)->Value = id;

queryUpd->Open ();

if (!queryUpd->IsEmpty ()) {

//сообщСниС Π² ΡΠ»ΡƒΡ‡Π°Π΅ сущСствования связанных записСй

ShowMessage («ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ запись»);

delete queryUpd;

return;

}

//запрос подтвСрТдСния удалСния записи

int btn;

btn = Application->MessageBox («Π£Π΄Π°Π»ΠΈΡ‚ΡŒ запись?», «Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ записи» ,

MB_YESNO);

if (btn == IDNO) {

return;

}

//сохранСниС ΠΊΠΎΠ΄Π° для позиционирования

query->Next ();

int oldID = query->FieldByName («ΠšΠΎΠ΄»)->AsInteger;

if (oldID == id) {

query->Prior ();

oldID = query->FieldByName («ΠšΠΎΠ΄»)->AsInteger;

}

//ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ записи

queryUpd->Active = False;

queryUpd->SQL->Text = «DELETE FROM ВабСль WHERE Код = :id» ;

queryUpd->Parameters->ParamByName («id»)->Value = id;

queryUpd->ExecSQL ();

positioning (oldID);

delete queryUpd;

Поиск Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅

int id = query->FieldByName («ΠšΠΎΠ΄»)->AsInteger;

querySearch->Close ();

querySearch->SQL->Clear ();

//запрос Π½Π° ΠΏΠΎΠΈΡΠΊ Π΄Π°Π½Π½Ρ‹Ρ…

querySearch->SQL->Add («Select Ρ‚Π°Π±Π΅Π»ΡŒ. Код FROM Ρ‚Π°Π±Π΅Π»ΡŒ,»);

querySearch->SQL->Add («full_appointments_info, Π”Π°Ρ‚Ρ‹»);

querySearch->SQL->Add («WHERE Π€ΠΈΠΎ like: name»);

querySearch->SQL->Add («and ΠΎΡ‚Π΄Π΅Π» like: dep»);

querySearch->SQL->Add («and Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ like: pos»);

querySearch->SQL->Add («and ΠΊΠΎΠ΄_назначСния = full_appointments_info.Код»);

querySearch->SQL->Add («AND Код_Π΄Π°Ρ‚Ρ‹ = Π”Π°Ρ‚Ρ‹. Код «);

querySearch->SQL->Add («AND Π”Π°Ρ‚Π° BETWEEN: start and: end»);

querySearch->SQL->Add («ORDER BY Π”Π°Ρ‚Π°, ЀИО»);

querySearch->Parameters->ParamByName («name»)->Value =

" %" + eSearch->Text + «%» ;

querySearch->Parameters->ParamByName («dep»)->Value =

" %" + eDepartment->Text + «%» ;

querySearch->Parameters->ParamByName («pos»)->Value =

" %" + ePosition->Text + «%» ;

querySearch->Parameters->ParamByName («start»)->Value = start;

querySearch->Parameters->ParamByName («end»)->Value = end;

querySearch->Open ();

if (querySearch->IsEmpty ()){

btnSearchNext->Enabled = false;

btnSearchPrev->Enabled = false;

} else {

//Ссли записи Π½Π°ΠΉΠ΄Π΅Π½Ρ‹ активация возмоТности ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ

btnSearchNext->Enabled = true;

btnSearchPrev->Enabled = true;

//ΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΉ

int newId = querySearch->FieldByName («ΠšΠΎΠ΄»)->AsInteger;

query->Locate («ΠšΠΎΠ΄», newId, TLocateOptions ());

DBGrid->SetFocus ();

}

ОбновлСниС Π΄Π°Π½Π½Ρ‹Ρ… Π² Π³Ρ€ΠΈΠ΄Π΅ ΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ вставкС, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ записСй.

WideString s = query->Sort;

query->Close ();

query->Open ();

query->DisableControls ();

query->Sort = s;

query->Locate («ΠšΠΎΠ΄», key, TLocateOptions ());

query->EnableControls ();

DBGrid->SetFocus ();

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π’ ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка сотрудников для построСния ΠΎΡ‚Ρ‡Π΅Ρ‚Π° со ΡΠΏΠΈΡΠΊΠΎΠΌ долТностСй.

query2 = new TADOQuery (this);

dataSource = new TDataSource (this);

query2->Connection = connection;

query2->Close ();

//ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка сотрудников

query2->SQL->Add («Select Код, ЀИО»);

query2->SQL->Add («from Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ»);

query2->SQL->Add («order by Π€Π˜Πž»);

query2->Open ();

if (query2->IsEmpty ()){

//Π²Ρ‹Ρ…ΠΎΠ΄ Ссли сотрудников Π½Π΅Ρ‚

ShowMessage («ΠΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΎΠ²»);

Close ();

}

//ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ списка

dataSource->DataSet = query2;

DBLookupComboBox1->ListSource = dataSource;

DBLookupComboBox1->ListField = «Π€Π˜Πž» ;

DBLookupComboBox1->KeyField = «ΠšΠΎΠ΄» ;

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Π°, послС Π²Ρ‹Π±ΠΎΡ€Π° сотрудника.

//ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ сотрудника

int worker = query2->FieldByName («ΠšΠΎΠ΄»)->AsInteger;

query->Connection = connection;

query->Close ();

query->SQL->Clear ();

//ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка долТностСй с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

query->SQL->Add («Select ДолТности. НазваниС Π”ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ,»);

query->SQL->Add («Π”Π°Ρ‚Π°_назначСния, Π”Π°Ρ‚Π°_ΡƒΡ…ΠΎΠ΄Π°, ЀИО»);

query->SQL->Add («From Appointments_of_worker_by_id (:wid), ДолТности»);

query->SQL->Add («where Код_долТности = долТности. ΠΊΠΎΠ΄»);

query->SQL->Add («Order by Π”Π°Ρ‚Π°_назначСния»);

query->Parameters->ParamByName («wid»)->Value = worker;

query->Open ();

if (query->IsEmpty ()){

QRLabel1->Caption = «ΠΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ…» ;

} else {

QRLabel1->Caption = «ΠΠ°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ:» ;

}

lFio->Caption = query->FieldByName («Π€Π˜Πž»)->AsString;

//связываниС ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΈ ΠΏΠΎΠ»Π΅ΠΉ Π²Ρ‹Π²ΠΎΠ΄Π° с Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…

QuickRep1->DataSet = query;

tPosition->DataSet = query;

tPosition->DataField = «Π”ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ» ;

tStart->DataSet = query;

tStart->DataField = «Π”Π°Ρ‚Π°_назначСния» ;

tEnd->DataSet = query;

tEnd->DataField = «Π”Π°Ρ‚Π°_ΡƒΡ…ΠΎΠ΄Π°» ;

QuickRep1->Preview ();

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π“ ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ Код для построСния ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚ Π² ΠΎΡ‚Π΄Π΅Π»Π°Ρ… Π·Π° Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄.

query->Active = False;

query->SQL->Clear ();

//ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… для Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹

query->SQL->Add («Select ΠžΡ‚Π΄Π΅Π»Ρ‹. НазваниС ΠžΡ‚Π΄Π΅Π»,»);

query->SQL->Add («Sum (amfedorenko.salary (ВабСль.Код)) Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Π°»);

query->SQL->Add («From ВабСль, НазначСния, Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊΠΈ, Π”Π°Ρ‚Ρ‹, ΠžΡ‚Π΄Π΅Π»Ρ‹»);

query->SQL->Add («where Код_назначСния = назначСния. ΠΊΠΎΠ΄»);

query->SQL->Add («and ΠΊΠΎΠ΄_сотрудника = сотрудники. ΠΊΠΎΠ΄»);

query->SQL->Add («and ΠΊΠΎΠ΄_Π΄Π°Ρ‚Ρ‹ = Π΄Π°Ρ‚Ρ‹. ΠΊΠΎΠ΄»);

query->SQL->Add («and ΠΊΠΎΠ΄_ΠΎΡ‚Π΄Π΅Π»Π° = ΠΎΡ‚Π΄Π΅Π»Ρ‹. ΠΊΠΎΠ΄»);

query->SQL->Add («and Π”Π°Ρ‚Π° between: start and: end»);

query->SQL->Add («group by ΠžΡ‚Π΄Π΅Π»Ρ‹. НазваниС»);

query->SQL->Add («order by ΠžΡ‚Π΄Π΅Π»Ρ‹. НазваниС»);

query->Parameters->ParamByName («start»)->Value = dateStart->Date;

query->Parameters->ParamByName («end»)->Value = dateEnd->Date;

query->Open ();

if (!query->IsEmpty ()) {

Chart->Title->Text->Clear ();

Chart->Title->Text->Add («Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Π° ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»Π°ΠΌ Π·Π° «);

Chart->Title->Text->Add (dateStart->Date.DateString ());

Chart->Title->Text->Add (dateEnd->Date.DateString ());

} else {

Chart->Title->Text->Clear ();

Chart->Title->Text->Add («ΠΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ… Π·Π° ΡΡ‚ΠΎΡ‚ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄»);

}

Chart->SeriesList->Clear ();

//сСрия для Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹

TBarSeries* x = new TBarSeries (this);

AnsiString name = «» ;

Currency sum = 0;

//ΠΏΡ€ΠΎΡ…ΠΎΠ΄ ΠΏΠΎ Π²ΡΠ΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹ΠΌ записям

while (!query->Eof){

name = query->FieldByName («ΠžΡ‚Π΄Π΅Π»»)->AsString;

sum = query->FieldByName («Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Π°»)->AsCurrency;

//Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ столбца Π² ΡΠ΅Ρ€ΠΈΡŽ

x->AddBar (sum, name, clBlue);

//ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ записи

query->Next ();

}

Chart->AddSeries (x);

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ