INSERT INTO "Categories"(
"Id" ,
" Name" ,
"GoodsCount"
)
VALUES(
:"Id",
:"Name",
:"GoodsCount"
)
Puc 2.22. Π Π΅Π΄Π°ΠΊΡΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° TpFIBDataSet, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ²
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π½Π° Π·Π°ΠΏΡΠΎΡ Π΄Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° RefreshSQL:
select * from "Categories"
WHERE
(
"Categories"."Id" = :"OLD_Id"
)
ΠΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ Π²ΡΠ±ΠΈΡΠ°ΡΡΠΈΠΉ Π·Π°ΠΏΡΠΎΡ, ΠΊΠ°ΠΊ ΠΈ Π·Π°ΠΏΡΠΎΡ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ SelectSQL, Π½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Ρ Π·Π°ΠΏΠΈΡΡ - ΡΠ΅ΠΊΡΡΡΡ Π’Π΅ΠΏΠ΅ΡΡ, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π°ΠΏΠΈΡΡ Π² CategoriesGrid, CategonesDataSet Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² : "Id", . "Name" ΠΈ Ρ Π΄., ΡΠ΅ΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Π±Π΅ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° Post (ΠΊΠΎΡΠΎΡΡΠΉ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡΠΈ Enter Π² CategonesGnd) CategoriesDataSet Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡΡΠΈΠΉ Π·Π°ΠΏΡΠΎΡ ΠΠΎΡΠ»Π΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠΈ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ Π·Π°ΠΏΡΠΎΡ ΠΈΠ· ΡΠ²ΠΎΠΉΡΡΠ²Π° UpdateSQL, ΠΏΡΠΈ Π²ΡΡΠ°Π²ΠΊΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ - ΠΈΠ· InsertSQL, Π° ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π·Π°ΠΏΠΈΡΠΈ - ΠΈΠ· DeleteSQL ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° (ΠΊΡΠΎΠΌΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ) CategoriesDataSet Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡ ΠΈΠ· RefreshSQL, ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ»ΠΎΠ²ΠΈΡ ΡΠ΅ΠΊΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ "ΡΠ·Π½Π°ΡΡ" Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΠΏΠΎΠ»Π΅ΠΉ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π·Π°ΠΏΠΈΡΠΈ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠΈΠ³Π³Π΅ΡΠΎΠ² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠ² ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠ°Ρ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² FIBPlus.
ΠΡΠ΅ΡΠΈΠΊΡ "OLD_" ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ Π’Π΅ΡΠΌΠΈΠ½ "ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅" ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» Π² Π·Π°ΠΏΡΠΎΡΠ΅ Π½Π° ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅. ΠΠΎ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π±Π΅Π· Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΡΠΈΠΊΡΠ°.
ΠΡΠ΅ΡΠΈΠΊΡ "NEW_" ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ ΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΡΠΎΠ»ΡΠΊΠΎ Π² Π·Π°ΠΏΡΠΎΡΠ°Ρ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈ Π²ΡΡΠ°Π²ΠΊΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π½ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ Π² ΡΡΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΌΠΈ, Π° Π·Π½Π°ΡΠΈΡ, ΠΏΡΠ΅ΡΠΈΠΊΡ "NEW_" ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΡΠΊΠ°ΡΡ
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠ΅ΡΠΈΠΊΡ "MAS_", Π½ΠΎ ΠΌΡ Π΄ΠΎΠ±Π΅ΡΠ΅ΠΌΡΡ Π΄ΠΎ Π½Π΅Π³ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π»ΠΈ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡΡΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ, ΡΠΎ ΡΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠ°ΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΈΡ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΈ Π΄Π°ΠΆΠ΅ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΡΠ΄Π°Π»ΠΈΡΡ ΠΈΡ .
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² design-time Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠ΄ΠΎΠ±Π½Π° FIBPIus ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π½ΡΠΆΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° Π·Π°ΠΏΡΠΎΡΠ΅ ΠΈΠ· ΡΠ²ΠΎΠΉΡΡΠ²Π° SelectSQL ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ AutoUpdateOptions (ΡΠΈΡ 223).
Π ΠΈΡ 2.23. ΠΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ AutoUpdateOptions
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ "Π²ΠΊΠ»ΡΡΠΈΡΡ" ΠΊΠ»ΡΡ "AutoReWriteSqls", ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΠΏΠΎΠ»Π΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ WHERE (Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΡΠΎ ΠΏΠΎΠ»Π΅ "Id") ΠΈ ΡΠΊΠ°Π·Π°ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ ("Categories"), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΠΈ Π·Π°ΠΏΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ°Π±Π»ΠΈΡΠ½ΡΠΌΠΈ. Π’Π΅ΠΏΠ΅ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° InsertSQL, DeleteSQL, UpdateSQL ΠΈ RefreshSQL Π±ΡΠ΄ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ CategonesDataSet. To Π΅ΡΡΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² run-time, ΡΡΠΎ Π±ΡΠ²Π°Π΅Ρ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ.
ΠΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠ΅ΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ, ΡΠΎ ΠΏΠΎΡΠ»Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° Entei Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ Π·Π°ΠΏΡΠΎΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ Π΄Π²Π° ΠΏΠΎΠ»Ρ ΠΈ Name ΠΈ GoodsCount Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΆΠ΅ ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅ - "Name".Π ΠΈΡΠΎΠ³Π΅ Π΅ΡΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»ΠΈΠ½Π½ΡΠ΅ ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ), ΡΠΎ ΠΏΡΠΈ ΠΌΠ°Π»Π΅ΠΉΡΠ΅ΠΌ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π±ΡΠ΄ΡΡ "ΡΡ ΠΎΠ΄ΠΈΡΡ" Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π»ΠΈΡΠ½ΠΈΠΉ ΡΡΠ°ΡΠΈΠΊ ΠΠ°Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π½ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΎ 6oΠ»ee ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΡΠΎΡ:
UPDATE "Categories" SET
"Name" = ."Name"
WHERE
"Id" = :"OLD_Id"
Π² ΠΊΠΎΡΠΎΡΠΎΠΌ, ΠΊΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠ°ΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎ ΠΏΠΎΠ»Π΅, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ. Π’Π°ΠΊΠ°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ Π²ΠΊΠ»ΡΡΠΈΠΌ ΠΊΠ»ΡΡ UpdateOnlyModifiedFields (ΡΠ°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΡΡΠΎΡ ΠΊΠ»ΡΡ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ΅ΠΆΠΈΠΌ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² run-time). Π ΡΠ»ΡΡΠ°Π΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Ρ "Name" ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ CategoriesDataSet Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅, ΠΈ Π±ΡΠ΄Π΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π½ΠΎΠ²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ»Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ»ΠΈΡΡ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΅ΠΏΠ΅ΡΡ Π½Π°Ρ CategoriesDataSet ΡΡΠ°Π» ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌΡΠΌ, ΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ OnClick Ρ ΡΡΠ΅Ρ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΡΠΏΡΠ°Π²Π° ΠΎΡ CategoriesGrid:
procedure TMainForm AddCatButtonClick(Sender TObject);
begin
CategoriesDataSet Append;
end;
procedure TMainForm.EditCatButtonClick(Sender: TObject);
begin
CategoriesDataSet Edit;
end;
procedure TMainForm.DeleteCatButtonClick(Sender: TObject);
begin
if MessageDlg('ΠΡ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΡΡΠΎ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ "' +
CategoriesDataSet.FieldByName('Name').AsString + '"?',
mtConfirmation,
[mbYes, mbNo], 0) = mrYes then
CategoriesDataSet.Delete;
end;
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ auto-increment ΠΏΠΎΠ»Π΅ΠΉ Π² FIBPIus
Π ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ Π½Π°Ρ Π·Π°ΠΏΡΠΎΡ ΡΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΠΌΡΠΌ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΡΠ°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ, ΡΠ΄Π°Π»ΡΡΡ Π·Π°ΠΏΠΈΡΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ "Id", ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΆΠ΄Π°Ρ Π·Π°ΠΏΠΈΡΡ Π±ΡΠ»Π° ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ. Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π»ΠΎΠΆΠΈΡΡ Π·Π°Π±ΠΎΡΡ ΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π½Π° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , Π½Π°ΠΏΠΈΡΠ°Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΡΠΈΠ³Π³Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈ Π²ΡΡΠ°Π²ΠΊΠ΅ Π½ΠΎΠ²ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π±ΡΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ 1Π΅Π½Π΅ΡΠ°Π³ΠΎΡΠ°. Π’Π°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π½ΠΎ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° FIBPlus ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ Π·Π°ΠΏΡΠΎΡ Π½Π° Π²ΡΡΠ°Π²ΠΊΡ Π·Π°ΠΏΠΈΡΠΈ. ΠΠ°ΡΠ΅ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ? ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ, ΠΊΠ°ΠΊ ΡΠΆΠ΅ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° (ΠΊΡΠΎΠΌΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ) CategoriesDataSet Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡ ΠΈΠ· RefreshSQL, ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ»ΠΎΠ²ΠΈΡ ΡΠ΅ΠΊΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° (ΠΏΠΎΠ»Π΅ "Id"). ΠΡΠ»ΠΈ ΠΌΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π΅Π³ΠΎ Π·Π°ΡΠ°Π½Π΅Π΅, Π° Π±ΡΠ΄Π΅ΠΌ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΈΠ³Π³Π΅Ρ, ΡΠΎ ΠΌΡ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° : "OLD_Id" Π² Π·Π°ΠΏΡΠΎΡ RefreshSQL, Π° Π·Π½Π°ΡΠΈΡ, Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΡ Π·Π°ΠΏΠΈΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΏΠΎΠ»Ρ Π·Π°ΠΏΠΈΡΠΈ Π±ΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ ΡΡΠΈΠ³Π³Π΅ΡΠ°ΠΌΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΡΠΎ ΠΌΡ Π½Π΅ ΡΠ²ΠΈΠ΄ΠΈΠΌ ΡΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΎΡΠΊΡΠΎΠ΅ΠΌ Π²Π΅ΡΡ Π·Π°ΠΏΡΠΎΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°, Π° ΠΏΠΎΡΠΎΠΌ Π²ΡΡΠ°Π²ΠΈΠΌ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π°ΡΠ°Π²Π½Π΅ Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ, ΡΠΎ Π·Π°ΡΠ΅ΠΌ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ "ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ°ΡΡ" ΡΠ΅ΠΊΡΡΡΡ Π·Π°ΠΏΠΈΡΡ, ΠΈ Π±ΡΠ΄Π΅ΠΌ "Π² ΠΊΡΡΡΠ΅" Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»Π΅ΠΉ Π±Π΅Π· ΠΈΠ·Π»ΠΈΡΠ½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΎΡΠΊΡΡΠ²Π°Π½ΠΈΠΉ!
TpFIBDataSet ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈ Π²ΡΡΠ°Π²Π»ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠΈ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ AutoUpdateOptions (ΡΠΈΡ. 2.24).
ΠΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° Categories_Id_GEN. Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ WhenGetGenID ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
wgOnNewRecord - ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ Π±ΡΡΠ΅ΡΠ° Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ;
wgBeforePost - ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΠΏΡΠ°Π²ΠΊΠΎΠΉ Π½ΠΎΠ²ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ;
wgNever- Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠ»ΡΡΠ΅Π²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΊΠ°ΠΆΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ wgOnNewRecord, ΡΡΠΎΠ±Ρ ΡΡΠ°Π·Ρ Π²ΠΈΠ΄Π΅ΡΡ Π² CategoriesGrid ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ "Id", ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΠΈ Π΄Π°ΠΆΠ΅ Π²ΡΡΠ°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ (ΡΠΈΡ. 2.25).
Π ΠΈΡ 2.24. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ AutoUpdateOptions Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°
Π ΠΈΡ 2.25. ΠΠ½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ "ΠΆΠΈΠ²ΠΎΠ³ΠΎ" Π·Π°ΠΏΡΠΎΡΠ°
ΠΠ· ΡΠΈΡΡΠ½ΠΊΠ° Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠΎΠ»Ρ "Id" ΡΠ°Π²Π½ΠΎΠ΅ 66
Π Π°Π·Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ: ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Deadlock. Π Π΅ΠΆΠΈΠΌ AutoCommit
CategoriesDataSet ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ ΡΠ΄Π΅Π»Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ Π·Π°Π΄Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ AutoCommit Π² True. Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° Post ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ CategoriesDataSet Π±ΡΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ CategonesTransaction CommitRetainmg, ΡΠΎΡ ΡΠ°Π½ΡΡ ΡΠ΄Π΅Π»Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ Π½Π΅ Π·Π°ΠΊΡΡΠ²Π°Ρ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ°ΠΌ Π·Π°ΠΏΡΠΎΡ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠΆΠ΅ ΡΠ½ΠΈΠΆΠ°Π΅Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ Deadlock, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π΄Π»ΠΈΠ½Π½ΡΡ Π½Π΅Π·Π°ΠΊΡΡΡΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ, Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ .
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, FIBPlus ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π΄ΡΡΠ³ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²ΠΎΠ΄ΠΈΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Deadlock ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊ Π½ΡΠ»Ρ. TpFIBDataSet ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π΄Π²ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ. ΠΠ΄Π½Π° Π΄Π»ΠΈΠ½Π½Π°Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΠ°ΡΡΡΡ, ΠΈ Π΄ΡΡΠ³Π°Ρ ΠΊΠΎΡΠΎΡΠΊΠ°Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π²ΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡΡΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ.
ΠΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ CategoriesTransaction Π² CategoriesReadTransaction ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ CategoriesWriteTransaction. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π·Π°Π΄Π°Π΄ΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ UpdateTransaction Ρ CategoriesDataSet Π² CategoriesWriteTransaction. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ΅ΠΏΠ΅ΡΡ CategoriesDataSet ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΡΡΠ°Π·Ρ ΠΊ Π΄Π²ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ TpFTBTransaction (ΡΠΈΡ. 2.26).