ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма мСбСльного ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°

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

Данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для управлСния ΠΌΠ΅Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠΌ. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΡŽΠ±Ρ‹ΠΌ количСством Π»ΠΈΡ†, для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²Π° доступа. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы сСмСйства Windows 9x ΠΈ Windows NT. На ΡΠ΅Ρ€Π²Π΅Ρ€Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ установлСно сСрвСрноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Firebird вСрсии 2.5 ΠΈ InterBase 6.0. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° разрабатываСтся… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма мСбСльного ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠœΠΈΠ½ΠΈΡΡ‚Π΅Ρ€ΡΡ‚Π²ΠΎ образования ΠΈ Π½Π°ΡƒΠΊΠΈ Российской Π€Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΠΈ БСлгородский государствСнный тСхнологичСский унивСрситСт ΠΈΠΌΠ΅Π½ΠΈ Π’. Π“. Π¨ΡƒΡ…ΠΎΠ²Π° Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚ ИВУБ ΠšΠ°Ρ„Π΅Π΄Ρ€Π° Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ тСхнологиям Π½Π° Ρ‚Π΅ΠΌΡƒ:

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма мСбСльного ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» студСнт Π³Ρ€ΡƒΠΏΠΏΡ‹ ИВ-31

ΠšΠΎΠ΄Π΅Π½Ρ†Π΅Π² АлСксандр Π“Π΅ΠΎΡ€Π³ΠΈΠ΅Π²ΠΈΡ‡ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ» ΠΏΡ€ΠΎΡ„. Иванов И.Π’.

Π‘Π΅Π»Π³ΠΎΡ€ΠΎΠ΄ 2012

  • 1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ основных Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ
    • 1.1 Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅
    • 1.2 ОснованиС для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
    • 1.3 НазначСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ срСдства
    • 1.4 ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ
    • 1.5 ВрСбования ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ срСдству
      • 1.5.1 ВрСбования ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ характСристикам
      • 1.5.2 ВрСбования ΠΊ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΠΈ
      • 1.5.3 ВрСбования ΠΊ ΡΠΎΡΡ‚Π°Π²Ρƒ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ тСхничСских срСдств
      • 1.5.4 ВрСбования ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎ-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ совмСстимости
  • 2. ВрСбования ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ
    • 2.1 Бостав ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ
  • 3. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация
    • 3.1 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° структуры Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…
    • 3.2 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ‚Π°Π±Π»ΠΈΡ†
    • 3.3 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ структуры ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
  • Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅
  • Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹
  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° SCRIPT. SQL
  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 2. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 3. Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ основных Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ

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

ЦСль Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹: созданиС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… для ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области, ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ клиСнтского прилоТСния.

1.2 ОснованиС для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° разрабатываСтся Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½Π° ΠΊΠ°Ρ„Π΅Π΄Ρ€Ρ‹ «Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ» ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ».

1.3 НазначСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ срСдства

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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° позволяСт:

1. Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°

2. Π Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ доступ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Ρƒ

3. Π£ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π·Π°ΠΊΠ°Π·Π°ΠΌΠΈ.

1.4 ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»:

1. Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°:

Β· ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ списка Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²

Β· Поиск ΠΏΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡŽ

Β· Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°

Β· Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

Β· ΠŸΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²

Β· Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ

2. Π Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ доступ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Ρƒ:

Β· Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания Π³Ρ€ΡƒΠΏΠΏ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Β· Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ настройки ΠΏΡ€Π°Π² доступа для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

Β· Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ добавлСния Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

Β· Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ рСдактирования Π³Ρ€ΡƒΠΏΠΏ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΈ ΡΠ°ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

3. Π£ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π·Π°ΠΊΠ°Π·Π°ΠΌΠΈ:

Β· ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Π·Π°ΠΊΠ°Π·ΠΎΠ²

Β· Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΊΠ°Π·Π°

Β· Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π·Π°ΠΊΠ°Π·Π°

1.5 ВрСбования ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ срСдству

1.5.1 ВрСбования ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ характСристикам

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, измСнСния, удалСния записСй.

Β· ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ измСнСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ.

Β· Π£Π΄ΠΎΠ±Π½Ρ‹ΠΉ графичСский интСрфСйс клиСнтского прилоТСния.

Β· НаглядноС прСдставлСниС Π΄Π°Π½Π½Ρ‹Ρ… (Π² Π²ΠΈΠ΄Π΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ²).

Β· АутСнтификация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

1.5.2 ВрСбования ΠΊ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΠΈ

Β· ΠŸΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π²Π²ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Β· ΠŸΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ измСнСния систСмных ΠΏΠΎΠ»Π΅ΠΉ.

Β· ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡΡΡ‹Π»ΠΎΡ‡Π½ΡƒΡŽ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ.

1.5.3 ВрСбования ΠΊ ΡΠΎΡΡ‚Π°Π²Ρƒ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ тСхничСских срСдств

Минимальная конфигурация:

Β· ОбъСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти 22 Мб ΠΈ Π±ΠΎΠ»Π΅Π΅.

Β· НС ΠΌΠ΅Π½Π΅Π΅ 1 Мб ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ мСста Π½Π° Π΄ΠΈΡΠΊΠ΅

Β· ΠœΡ‹ΡˆΡŒ

Β· ΠšΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°

1.5.4 ВрСбования ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎ-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ совмСстимости

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы сСмСйства Windows 9x ΠΈ Windows NT. На ΡΠ΅Ρ€Π²Π΅Ρ€Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ установлСно сСрвСрноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Firebird вСрсии 2.5 ΠΈ InterBase 6.0.

2. ВрСбования ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

2.1 Бостав ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

Бостав ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² ΡΠ΅Π±Ρ:

Β· ВСхничСскоС Π·Π°Π΄Π°Π½ΠΈΠ΅

Β· Π‘Ρ…Π΅ΠΌΠ° Π΄Π°Π½Π½Ρ‹Ρ…

Β· Код ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Β· Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

3. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация

3.1 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° структуры Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Рис. 1 Π‘Ρ…Π΅ΠΌΠ° Π΄Π°Π½Π½Ρ‹Ρ…

3.2 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ‚Π°Π±Π»ΠΈΡ†:

Рис. 2 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «GOODS»

Рис. 3 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «MAT»

Рис. 4 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «USERS»

Рис. 5 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «USER_TYPE»

Рис. 6 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «CATALOGS»

Рис. 7 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «SALES»

Рис. 8 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ «GOOD_SALES»

3.3 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ структуры ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Рис. 9 ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ структура ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

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

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… для ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы мСбСльного ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°, создано клиСнтскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡΡ‚ΠΎΠΉ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…. По ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ составлСн ΠΎΡ‚Ρ‡Π΅Ρ‚ с 3 прилоТСниями:

Β· Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ SQL-скрипт Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…;

Β· Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ клиСнтского прилоТСния (На ΡΠ·Ρ‹ΠΊΠ΅ Object Pascal);

Β· Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π¨Π°ΠΏΡ‚Π°Π»Π° Π’.Π’. «Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π›Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΌ для ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ 71 900» — Π‘Π΅Π»Π³ΠΎΡ€ΠΎΠ΄, 2005

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ: Π£Ρ‡Π΅Π±. для Π²ΡƒΠ·ΠΎΠ² / Π‘. Π―. Π‘ΠΎΠ²Π΅Ρ‚ΠΎΠ², Π’. Π’. ЦСхановский. — 2-Π΅ ΠΈΠ·Π΄., стСр.- М.: Π’Ρ‹ΡΡˆ. шк., 2005.-263 с.: ΠΈΠ».

ΠšΡ€Π΅Π½ΠΊΠ΅ Π”. ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° построСния Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…. 9-Π΅ ΠΈΠ·Π΄. — Π‘Пб.: ΠŸΠΈΡ‚Π΅Ρ€, 2005 — 859 с.: ΠΈΠ».

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° SCRIPT.SQL

/*************************************************************

*****************/

/*** Generated by IBExpert 2012.11.26.1 28.01.2013 4:45:38 ***/

/*************************************************************

*****************/

SET SQL DIALECT 3;

SET NAMES WIN1251;

CREATE DATABASE 'D:IT_Kursdb.fdb'

USER 'SYSDBA' PASSWORD 'masterkey'

PAGE_SIZE 16 384

DEFAULT CHARACTER SET WIN1251 COLLATION WIN1251;

/*************************************************************

*****************/

/*** Generators ***/

/*************************************************************

*****************/

CREATE GENERATOR GEN_CATALOGS_ID;

SET GENERATOR GEN_CATALOGS_ID TO 6;

CREATE GENERATOR GEN_COMPLECT_ID;

SET GENERATOR GEN_COMPLECT_ID TO 0;

CREATE GENERATOR GEN_GOODS_ID;

SET GENERATOR GEN_GOODS_ID TO 28;

CREATE GENERATOR GEN_GOOD_SALES_ID;

SET GENERATOR GEN_GOOD_SALES_ID TO 37;

CREATE GENERATOR GEN_MAT_ID;

SET GENERATOR GEN_MAT_ID TO 22;

CREATE GENERATOR GEN_MODEL_ROW_ID;

SET GENERATOR GEN_MODEL_ROW_ID TO 0;

CREATE GENERATOR GEN_MODULE_ID;

SET GENERATOR GEN_MODULE_ID TO 0;

CREATE GENERATOR GEN_MOD_IN_COMP_ID;

SET GENERATOR GEN_MOD_IN_COMP_ID TO 0;

CREATE GENERATOR GEN_MOD_IN_ROW_ID;

SET GENERATOR GEN_MOD_IN_ROW_ID TO 0;

CREATE GENERATOR GEN_MOD_SALES_ID;

SET GENERATOR GEN_MOD_SALES_ID TO 0;

CREATE GENERATOR GEN_SALES_ID;

SET GENERATOR GEN_SALES_ID TO 30;

CREATE GENERATOR GEN_USERS_ID;

SET GENERATOR GEN_USERS_ID TO 7;

CREATE GENERATOR GEN_USER_TYPE_ID;

SET GENERATOR GEN_USER_TYPE_ID TO 10;

/*************************************************************

*****************/

/*** Tables ***/

/*************************************************************

*****************/

CREATE TABLE CATALOGS (

ID INTEGER NOT NULL,

NAME VARCHAR (25) NOT NULL,

PARENT INTEGER DEFAULT 0 NOT NULL

);

CREATE TABLE COMPLECT (

ID INTEGER NOT NULL,

NAME VARCHAR (15) NOT NULL

);

CREATE TABLE GOOD_SALES (

ID INTEGER NOT NULL,

ID_SALES INTEGER NOT NULL,

ID_GOOD INTEGER NOT NULL,

CNT INTEGER DEFAULT 1 NOT NULL

);

CREATE TABLE GOODS (

ID INTEGER NOT NULL,

NAME VARCHAR (50) NOT NULL,

DESCR VARCHAR (1000),

S INTEGER,

V INTEGER,

G INTEGER,

MAT INTEGER,

PRICE INTEGER NOT NULL,

CNT INTEGER DEFAULT 1 NOT NULL,

MIN_PRICE INTEGER NOT NULL,

IMG VARCHAR (30),

CAT INTEGER NOT NULL

);

CREATE TABLE MAT (

ID INTEGER NOT NULL,

NAME VARCHAR (20) NOT NULL,

MAT VARCHAR (20),

COLOR VARCHAR (20),

IMG VARCHAR (100)

);

CREATE TABLE MOD_IN_COMP (

ID INTEGER NOT NULL,

ID_MOD INTEGER NOT NULL,

ID_COMP INTEGER NOT NULL,

" COUNT" SMALLINT DEFAULT 1 NOT NULL

);

CREATE TABLE MOD_IN_ROW (

ID INTEGER NOT NULL,

ID_MOD INTEGER NOT NULL,

ID_ROW INTEGER NOT NULL

);

CREATE TABLE MOD_SALES (

ID INTEGER NOT NULL,

ID_SALES INTEGER NOT NULL,

ID_MOD INTEGER NOT NULL,

" COUNT" INTEGER DEFAULT 1 NOT NULL

);

CREATE TABLE MODEL_ROW (

ID INTEGER NOT NULL,

NAME VARCHAR (30) NOT NULL,

MAT INTEGER NOT NULL

);

CREATE TABLE MODULE (

ID INTEGER NOT NULL,

NAME VARCHAR (50) NOT NULL,

DESCR VARCHAR (1000),

S INTEGER,

V INTEGER,

G INTEGER,

PRICE INTEGER NOT NULL,

MIN_PRICE INTEGER,

" COUNT" INTEGER DEFAULT 1 NOT NULL,

PARENT INTEGER NOT NULL,

IMG VARCHAR (30),

CAT INTEGER NOT NULL

);

CREATE TABLE SALES (

ID INTEGER NOT NULL,

DAT TIMESTAMP NOT NULL,

SALER INTEGER NOT NULL

);

CREATE TABLE USER_TYPE (

ID INTEGER NOT NULL,

NAME VARCHAR (20) NOT NULL,

SELECT_GOODS SMALLINT DEFAULT 1,

SELECT_SALES SMALLINT DEFAULT 0,

EDIT_GOODS SMALLINT DEFAULT 0,

ADD_GOODS SMALLINT DEFAULT 0,

SUPER SMALLINT DEFAULT 0

);

CREATE TABLE USERS (

ID INTEGER NOT NULL,

FN VARCHAR (20) NOT NULL,

" LN" VARCHAR (20) NOT NULL,

PN VARCHAR (20),

" TYPE" INTEGER NOT NULL,

PASS VARCHAR (20) NOT NULL

);

/*************************************************************

*****************/

/*** Primary Keys ***/

/*************************************************************

*****************/

ALTER TABLE CATALOGS ADD CONSTRAINT PK_CATALOGS

PRIMARY KEY (ID);

ALTER TABLE COMPLECT ADD CONSTRAINT PK_COMPLECT

PRIMARY KEY (ID);

ALTER TABLE GOODS ADD CONSTRAINT PK_GOODS PRIMARY

KEY (ID);

ALTER TABLE GOOD_SALES ADD CONSTRAINT PK_GOOD_SALES

PRIMARY KEY (ID);

ALTER TABLE MAT ADD CONSTRAINT PK_MAT PRIMARY KEY (ID);

ALTER TABLE MODEL_ROW ADD CONSTRAINT PK_MODEL_ROW PRIMARY KEY (ID);

ALTER TABLE MODULE ADD CONSTRAINT PK_MODULE PRIMARY KEY (ID);

ALTER TABLE MOD_IN_COMP ADD CONSTRAINT PK_MOD_IN_COMP PRIMARY KEY (ID);

ALTER TABLE MOD_IN_ROW ADD CONSTRAINT PK_MOD_IN_ROW PRIMARY KEY (ID);

ALTER TABLE MOD_SALES ADD CONSTRAINT PK_MOD_SALES PRIMARY KEY (ID);

ALTER TABLE SALES ADD CONSTRAINT PK_SALES PRIMARY KEY (ID);

ALTER TABLE USERS ADD CONSTRAINT PK_USERS PRIMARY KEY (ID);

ALTER TABLE USER_TYPE ADD CONSTRAINT PK_USER_TYPE PRIMARY KEY (ID);

/******************************************************************************/

/*** Foreign Keys ***/

/******************************************************************************/

ALTER TABLE CATALOGS ADD CONSTRAINT FK_CATALOGS1 FOREIGN KEY (PARENT) REFERENCES CATALOGS (ID) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE GOODS ADD CONSTRAINT FK_GOODS1 FOREIGN KEY (MAT) REFERENCES MAT (ID) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE GOODS ADD CONSTRAINT FK_GOODS2 FOREIGN KEY (CAT) REFERENCES CATALOGS (ID) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE GOOD_SALES ADD CONSTRAINT FK_GOOD_SALES1 FOREIGN KEY (ID_SALES) REFERENCES SALES (ID) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE GOOD_SALES ADD CONSTRAINT FK_GOOD_SALES2 FOREIGN KEY (ID_GOOD) REFERENCES GOODS (ID) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE MODEL_ROW ADD CONSTRAINT FK_MODEL_ROW1 FOREIGN KEY (MAT) REFERENCES MAT (ID) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE MODULE ADD CONSTRAINT FK_MODULE1 FOREIGN KEY (CAT) REFERENCES CATALOGS (ID) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE MODULE ADD CONSTRAINT FK_MODULE2 FOREIGN KEY (PARENT) REFERENCES MODEL_ROW (ID) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE MOD_IN_COMP ADD CONSTRAINT FK_MOD_IN_COMP1 FOREIGN KEY (ID_MOD) REFERENCES MODULE (ID) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE MOD_IN_COMP ADD CONSTRAINT FK_MOD_IN_COMP2 FOREIGN KEY (ID_COMP) REFERENCES COMPLECT (ID) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE MOD_IN_ROW ADD CONSTRAINT FK_MOD_IN_ROW1 FOREIGN KEY (ID_MOD) REFERENCES MODULE (ID) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE MOD_IN_ROW ADD CONSTRAINT FK_MOD_IN_ROW2 FOREIGN KEY (ID_ROW) REFERENCES MODEL_ROW (ID) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE MOD_SALES ADD CONSTRAINT FK_MOD_SALES1 FOREIGN KEY (ID_SALES) REFERENCES SALES (ID) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE MOD_SALES ADD CONSTRAINT FK_MOD_SALES2 FOREIGN KEY (ID_MOD) REFERENCES MODULE (ID) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE SALES ADD CONSTRAINT FK_SALES1 FOREIGN KEY (SALER) REFERENCES USERS (ID) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE USERS ADD CONSTRAINT FK_USERS1 FOREIGN KEY («TYPE») REFERENCES USER_TYPE (ID) ON DELETE CASCADE ON UPDATE CASCADE;

/******************************************************************************/

/*** Triggers ***/

/******************************************************************************/

SET TERM ^ ;

/******************************************************************************/

/*** Triggers for tables ***/

/******************************************************************************/

/* Trigger: CATALOGS_BI */

CREATE TRIGGER CATALOGS_BI FOR CATALOGS

ACTIVE BEFORE INSERT POSITION 0

as

begin

if (new.id is null) then

new.id = gen_id (gen_catalogs_id, 1);

end

^

/* Trigger: COMPLECT_BI */

CREATE TRIGGER COMPLECT_BI FOR COMPLECT

ACTIVE BEFORE INSERT POSITION 0

as

begin

if (new.id is null) then

new.id = gen_id (gen_complect_id, 1);

end

^

/* Trigger: GOODS_BI */

CREATE TRIGGER GOODS_BI FOR GOODS

ACTIVE BEFORE INSERT POSITION 0

as

begin

if (new.id is null) then

new.id = gen_id (gen_goods_id, 1);

end

^

/* Trigger: GOODS_BI_MIN */

CREATE TRIGGER GOODS_BI_MIN FOR GOODS

ACTIVE BEFORE INSERT POSITION 0

as

begin

if (new.min_price is null) then

new.min_price = new. price;

end

^

/* Trigger: GOOD_SALES_BI */

CREATE TRIGGER GOOD_SALES_BI FOR GOOD_SALES

ACTIVE BEFORE INSERT POSITION 0

as

begin

if (new.id is null) then

new.id = gen_id (gen_good_sales_id, 1);

end

^

/* Trigger: MAT_BI */

CREATE TRIGGER MAT_BI FOR MAT

ACTIVE BEFORE INSERT POSITION 0

as

begin

if (new.id is null) then

new.id = gen_id (gen_mat_id, 1);

end

^

/* Trigger: MODEL_ROW_BI */

CREATE TRIGGER MODEL_ROW_BI FOR MODEL_ROW

ACTIVE BEFORE INSERT POSITION 0

as

begin

if (new.id is null) then

new.id = gen_id (gen_model_row_id, 1);

end

^

/* Trigger: MODULE_BI */

CREATE TRIGGER MODULE_BI FOR MODULE

ACTIVE BEFORE INSERT POSITION 0

as

begin

if (new.id is null) then

new.id = gen_id (gen_module_id, 1);

end

^

/* Trigger: MODULE_BI_MIN */

CREATE TRIGGER MODULE_BI_MIN FOR MODULE

ACTIVE BEFORE INSERT POSITION 0

as

begin

if (new.min_price is null) then

new.min_price = new. price;

end

^

/* Trigger: MOD_IN_COMP_BI */

CREATE TRIGGER MOD_IN_COMP_BI FOR MOD_IN_COMP

ACTIVE BEFORE INSERT POSITION 0

as

begin

if (new.id is null) then

new.id = gen_id (gen_mod_in_comp_id, 1);

end

^

/* Trigger: MOD_IN_ROW_BI */

CREATE TRIGGER MOD_IN_ROW_BI FOR MOD_IN_ROW

ACTIVE BEFORE INSERT POSITION 0

as

begin

if (new.id is null) then

new.id = gen_id (gen_mod_in_row_id, 1);

end

^

/* Trigger: MOD_SALES_BI */

CREATE TRIGGER MOD_SALES_BI FOR MOD_SALES

ACTIVE BEFORE INSERT POSITION 0

as

begin

if (new.id is null) then

new.id = gen_id (gen_mod_sales_id, 1);

end

^

/* Trigger: SALES_BI */

CREATE TRIGGER SALES_BI FOR SALES

ACTIVE BEFORE INSERT POSITION 0

as

begin

if (new.id is null) then

new.id = gen_id (gen_sales_id, 1);

end

^

/* Trigger: USERS_BI */

CREATE TRIGGER USERS_BI FOR USERS

ACTIVE BEFORE INSERT POSITION 0

as

begin

if (new.id is null) then

new.id = gen_id (gen_users_id, 1);

end

^

/* Trigger: USER_TYPE_BI */

CREATE TRIGGER USER_TYPE_BI FOR USER_TYPE

ACTIVE BEFORE INSERT POSITION 0

as

begin

if (new.id is null) then

new.id = gen_id (gen_user_type_id, 1);

end

^

SET TERM; ^

ΠŸΠ Π˜Π›ΠžΠ–Π•ΠΠ˜Π• 2

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Unit1

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, IBDatabase, Grids, DBGrids, IBCustomDataSet, IBQuery,

ComCtrls,

Menus, StdCtrls, IdHashMessageDigest, ExtCtrls, TeEngine, TeeProcs,

Chart,

DBChart, Series;

type

TMainWnd = class (TForm)

IBDatabase1: TIBDatabase;

IBQuery1: TIBQuery;

IBTransaction1: TIBTransaction;

DataSource1: TDataSource;

catalog: TPageControl;

TabSheet1: TTabSheet;

Button1: TButton;

DBGrid1: TDBGrid;

Button2: TButton;

Button3: TButton;

TabSheet2: TTabSheet;

Edit1: TEdit;

Button4: TButton;

GroupBox1: TGroupBox;

Image1: TImage;

Label1: TLabel;

Memo1: TMemo;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

Image2: TImage;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

Label13: TLabel;

Button5: TButton;

Label14: TLabel;

Label15: TLabel;

Label16: TLabel;

Label17: TLabel;

Button6: TButton;

DBGrid2: TDBGrid;

GroupBox2: TGroupBox;

IBQuery2: TIBQuery;

DataSource2: TDataSource;

GroupBox3: TGroupBox;

DBGrid3: TDBGrid;

ComboBox1: TComboBox;

Label18: TLabel;

Label19: TLabel;

ComboBox2: TComboBox;

ComboBox3: TComboBox;

Label20: TLabel;

ComboBox4: TComboBox;

Label21: TLabel;

Label22: TLabel;

ComboBox5: TComboBox;

IBQuery3: TIBQuery;

DataSource3: TDataSource;

Label23: TLabel;

Edit2: TEdit;

Button7: TButton;

Button8: TButton;

Button9: TButton;

IBQuery4: TIBQuery;

Label24: TLabel;

Edit3: TEdit;

Edit4: TEdit;

Label25: TLabel;

Edit5: TEdit;

Label26: TLabel;

Label27: TLabel;

ComboBox6: TComboBox;

Button10: TButton;

Button11: TButton;

Button12: TButton;

Edit6: TEdit;

Label28: TLabel;

Button13: TButton;

Button14: TButton;

Button15: TButton;

Label29: TLabel;

Label30: TLabel;

Label31: TLabel;

Label32: TLabel;

TabSheet3: TTabSheet;

DBGrid4: TDBGrid;

GroupBox4: TGroupBox;

IBQuery5: TIBQuery;

IBQuery6: TIBQuery;

DataSource4: TDataSource;

DataSource5: TDataSource;

GroupBox5: TGroupBox;

DBGrid5: TDBGrid;

Button16: TButton;

Button17: TButton;

TabSheet4: TTabSheet;

Chart1: TChart;

IBQuery7: TIBQuery;

Series1: TBarSeries;

procedure FormCreate (Sender: TObject);

procedure FormCloseQuery (Sender: TObject; var CanClose: Boolean);

procedure Button3Click (Sender: TObject);

procedure Edit1Change (Sender: TObject);

procedure Button4Click (Sender: TObject);

procedure DBGrid1CellClick (Column: TColumn);

procedure Button5Click (Sender: TObject);

procedure UR;

procedure Button6Click (Sender: TObject);

procedure DBGrid3CellClick (Column: TColumn);

procedure Button9Click (Sender: TObject);

procedure Button7Click (Sender: TObject);

procedure Edit2Change (Sender: TObject);

procedure Button8Click (Sender: TObject);

procedure DBGrid2CellClick (Column: TColumn);

procedure Edit3Change (Sender: TObject);

procedure Edit4Change (Sender: TObject);

procedure Edit5Change (Sender: TObject);

procedure ComboBox6Change (Sender: TObject);

procedure Button10Click (Sender: TObject);

procedure Button11Click (Sender: TObject);

procedure Button12Click (Sender: TObject);

procedure Button13Click (Sender: TObject);

procedure Button14Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure Button15Click (Sender: TObject);

procedure DBGrid4CellClick (Column: TColumn);

procedure Button16Click (Sender: TObject);

procedure Button17Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

type

BASC = record

ID: Integer;

CNT: byte;

PRICE: Integer;

end;

var

MainWnd: TMainWnd;

MODE: array [1. 5] of Boolean;

IDUSER: byte;

USERTYPES: array [0. 25] of byte;

MODENAME: string = 'ΠšΠ»ΠΈΠ΅Π½Ρ‚';

USERNAME: string = 'НСавторизированный ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ';

ADDFORMMODE: Integer = 0;

BASKET: array [0. 25] of BASC;

CNTBASK: byte = 0;

first: boolean;

implementation

uses Unit2, Unit3, Unit5, Unit6;

{$R *.dfm}

function md5(SourceString: string): string;

var

md5: TIdHashMessageDigest5;

begin

Result := '';

md5 := TIdHashMessageDigest5. Create;

try

Result := AnsiLowerCase (md5.HashStringAsHex (SourceString));

finally

FreeAndNil (md5);

end;

end;

procedure TMainWnd. UR;

var

i: byte;

tprice: Integer;

begin

MainWnd.Label15.Caption := Unit1. USERNAME;

MainWnd.Label17.Caption := Unit1. MODENAME;

MainWnd.DBGrid1.Refresh;

MainWnd.DBGrid2.Refresh;

MainWnd.DBGrid3.Refresh;

MainWnd.DBGrid4.Refresh;

MainWnd.DBGrid5.Refresh;

MainWnd.IBQuery5.Open;

//MainWnd.IBQuery6.Open;

MainWnd.IBQuery3.Open;

MainWnd.IBQuery2.Open;

//MainWnd.IBQuery1.Open;

tprice := 0;

for i := 0 to CNTBASK do

tprice := tprice + BASKET[i]. CNT * BASKET[i]. PRICE;

MainWnd.Label31.Caption := IntToStr (CNTBASK+1);

MainWnd.Label32.Caption := IntToStr (tprice) + ' Ρ€.';

if MODE[5] then

begin

TabSheet2.TabVisible := true;

MainWnd.Button3.Visible:=true;

MainWnd.Button13.Visible:=true;

MainWnd.Button14.Visible:=true;

MainWnd.Button2.Visible:=true;

MainWnd.Button15.Visible:=true;

MainWnd.Label29.Visible:=true;

MainWnd.Label30.Visible:=true;

MainWnd.Label31.Visible:=true;

MainWnd.Label32.Visible:=true;

end

else begin

TabSheet2.TabVisible := false;

MainWnd.Button3.Visible:=false;

MainWnd.Button13.Visible:=false;

MainWnd.Button14.Visible:=false;

MainWnd.Button2.Visible:=false;

MainWnd.Button15.Visible:=false;

MainWnd.Label29.Visible:=false;

MainWnd.Label30.Visible:=false;

MainWnd.Label31.Visible:=false;

MainWnd.Label32.Visible:=false;

end;

if (MODE[5]) OR (MODE[2]) then begin

MainWnd.Button3.Visible:=true;

TabSheet3.TabVisible := true;

MainWnd.Button2.Visible:=true;

MainWnd.Button15.Visible:=true;

MainWnd.Label29.Visible:=true;

MainWnd.Label30.Visible:=true;

MainWnd.Label31.Visible:=true;

MainWnd.Label32.Visible:=true;

end

else begin

TabSheet3.TabVisible := false;

MainWnd.Button3.Visible:=false;

MainWnd.Button2.Visible:=false;

MainWnd.Button15.Visible:=false;

MainWnd.Label29.Visible:=false;

MainWnd.Label30.Visible:=false;

MainWnd.Label31.Visible:=false;

MainWnd.Label32.Visible:=false;

end;

if (MODE[5]) OR (MODE[2]) then begin

MainWnd.Button3.Visible:=true;

TabSheet4.TabVisible := true;

MainWnd.Button2.Visible:=true;

MainWnd.Button15.Visible:=true;

MainWnd.Label29.Visible:=true;

MainWnd.Label30.Visible:=true;

MainWnd.Label31.Visible:=true;

MainWnd.Label32.Visible:=true;

end

else begin

TabSheet4.TabVisible := false;

MainWnd.Button3.Visible:=false;

MainWnd.Button2.Visible:=false;

MainWnd.Button15.Visible:=false;

MainWnd.Label29.Visible:=false;

MainWnd.Label30.Visible:=false;

MainWnd.Label31.Visible:=false;

MainWnd.Label32.Visible:=false;

end;

if (MODE[5]) OR (MODE[3]) then begin

MainWnd.Button3.Visible:=true;

MainWnd.Button13.Visible:=true;

MainWnd.Button14.Visible:=true;

end

else begin

MainWnd.Button3.Visible:=false;

MainWnd.Button13.Visible:=false;

MainWnd.Button14.Visible:=false;

end;

end;

procedure TMainWnd. Button10Click (Sender: TObject);

begin

IBQuery4.SQL.Clear;

IBQuery4.SQL.Text := 'UPDATE USERS SET FN = ''' + Edit3. Text +

''', LN = ''' + Edit4. Text + ''', PN = ''' + Edit5. Text + ''', TYPE = ''' +

IntToStr (USERTYPES[ComboBox6.ItemIndex]) + ''', PASS = ''' +

Edit6.Text +

''' WHERE ID = ''' + DBGrid2.DataSource.DataSet.FieldByName ('ID')

.AsString + '''';

IBQuery4.Open;

MainWnd.IBTransaction1.Commit;

DBGrid3.Refresh;

IBQuery3.Open;

DBGrid2.Refresh;

IBQuery2.Open;

Edit3.Text := '';

Edit4.Text := '';

Edit5.Text := '';

Edit6.Text := '';

end;

procedure TMainWnd. Button11Click (Sender: TObject);

begin

IBQuery4.SQL.Clear;

IBQuery4.SQL.Text :=

'INSERT INTO USERS (FN, LN, PN, TYPE, PASS) VALUES (''' + Edit3. Text

+ ''',''' + Edit4. Text + ''',''' + Edit5. Text + ''',''' + IntToStr

(USERTYPES[ComboBox6.ItemIndex]) + ''',''' + Edit6. Text + ''')';

IBQuery4.Open;

MainWnd.IBTransaction1.Commit;

DBGrid3.Refresh;

IBQuery3.Open;

DBGrid2.Refresh;

IBQuery2.Open;

Edit3.Text := '';

Edit4.Text := '';

Edit5.Text := '';

Edit6.Text := '';

end;

procedure TMainWnd. Button12Click (Sender: TObject);

begin

if MessageBox (Handle, 'Π£Π΄Π°Π»ΠΈΡ‚ΡŒ сотрудника?', 'Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅', 35) = 6 then

begin

IBQuery4.SQL.Clear;

IBQuery4.SQL.Text :=

'DELETE FROM USERS WHERE ID = ' +

DBGrid2.DataSource.DataSet.FieldByName

('ID').AsString;

IBQuery4.Open;

MainWnd.IBTransaction1.Commit;

DBGrid3.Refresh;

IBQuery3.Open;

DBGrid2.Refresh;

IBQuery2.Open;

Edit3.Text := '';

Edit4.Text := '';

Edit5.Text := '';

Edit6.Text := '';

end;

end;

procedure TMainWnd. Button13Click (Sender: TObject);

begin

with AddGoods do

Begin

Image1.Picture.LoadFromFile (ExtractFilePath (Application.Exename)

+ MainWnd. DBGrid1.DataSource.DataSet.FieldByName ('IMG').AsString);

Image2.Picture.LoadFromFile (ExtractFilePath (Application.Exename)

MainWnd.DBGrid1.DataSource.DataSet.FieldByName ('MIMG').AsString);

Edit1.Text :=

MainWnd.DBGrid1.DataSource.DataSet.FieldByName ('NAME')

.AsString;

Edit6.Text :=

MainWnd.DBGrid1.DataSource.DataSet.FieldByName ('PRICE')

.AsString;

Edit2.Text :=

MainWnd.DBGrid1.DataSource.DataSet.FieldByName ('S').AsString;

Edit3.Text :=

MainWnd.DBGrid1.DataSource.DataSet.FieldByName ('V').AsString;

Edit4.Text :=

MainWnd.DBGrid1.DataSource.DataSet.FieldByName ('G').AsString;

Memo1.Text :=

MainWnd.DBGrid1.DataSource.DataSet.FieldByName ('DESCR')

.AsString;

Edit5.Text := MainWnd. DBGrid1.DataSource.DataSet.FieldByName ('CNT')

.AsString;

Edit7.Text :=

MainWnd.DBGrid1.DataSource.DataSet.FieldByName ('MIN_PRICE')

.AsString;

TMPSTR :=

MainWnd.DBGrid1.DataSource.DataSet.FieldByName ('IMG').AsString;

AddGoodTest[8] := true;

Image11.Picture.LoadFromFile ('images/icon/ok.jpg');

// Label13. Caption :=

DBGrid1.DataSource.DataSet.FieldByName ('CAT').AsString;

End;

ADDFORMMODE :=

MainWnd.DBGrid1.DataSource.DataSet.FieldByName ('ID').AsInteger;

AddGoods.Button1.Caption := 'Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ';

AddGoods.ShowModal;

DBGrid1.Refresh;

IBQuery1.Open;

AddGoods.Button4Click (Sender);

end;

procedure TMainWnd. Button14Click (Sender: TObject);

begin

if MessageBox (Handle, 'Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€?', 'Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅', 35) = 6 then

begin

IBQuery2.SQL.Clear;

IBQuery2.SQL.Text :=

'DELETE FROM GOODS WHERE ID = ' +

DBGrid1.DataSource.DataSet.FieldByName

('ID').AsString;

IBQuery2.Open;

MainWnd.IBTransaction1.Commit;

DBGrid1.Refresh;

IBQuery1.Open;

end;

end;

procedure TMainWnd. Button15Click (Sender: TObject);

var

SID, i: integer;

begin

IBQuery4.SQL.Clear;

IBQuery4.SQL.Text:='INSERT INTO SALES (DAT, SALER) VALUES ('''+

DateToStr (now)+''','''+IntToStr (IDUSER)+''')';

IBQuery4.Open;

IBQuery4.SQL.Clear;

IBQuery4.SQL.Text:='SELECT MAX (ID) FROM SALES;';

IBQuery4.Open;

SID:= IBQuery4. FieldByName ('MAX').AsInteger;

for i := 0 to CNTBASK do

begin

IBQuery4.SQL.Clear;

IBQuery4.SQL.Text:='INSERT INTO

GOOD_SALES (ID_SALES, ID_GOOD, CNT) VALUES ('''+

IntToStr (SID)+''','''+IntToStr (BASKET[i]. ID)+''','''+

IntToStr (BASKET[i]. CNT)+''');';

IBQuery4.Open;

end;

CNTBASK:=0;

MainWnd.IBTransaction1.Commit;

DBGrid1.Refresh;

IBQuery1.Open;

UR;

end;

procedure TMainWnd. Button16Click (Sender: TObject);

begin

if MessageBox (Handle, 'Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π·Π°ΠΊΠ°Π·?', 'Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅', 35) = 6 then

begin

IBQuery4.SQL.Clear;

IBQuery4.SQL.Text:= 'DELETE FROM SALES WHERE ID =

'+DBGrid4.DataSource.DataSet.FieldByName ('ID').AsString;

IBQuery4.Open;

MainWnd.IBTransaction1.Commit;

UR;

end;

end;

procedure TMainWnd. Button17Click (Sender: TObject);

begin

if MessageBox (Handle, 'Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π·Π°ΠΊΠ°Π·Π°?', 'Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅', 35) = 6

then

begin

IBQuery4.SQL.Clear;

IBQuery4.SQL.Text:= 'DELETE FROM GOOD_SALES WHERE ID =

'+DBGrid5.DataSource.DataSet.FieldByName ('ID').AsString;

IBQuery4.Open;

MainWnd.IBTransaction1.Commit;

DBGrid5.Refresh;

UR;

end;

end;

procedure TMainWnd. Button2Click (Sender: TObject);

var

i, too: byte;

flag: boolean;

begin

flag:=true;

for i := 0 to CNTBASK do

begin

if BASKET[i]. ID =

DBGrid1.DataSource.DataSet.FieldByName ('ID').AsInteger then

begin

BASKET[i]. CNT:= BASKET[i]. CNT+1;

flag:=false;

break;

end;

end;

if flag then

begin

if not first then

begin

CNTBASK:=CNTBASK+1;

end;

BASKET[CNTBASK]. ID:=

DBGrid1.DataSource.DataSet.FieldByName ('ID').AsInteger;

BASKET[CNTBASK]. CNT:= 1;

BASKET[CNTBASK]. PRICE:=

DBGrid1.DataSource.DataSet.FieldByName ('PRICE').AsInteger;

if first then

begin

first:= false;

end;

end;

UR;

end;

procedure TMainWnd. Button3Click (Sender: TObject);

begin

ADDFORMMODE := 0;

AddGoods.Button1.Caption := 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ';

AddGoods.ShowModal;

DBGrid1.Refresh;

IBQuery1.Open;

end;

procedure TMainWnd. Button4Click (Sender: TObject);

begin

with IBQuery1 do

begin

close;

SQL.Clear;

SQL.Add ('SELECT GOODS. ID, GOODS.NAME, DESCR, S, V, G, MAT. IMG

AS MIMG, PRICE,');

SQL.Add ('MAT.NAME AS MNAME, MAT. MAT AS MAT,');

SQL.Add ('CNT, GOODS. IMG, CATALOGS.NAME AS CAT FROM

GOODS, CATALOGS, MAT ');

SQL.Add ('WHERE GOODS. CAT = CATALOGS. ID AND MAT. ID =

GOODS.MAT ');

SQL.Add ('AND GOODS.NAME LIKE ''' + Edit1. Text + ''';');

Open;

end;

end;

procedure TMainWnd. Button5Click (Sender: TObject);

begin

if Button5. Caption = 'Π’Ρ…ΠΎΠ΄' then

begin

Login.ShowModal;

UR;

end else begin

MODE[1]: =true;

MODE[2]:=false;

MODE[3]:=false;

MODE[4]:=false;

MODE[5]:=false;

IDUSER:=0;

MODENAME:= 'ΠšΠ»ΠΈΠ΅Π½Ρ‚';

USERNAME:= 'НСавторизированный ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ';

Button5.Caption := 'Π’Ρ…ΠΎΠ΄';

UR;

end;

end;

procedure TMainWnd. Button6Click (Sender: TObject);

begin

with AboutR do

begin

Label1.Caption := 'ΠŸΡ€Π°Π²Π° ' + Unit1. MODENAME + ' ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Ρ‡Ρ‚ΠΎ Π²Ρ‹:';

if MODE[1] then

begin

Label2.Caption := 'ΠœΠΎΠΆΠ΅Ρ‚Π΅:';

Image1.Picture.LoadFromFile ('imagesiconok.jpg');

end

else

begin

Label2.Caption := 'НС ΠΌΠΎΠΆΠ΅Ρ‚Π΅:';

Image1.Picture.LoadFromFile ('imagesiconerr.jpg');

end;

if MODE[2] then

begin

Label3.Caption := 'ΠœΠΎΠΆΠ΅Ρ‚Π΅:';

Image2.Picture.LoadFromFile ('imagesiconok.jpg');

end

else

begin

Label3.Caption := 'НС ΠΌΠΎΠΆΠ΅Ρ‚Π΅:';

Image2.Picture.LoadFromFile ('imagesiconerr.jpg');

end;

if MODE[3] then

begin

Label4.Caption := 'ΠœΠΎΠΆΠ΅Ρ‚Π΅:';

Image3.Picture.LoadFromFile ('imagesiconok.jpg');

end

else

begin

Label4.Caption := 'НС ΠΌΠΎΠΆΠ΅Ρ‚Π΅:';

Image3.Picture.LoadFromFile ('imagesiconerr.jpg');

end;

if MODE[4] then

begin

Label5.Caption := 'ΠœΠΎΠΆΠ΅Ρ‚Π΅:';

Image4.Picture.LoadFromFile ('imagesiconok.jpg');

end

else

begin

Label5.Caption := 'НС ΠΌΠΎΠΆΠ΅Ρ‚Π΅:';

Image4.Picture.LoadFromFile ('imagesiconerr.jpg');

end;

if MODE[5] then

begin

Label6.Caption := 'ΠœΠΎΠΆΠ΅Ρ‚Π΅:';

Image5.Picture.LoadFromFile ('imagesiconok.jpg');

end

else

begin

Label6.Caption := 'НС ΠΌΠΎΠΆΠ΅Ρ‚Π΅:';

Image5.Picture.LoadFromFile ('imagesiconerr.jpg');

end;

ShowModal;

end;

end;

procedure TMainWnd. Button7Click (Sender: TObject);

var

t, i: byte;

begin

IBQuery4.SQL.Clear;

IBQuery4.SQL.Text :=

'INSERT INTO

USER_TYPE (NAME, SELECT_GOODS, SELECT_SALES, EDIT_GOODS

ADD_GOODS'

+ ', SUPER) VALUES (''' + Edit2. Text + ''',''' + IntToStr

(1 — ComboBox1. ItemIndex) + ''',''' + IntToStr (1 — ComboBox2. ItemIndex)

+ ''',''' + IntToStr (1 — ComboBox3. ItemIndex) + ''',''' + IntToStr

(1 — ComboBox4. ItemIndex) + ''',''' + IntToStr (1 — ComboBox5. ItemIndex)

+ ''')';

IBQuery4.Open;

MainWnd.IBTransaction1.Commit;

DBGrid3.Refresh;

IBQuery3.Open;

DBGrid2.Refresh;

IBQuery2.Open;

IBQuery3.Last;

t := IBQuery3. RecordCount;

IBQuery3.First;

ComboBox6.Clear;

for i := 0 to t — 1 do

begin

ComboBox6.Items.Add (IBQuery3.FieldByName ('NAME').AsString);

USERTYPES[i] := IBQuery3. FieldByName ('ID').AsInteger;

IBQuery3.Next;

end;

Edit2.Text := '';

end;

procedure TMainWnd. Button8Click (Sender: TObject);

begin

IBQuery4.SQL.Clear;

IBQuery4.SQL.Text := 'UPDATE USER_TYPE SET NAME = ''' +

Edit2.Text +

''', SELECT_GOODS = ''' + IntToStr (1 — ComboBox1. ItemIndex)

+ ''', SELECT_SALES = ''' + IntToStr (1 — ComboBox2. ItemIndex)

+ ''', EDIT_GOODS = ''' + IntToStr (1 — ComboBox3. ItemIndex)

+ ''', ADD_GOODS = ''' + IntToStr (1 — ComboBox4. ItemIndex)

+ ''', SUPER = ''' + IntToStr (1 — ComboBox5. ItemIndex)

+ ''' WHERE ID = ''' + DBGrid3.DataSource.DataSet.FieldByName ('ID')

.AsString + '''';

IBQuery4.Open;

MainWnd.IBTransaction1.Commit;

DBGrid3.Refresh;

IBQuery3.Open;

DBGrid2.Refresh;

IBQuery2.Open;

Edit2.Text := '';

end;

procedure TMainWnd. Button9Click (Sender: TObject);

var

i, t: byte;

begin

if MessageBox (Handle, 'Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ сотрудника?', 'Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅', 35) = 6

then

begin

IBQuery4.SQL.Clear;

IBQuery4.SQL.Text :=

'DELETE FROM USER_TYPE WHERE ID = ' +

DBGrid3.DataSource.DataSet.FieldByName ('ID').AsString;

IBQuery4.Open;

MainWnd.IBTransaction1.Commit;

DBGrid3.Refresh;

IBQuery3.Open;

DBGrid2.Refresh;

IBQuery2.Open;

IBQuery3.Last;

t := IBQuery3. RecordCount;

IBQuery3.First;

ComboBox6.Clear;

for i := 0 to t — 1 do

begin

ComboBox6.Items.Add (IBQuery3.FieldByName ('NAME').AsString);

USERTYPES[i] := IBQuery3. FieldByName ('ID').AsInteger;

IBQuery3.Next;

end;

Edit2.Text := '';

end;

end;

procedure TMainWnd. ComboBox6Change (Sender: TObject);

begin

if (Edit3.Text <> '') AND (Edit4.Text <> '') AND (Edit5.Text <> '') AND

(ComboBox6.ItemIndex <> -1) then

begin

Button10.Enabled := true;

Button11.Enabled := true;

end

else

begin

Button10.Enabled := false;

Button11.Enabled := false;

end;

end;

procedure TMainWnd. DBGrid1CellClick (Column: TColumn);

begin

GroupBox1.Visible := true;

Image1.Picture.LoadFromFile (ExtractFilePath (Application.Exename)

+ DBGrid1.DataSource.DataSet.FieldByName ('IMG').AsString);

Image2.Picture.LoadFromFile (ExtractFilePath (Application.Exename)

+ DBGrid1.DataSource.DataSet.FieldByName ('MIMG').AsString);

Label1.Caption :=

DBGrid1.DataSource.DataSet.FieldByName ('NAME').AsString;

Label2.Caption := DBGrid1.DataSource.DataSet.FieldByName ('PRICE')

.AsString + 'Ρ€.';

Label7.Caption :=

DBGrid1.DataSource.DataSet.FieldByName ('S').AsString;

Label8.Caption :=

DBGrid1.DataSource.DataSet.FieldByName ('V').AsString;

Label9.Caption :=

DBGrid1.DataSource.DataSet.FieldByName ('G').AsString;

Memo1.Text :=

DBGrid1.DataSource.DataSet.FieldByName ('DESCR').AsString;

Label10.Caption :=

DBGrid1.DataSource.DataSet.FieldByName ('MNAME').AsString;

Label11.Caption :=

DBGrid1.DataSource.DataSet.FieldByName ('MAT').AsString;

Label13.Caption :=

DBGrid1.DataSource.DataSet.FieldByName ('CAT').AsString;

ShowMessage (DBGrid1.DataSource.DataSet.FieldByName ('MIMG').AsStri

ng)

end;

procedure TMainWnd. DBGrid2CellClick (Column: TColumn);

var

i: byte;

begin

Edit3.Text := DBGrid2.DataSource.DataSet.FieldByName ('FN').AsString;

Edit4.Text := DBGrid2.DataSource.DataSet.FieldByName ('LN').AsString;

Edit5.Text := DBGrid2.DataSource.DataSet.FieldByName ('PN').AsString;

Edit6.Text :=

DBGrid2.DataSource.DataSet.FieldByName ('PASS').AsString;

for i := 0 to 25 do

if DBGrid2.DataSource.DataSet.FieldByName ('WTYPE').AsInteger =

USERTYPES[i]

then

begin

ComboBox6.ItemIndex := i;

end;

end;

procedure TMainWnd. DBGrid3CellClick (Column: TColumn);

begin

Edit2.Text :=

DBGrid3.DataSource.DataSet.FieldByName ('NAME').AsString;

ComboBox1.ItemIndex := 1 — DBGrid3.DataSource.DataSet.FieldByName

('SELECT_GOODS').AsInteger;

ComboBox2.ItemIndex := 1 — DBGrid3.DataSource.DataSet.FieldByName

('SELECT_SALES').AsInteger;

ComboBox3.ItemIndex := 1 — DBGrid3.DataSource.DataSet.FieldByName

('EDIT_GOODS').AsInteger;

ComboBox4.ItemIndex := 1 ;

DBGrid3.DataSource.DataSet.FieldByName ('ADD_GOODS')

.AsInteger;

ComboBox5.ItemIndex := 1 ;

DBGrid3.DataSource.DataSet.FieldByName ('SUPER')

.AsInteger;

end;

procedure TMainWnd. DBGrid4CellClick (Column: TColumn);

begin

with IBQuery6 do

begin

SQL.Clear;

SQL.Add ('SELECT GOOD_SALES.ID, GOODS.NAME AS GOOD,

GOOD_SALES.CNT '+

', GOODS. PRICE*GOOD_SALES.CNT AS SUMM'+

' FROM GOOD_SALES, GOODS'+

' WHERE GOOD_SALES.ID_GOOD = GOODS. ID AND ID_SALES='+

DBGrid4.DataSource.DataSet.FieldByName ('ID').AsString+';');

Open;

end;

end;

procedure TMainWnd. Edit1Change (Sender: TObject);

begin

if Edit1. Text <> '' then

begin

Button4.Enabled := true;

with IBQuery1 do

begin

close;

SQL.Clear;

SQL.Add ('SELECT GOODS. ID, GOODS.NAME, DESCR, S, V, G, MAT. IMG

AS MIMG, PRICE,');

SQL.Add ('MAT.NAME AS MNAME, MAT. MAT AS MAT,');

SQL.Add ('CNT, GOODS. IMG, CATALOGS.NAME AS CAT FROM

GOODS, CATALOGS, MAT ');

SQL.Add ('WHERE GOODS. CAT = CATALOGS. ID AND MAT. ID =

GOODS.MAT ');

SQL.Add ('AND GOODS.NAME LIKE ''' + Edit1. Text + ''';');

Open;

end;

end

else

Button4.Enabled := false;

end;

procedure TMainWnd. Edit2Change (Sender: TObject);

begin

if Edit2. Text <> '' then

begin

Button7.Enabled := true;

Button8.Enabled := true;

end

else

begin

Button7.Enabled := false;

Button8.Enabled := false;

end

end;

procedure TMainWnd. Edit3Change (Sender: TObject);

begin

if (Edit3.Text <> '') AND (Edit4.Text <> '') AND (Edit5.Text <> '') AND

(ComboBox6.ItemIndex <> -1) then

begin

Button10.Enabled := true;

Button11.Enabled := true;

end

else

begin

Button10.Enabled := false;

Button11.Enabled := false;

end;

end;

procedure TMainWnd. Edit4Change (Sender: TObject);

begin

if (Edit3.Text <> '') AND (Edit4.Text <> '') AND (Edit5.Text <> '') AND

(ComboBox6.ItemIndex <> -1) then

begin

Button10.Enabled := true;

Button11.Enabled := true;

end

else

begin

Button10.Enabled := false;

Button11.Enabled := false;

end;

end;

procedure TMainWnd. Edit5Change (Sender: TObject);

begin

if (Edit3.Text <> '') AND (Edit4.Text <> '') AND (Edit5.Text <> '') AND

(ComboBox6.ItemIndex <> -1) then

begin

Button10.Enabled := true;

Button11.Enabled := true;

end

else

begin

Button10.Enabled := false;

Button11.Enabled := false;

end;

end;

procedure TMainWnd. FormCloseQuery (Sender: TObject; var CanClose:

Boolean);

begin

IBQuery1.close;

IBDatabase1.Connected := false;

end;

procedure TMainWnd. FormCreate (Sender: TObject);

var

i, t: byte;

begin

IBDatabase1.DatabaseName := 'db.FDB';

IBDatabase1.Connected := true;

MODE[1] := true;

MODE[2] := false;

MODE[3] := false;

MODE[4] := false;

MODE[5] := false;

IDUSER:=1;

first:=true;

with IBQuery1 do

begin

SQL.Add ('SELECT GOODS. ID, GOODS.NAME, DESCR, S, V, G, MAT. IMG

AS MIMG, PRICE,');

SQL.Add ('MAT.NAME AS MNAME, MAT. MAT AS MAT,');

SQL.Add (

'CNT, GOODS. IMG, CATALOGS.NAME AS CAT, MIN_PRICE FROM

GOODS, CATALOGS, MAT ');

SQL.Add ('WHERE GOODS. CAT = CATALOGS. ID AND MAT. ID =

GOODS.MAT');

Open;

end;

Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ

with IBQuery2 do

begin

SQL.Add (

'SELECT USERS. ID, FN, LN, PN, USER_TYPE.NAME AS TYPE, TYPE AS

WTYPE, PASS FROM USERS,'

+ 'USER_TYPE WHERE USERS. TYPE = USER_TYPE.ID;');

Open;

end;

with IBQuery3 do

begin

SQL.Add ('SELECT * FROM USER_TYPE;');

Open;

end;

IBQuery3.Last;

t := IBQuery3. RecordCount;

IBQuery3.First;

for i := 0 to t — 1 do

begin

ComboBox6.Items.Add (IBQuery3.FieldByName ('NAME').AsString);

USERTYPES[i] := IBQuery3. FieldByName ('ID').AsInteger;

IBQuery3.Next;

end;

with IBQuery5 do

begin

SQL.Add ('SELECT SALES. ID, DAT, USERS. FN AS SLR FROM

SALES, USERS '+

'WHERE USERS. ID = SALES. SALER;');

Open;

end;

with IBQuery7 do

begin

SQL.Add ('SELECT PRICE, NAME FROM GOODS ORDER BY PRICE

DESC');

Open;

end;

IBQuery7.Last;

t := IBQuery7. RecordCount;

IBQuery7.First;

for i := 0 to t — 1 do

begin

Chart1.Series[0]. Add (IBQuery7.FieldByName ('PRICE').AsInteger,

IBQuery7.FieldByName ('NAME').AsString, clBlue);

IBQuery7.Next;

end;

UR;

end;

end.

Unit2

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ComCtrls, ExtCtrls, jpeg, ExtDlgs, IdHashMessageDigest,

DB,

IBCustomDataSet, IBQuery, Grids, DBGrids, Menus;

type

TAddGoods = class (TForm)

Button3: TButton;

OpenPictureDialog1: TOpenPictureDialog;

IBQuery1: TIBQuery;

IBQuery2: TIBQuery;

IBQuery3: TIBQuery;

DataSource1: TDataSource;

DataSource2: TDataSource;

PageControl1: TPageControl;

TabSheet1: TTabSheet;

Image12: TImage;

Image13: TImage;

Image14: TImage;

Label13: TLabel;

Label14: TLabel;

Label15: TLabel;

GroupBox1: TGroupBox;

Label5: TLabel;

Label6: TLabel;

Image3: TImage;

Image4: TImage;

Edit1: TEdit;

Memo1: TMemo;

GroupBox2: TGroupBox;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

Image5: TImage;

Image6: TImage;

Image7: TImage;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

GroupBox3: TGroupBox;

DBGrid1: TDBGrid;

Button7: TButton;

GroupBox4: TGroupBox;

Image1: TImage;

Image11: TImage;

Button8: TButton;

Button9: TButton;

GroupBox5: TGroupBox;

Image2: TImage;

DBGrid2: TDBGrid;

Button10: TButton;

GroupBox6: TGroupBox;

Label10: TLabel;

Label11: TLabel;

Label12: TLabel;

Image8: TImage;

Image9: TImage;

Image10: TImage;

Edit5: TEdit;

Edit6: TEdit;

Edit7: TEdit;

Button1: TButton;

Button4: TButton;

PopupMenu1: TPopupMenu;

N1: TMenuItem;

N2: TMenuItem;

IBQuery4: TIBQuery;

procedure FormCreate (Sender: TObject);

procedure DBGrid2CellClick (Column: TColumn);

procedure Edit1Change (Sender: TObject);

procedure Memo1Change (Sender: TObject);

procedure Edit2Change (Sender: TObject);

procedure Edit3Change (Sender: TObject);

procedure Edit4Change (Sender: TObject);

procedure Edit5Change (Sender: TObject);

procedure Edit6Change (Sender: TObject);

procedure Edit7Change (Sender: TObject);

procedure Button4Click (Sender: TObject);

procedure Button8Click (Sender: TObject);

procedure Button9Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure Button7Click (Sender: TObject);

procedure Button10Click (Sender: TObject);

procedure N2Click (Sender: TObject);

procedure N1Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

AddGoods: TAddGoods;

TMPSTR: string;

AddGoodTest: array [0. 8] of boolean = (

false,

false,

false,

false,

false,

false,

false,

false,

false

);

implementation

{$R *.dfm}

uses Unit1, Unit3, Unit4;

function md5(SourceString: string): string;

var

md5: TIdHashMessageDigest5;

begin

Result := '';

md5 := TIdHashMessageDigest5. Create;

try

Result := AnsiLowerCase (md5.HashStringAsHex (SourceString));

finally

FreeAndNil (md5);

end;

end;

procedure TAddGoods. Button10Click (Sender: TObject);

begin

AddMat.ShowModal;

DBGrid1.Refresh;

IBQuery2.Open;

DBGrid2.Refresh;

IBQuery3.Open;

end;

procedure TAddGoods. Button1Click (Sender: TObject);

var

i: integer;

flag: boolean;

SQL, IMG, TMP: string;

begin

flag := true;

for i := 0 to 8 do

begin

if AddGoodTest[i] = false then

flag := false;

end;

if flag then

begin

if Unit1. ADDFORMMODE = 0 then

begin

TMP := md5(DateToStr (now) + TimeToStr (now));

SetLength (TMP, 10);

IMG := 'images' + TMP + '.jpg';

SQL :=

'INSERT INTO

GOODS (NAME, DESCR, S, V, G, MAT, PRICE, CNT, MIN_PRICE, IMG, CAT

) VALUES ('''

+ Edit1. Text + ''',''' + Memo1. Text + ''',''' + Edit2. Text +

''',''' + Edit3. Text + ''',''' + Edit4. Text + ''',''' +

DBGrid2.DataSource.DataSet.FieldByName ('ID')

.AsString + ''',''' + Edit6. Text + ''',''' + Edit5. Text +

''',''' + Edit7. Text + ''',''' + IMG + ''',''' +

DBGrid1.DataSource.DataSet.FieldByName ('ID').AsString + ''');';

IBQuery1.SQL.Clear;

IBQuery1.SQL.Text := SQL;

IBQuery1.Open;

if NOT CopyFile (Pchar (TMPSTR), Pchar (IMG), false) then

ShowMessage ('Ошибка! Код ошибки: ' + IntToStr (GetLastError))

else

MainWND.IBTransaction1.Commit;

DBGrid1.Refresh;

IBQuery2.Open;

DBGrid2.Refresh;

IBQuery3.Open;

Button4Click (Sender);

AddGoods.Close;

end

else

begin

TMP := md5(DateToStr (now) + TimeToStr (now));

SetLength (TMP, 10);

IMG := 'images' + TMP + '.jpg';

SQL :=

'UPDATE GOODS SET'+

' NAME =''' + Edit1. Text +

''', DESCR =''' + Memo1. Text +

''', S =''' + Edit2. Text +

''', V =''' + Edit3. Text +

''', G =''' + Edit4. Text +

''', MAT =''' + DBGrid2.DataSource.DataSet.FieldByName ('ID').AsString +

''', PRICE =''' + Edit6. Text +

''', CNT =''' + Edit5. Text +

''', MIN_PRICE =''' + Edit7. Text +

''', IMG =''' + IMG +

''', CAT =''' + DBGrid1.DataSource.DataSet.FieldByName ('ID').AsString +

''' WHERE ID = '+IntToStr (Unit1.ADDFORMMODE);

Memo1.Text := SQL+' '+TMPSTR;

IBQuery1.SQL.Clear;

IBQuery1.SQL.Text := SQL;

IBQuery1.Open;

if NOT CopyFile (Pchar (TMPSTR), Pchar (IMG), false) then

ShowMessage ('Ошибка! Код ошибки: ' + IntToStr (GetLastError))

else

MainWND.IBTransaction1.Commit;

Button4Click (Sender);

AddGoods.Close;

end;

DBGrid1.Refresh;

IBQuery2.Open;

DBGrid2.Refresh;

IBQuery3.Open;

end

else

ShowMessage ('Поля Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π½Π΅ Π²Π΅Ρ€Π½ΠΎ.');

end;

procedure TAddGoods. Button3Click (Sender: TObject);

begin

AddGoods.Close;

end;

procedure TAddGoods. Button4Click (Sender: TObject);

begin

Edit1.Text := '';

Edit2.Text := '';

Edit3.Text := '';

Edit4.Text := '';

Edit5.Text := '';

Edit6.Text := '';

Edit7.Text := '';

Memo1.Text := '';

TMPSTR := '';

Image3.Picture.LoadFromFile ('images/icon/note.jpg');

Image4.Picture.LoadFromFile ('images/icon/note.jpg');

Image5.Picture.LoadFromFile ('images/icon/note.jpg');

Image6.Picture.LoadFromFile ('images/icon/note.jpg');

Image7.Picture.LoadFromFile ('images/icon/note.jpg');

Image8.Picture.LoadFromFile ('images/icon/note.jpg');

Image9.Picture.LoadFromFile ('images/icon/note.jpg');

Image10.Picture.LoadFromFile ('images/icon/note.jpg');

Image11.Picture.LoadFromFile ('images/icon/note.jpg');

Image1.Picture := nil;

Image2.Picture := nil;

AddGoodTest[8] := false;

end;

procedure TAddGoods. Button7Click (Sender: TObject);

begin

AddCat.IBQuery1.SQL.Clear;

AddCat.IBQuery1.SQL.Text := 'SELECT ID, NAME, PARENT FROM

CATALOGS';

AddCat.IBQuery1.Open;

AddCat.ShowModal;

DBGrid1.Refresh;

IBQuery2.Open;

DBGrid2.Refresh;

IBQuery3.Open;

end;

procedure TAddGoods. Button8Click (Sender: TObject);

begin

if OpenPictureDialog1. Execute then

begin

Image1.Picture.LoadFromFile (OpenPictureDialog1.FileName);

TMPSTR := OpenPictureDialog1. FileName;

AddGoodTest[8] := true;

Image11.Picture.LoadFromFile ('images/icon/ok.jpg');

end;

end;

procedure TAddGoods. Button9Click (Sender: TObject);

begin

Image11.Picture.LoadFromFile ('images/icon/note.jpg');

TMPSTR := '';

AddGoodTest[8] := false;

Image1.Picture := nil;

end;

procedure TAddGoods. DBGrid2CellClick (Column: TColumn);

begin

Image2.Picture.LoadFromFile (DBGrid2.DataSource.DataSet.FieldByName ('

IMG')

.AsString);

end;

procedure TAddGoods. Edit1Change (Sender: TObject);

begin

if not (Edit1.Text = '') then

begin

Image3.Picture.LoadFromFile ('images/icon/ok.jpg');

AddGoodTest[0] := true;

end

else

begin

Image3.Picture.LoadFromFile ('images/icon/err.jpg');

AddGoodTest[0] := false;

end

end;

procedure TAddGoods. Edit2Change (Sender: TObject);

var

t: integer;

begin

if not (Edit2.Text = '') AND TryStrToInt (Edit2.Text, t) AND

(StrToInt (Edit2.Text) > 0) AND (StrToInt (Edit2.Text) < 10 000) then

begin

Image5.Picture.LoadFromFile ('images/icon/ok.jpg');

AddGoodTest[2] := true;

end

else

begin

Image5.Picture.LoadFromFile ('images/icon/err.jpg');

AddGoodTest[2] := false;

end;

end;

procedure TAddGoods. Edit3Change (Sender: TObject);

var

t: integer;

begin

if not (Edit3.Text = '') AND TryStrToInt (Edit3.Text, t) AND

(StrToInt (Edit3.Text) > 0) AND (StrToInt (Edit3.Text) < 10 000) then

begin

Image6.Picture.LoadFromFile ('images/icon/ok.jpg');

AddGoodTest[3] := true;

end

else

begin

Image6.Picture.LoadFromFile ('images/icon/err.jpg');

AddGoodTest[3] := false;

end;

end;

procedure TAddGoods. Edit4Change (Sender: TObject);

var

t: integer;

begin

if not (Edit4.Text = '') AND TryStrToInt (Edit4.Text, t) AND

(StrToInt (Edit4.Text) > 0) AND (StrToInt (Edit4.Text) < 10 000) then

begin

Image7.Picture.LoadFromFile ('images/icon/ok.jpg');

AddGoodTest[4] := true;

end

else

begin

Image7.Picture.LoadFromFile ('images/icon/err.jpg');

AddGoodTest[4] := false;

end;

end;

procedure TAddGoods. Edit5Change (Sender: TObject);

var

t: integer;

begin

if not (Edit5.Text = '') AND TryStrToInt (Edit5.Text, t) AND

(StrToInt (Edit5.Text) > 0) AND (StrToInt (Edit5.Text) < 10 000) then

begin

Image8.Picture.LoadFromFile ('images/icon/ok.jpg');

AddGoodTest[5] := true;

end

else

begin

Image8.Picture.LoadFromFile ('images/icon/err.jpg');

AddGoodTest[5] := false;

end;

end;

procedure TAddGoods. Edit6Change (Sender: TObject);

var

t: integer;

begin

if not (Edit6.Text = '') AND TryStrToInt (Edit6.Text, t) AND

(StrToInt (Edit6.Text) > 0) AND (StrToInt (Edit6.Text) < 999 999) then

begin

Image9.Picture.LoadFromFile ('images/icon/ok.jpg');

AddGoodTest[6] := true;

if not (Edit7.Text = '') AND TryStrToInt (Edit7.Text, t) AND

(StrToInt (Edit7.Text) > 0) AND (StrToInt (Edit7.Text) < 999 999) then

if (StrToInt (Edit6.Text) >= StrToInt (Edit7.Text)) then

begin

Image10.Picture.LoadFromFile ('images/icon/ok.jpg');

AddGoodTest[7] := true;

end

else

begin

Image10.Picture.LoadFromFile ('images/icon/err.jpg');

AddGoodTest[7] := false;

end;

end

else

begin

Image9.Picture.LoadFromFile ('images/icon/err.jpg');

AddGoodTest[6] := false;

end;

end;

procedure TAddGoods. Edit7Change (Sender: TObject);

var

t: integer;

begin

if not (Edit7.Text = '') AND TryStrToInt (Edit7.Text, t) AND

(StrToInt (Edit7.Text) > 0) AND (StrToInt (Edit7.Text) < 999 999) AND not

(Edit6.Text = '') AND TryStrToInt (Edit6.Text, t) AND

(StrToInt (Edit6.Text) > 0) AND (StrToInt (Edit6.Text) < 999 999) AND

(StrToInt (Edit6.Text) >= StrToInt (Edit7.Text)) then

begin

Image10.Picture.LoadFromFile ('images/icon/ok.jpg');

AddGoodTest[7] := true;

end

else

begin

Image10.Picture.LoadFromFile ('images/icon/err.jpg');

AddGoodTest[7] := false;

end;

end;

procedure TAddGoods. FormCreate (Sender: TObject);

begin

Memo1.Clear;

IBQuery2.SQL.Clear;

IBQuery2.SQL.Text := 'SELECT ID, NAME FROM CATALOGS';

IBQuery2.Open;

IBQuery3.SQL.Clear;

IBQuery3.SQL.Text := 'SELECT ID, NAME, MAT, COLOR, IMG FROM

MAT';

IBQuery3.Open;

Image2.Picture.LoadFromFile (DBGrid2.DataSource.DataSet.FieldByName ('

IMG')

.AsString);

end;

procedure TAddGoods. Memo1Change (Sender: TObject);

begin

if not (Memo1.Text = '') then

begin

Image4.Picture.LoadFromFile ('images/icon/ok.jpg');

AddGoodTest[1] := true;

end

else

begin

Image4.Picture.LoadFromFile ('images/icon/err.jpg');

AddGoodTest[1] := false;

end;

end;

procedure TAddGoods. N1Click (Sender: TObject);

begin

Unit4.AMMode :=

DBGrid2.DataSource.DataSet.FieldByName ('ID').AsInteger;

AddMat.EditMatAddName.Text :=

DBGrid2.DataSource.DataSet.FieldByName ('NAME')

.AsString;

AddMat.EditMatAddMat.Text :=

DBGrid2.DataSource.DataSet.FieldByName ('MAT')

.AsString;

AddMat.EditMatAddColor.Text :=

DBGrid2.DataSource.DataSet.FieldByName ('COLOR')

.AsString;

AddMat.EditMatAddImg.Text :=

DBGrid2.DataSource.DataSet.FieldByName ('IMG')

.AsString;

AddMat.ImageAddMat.Picture.LoadFromFile

(DBGrid2.DataSource.DataSet.FieldByName ('IMG').AsString);

AddMat.ShowModal;

DBGrid1.Refresh;

IBQuery2.Open;

DBGrid2.Refresh;

IBQuery3.Open;

end;

procedure TAddGoods. N2Click (Sender: TObject);

begin

if MessageBox (Handle, 'Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»?', 'Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅', 35) = 6 then

begin

IBQuery4.SQL.Clear;

IBQuery4.SQL.Text :=

'DELETE FROM MAT WHERE ID = ' +

DBGrid2.DataSource.DataSet.FieldByName

('ID').AsString;

IBQuery4.Open;

MainWND.IBTransaction1.Commit;

DBGrid1.Refresh;

IBQuery2.Open;

DBGrid2.Refresh;

IBQuery3.Open;

end;

end;

end.

Unit3

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, DBGrids, DB, IBCustomDataSet, IBQuery, StdCtrls,

Menus;

type

TAddCat = class (TForm)

IBQuery1: TIBQuery;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

IBQuery2: TIBQuery;

PopupMenu1: TPopupMenu;

HE1: TMenuItem;

N1: TMenuItem;

Button4: TButton;

Edit2: TEdit;

procedure Button2Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure N1Click (Sender: TObject);

procedure Edit1Change (Sender: TObject);

procedure DBGrid1CellClick (Column: TColumn);

procedure Edit2Change (Sender: TObject);

procedure Button4Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

procedure FormCreate (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

AddCat: TAddCat;

implementation

{$R *.dfm}

uses Unit1, Unit2;

procedure TAddCat. Button1Click (Sender: TObject);

begin

AddCat.Close;

end;

procedure TAddCat. Button2Click (Sender: TObject);

begin

IBQuery2.SQL.Clear;

IBQuery2.SQL.Text :=

'INSERT INTO CATALOGS (NAME, PARENT) VALUES (''' + Edit1. Text +

''',''' +

DBGrid1.DataSource.DataSet.FieldByName ('ID').AsString + ''')';

IBQuery2.Open;

MainWND.IBTransaction1.Commit;

DBGrid1.Refresh;

IBQuery1.Open;

Edit1.Text := '';

AddCat.Close;

end;

procedure TAddCat. Button3Click (Sender: TObject);

begin

IBQuery2.SQL.Clear;

IBQuery2.SQL.Text :=

'INSERT INTO CATALOGS (NAME, PARENT) VALUES (''' + Edit1. Text +

''',''' +

DBGrid1.DataSource.DataSet.FieldByName ('ID').AsString + ''')';

IBQuery2.Open;

MainWND.IBTransaction1.Commit;

MainWND.UR;

Edit1.Text := '';

end;

procedure TAddCat. Button4Click (Sender: TObject);

begin

IBQuery2.SQL.Clear;

IBQuery2.SQL.Text :='UPDATE CATALOGS SET NAME =''' +

Edit2.Text +

''' WHERE ID = ''' + DBGrid1.DataSource.DataSet.FieldByName ('ID')

.AsString + ''';';

IBQuery2.Open;

MainWND.IBTransaction1.Commit;

MainWND.UR;

Edit2.Text := '';

end;

procedure TAddCat. DBGrid1CellClick (Column: TColumn);

begin

Edit2.Text :=

DBGrid1.DataSource.DataSet.FieldByName ('NAME').AsString;

end;

procedure TAddCat. Edit1Change (Sender: TObject);

begin

if Edit1. Text <> '' then

begin

Button2.Enabled := true;

Button3.Enabled := true

end

else begin

Button2.Enabled := false;

Button3.Enabled := False

end;

end;

procedure TAddCat. Edit2Change (Sender: TObject);

begin

if (Edit2.Text <> '') AND

(Edit2.Text <>

DBGrid1.DataSource.DataSet.FieldByName ('NAME').AsString)

then

Button4.Enabled := true

else

Button4.Enabled := false;

end;

procedure TAddCat. FormCreate (Sender: TObject);

begin

end;

procedure TAddCat. N1Click (Sender: TObject);

begin

if MessageBox (Handle, 'Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³?', 'Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅', 35) = 6 then

begin

IBQuery2.SQL.Clear;

IBQuery2.SQL.Text :=

'DELETE FROM CATALOGS WHERE ID = ' +

DBGrid1.DataSource.DataSet.FieldByName ('ID').AsString;

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