progressokulu.com Advanced Business Language Slide 7

363 views

Published on

"ABL'e Giriş Eğitimi" nde kullandığımız 7. Bölüm sunumudur.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
363
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

progressokulu.com Advanced Business Language Slide 7

  1. 1.
  2. 2. Bölüm 7 : Transaction Yönetimi<br />Bu dersi tamamladığımız zaman şunları yapabileceksiniz;<br /><ul><li>Bir transaction tanımlamak
  3. 3. Veritabanı bütünlüğünü tanımlamak
  4. 4. Bir transaction’ın nerede başlayıp nerede bittiğini bilmek
  5. 5. Transaction’ların ne zaman etkin olduklarını bilmek
  6. 6. Varsayılan transaction kapsamını değiştirmek</li></li></ul><li>Transaction: Ya Hep Ya Hiç<br />
  7. 7. Bir Transaction İçinde Veritabanını Güncellemek<br />REPEAT:<br />. . .<br /> CREATE Customer.<br />. . .<br />END.<br />Transaction<br />
  8. 8. SİSTEM HATASI!<br />Veri Bütünlüğünü Korumak<br />Tamamlanmış Transaction (İkinci Customer kaydını ekle)<br />REPEAT:<br />. . .<br /> CREATE Customer.<br />. . .<br />END.<br />Veritabanı<br />Tamamlanmamış Transaction (3. Customer kaydını ekle)<br />REPEAT:<br />. . .<br /> CREATE Customer.<br />. . .<br />END.<br />
  9. 9. Neler Saklandı?<br />SİSTEM HATASI!<br />
  10. 10. Transaction Kapsamını Tanımlamak<br />. . .<br />DEFINE VARIABLE iCount AS INTEGER NO-UNDO.<br />REPEAT WHILE iCount < 3:<br /> CREATE Customer.<br /> DISPLAY CustNum.<br /> UPDATE Name EmailAddress Contact WITH 1 COLUMN.<br />iCount = iCount + 1.<br />END.<br />. . .<br />Transaction bloğu<br />Doğrudan veritabanına yazılır<br />
  11. 11. Transaction Kapsamı Nedir?<br />. . . <br />. . .<br />FOR EACH Invoice WHERE Invoice.CustNum = iCustNum:<br /> MESSAGE "Are you sure you want to delete invoice#" invoice.invoicenum<br /> "of customer #" invoice.custnum VIEW-AS ALERT-BOX BUTTONS YES-NO UPDATE lYesno.<br /> IF lYesno THEN<br /> DELETE Invoice.<br /> ELSE DO: /* DO statement #1 */<br /> MESSAGE "Cancelled deletion of invoice #" invoice.invoicenum .<br /> RETURN NO-APPLY.<br /> END. /* End DO statement #1 */<br />END. /* End FOR EACH Invoice3 */<br />FOR EACH Order WHERE Order.CustNum = iCustNum:<br />. . .<br />. . .<br />???<br />
  12. 12. Bir LISTING Dosyasının Derlenmesi (COMPILE)<br />COMPILE eTrans1.p LISTING eTrans1.lst.<br />forOrder:<br />FOR EACH Order WHERE OrderNum < 5:<br /> FOR EACH Customer OF Order:<br /> DISPLAY Customer.NAME FORMAT "x(15)"<br />Ordernum FORMAT ">>9".<br /> 1 /***********************/<br /> 2 /* eTrans1.p */<br /> 3 /***********************/<br /> 4 forOrder:<br /> 5 1 FOR EACH Order WHERE OrderNum < 5:<br /> 6 2 FOR EACH Customer OF Order:<br /> 7 2 DISPLAY Customer.NAME FORMAT "x(15)"<br /> 8 2 Ordernum FORMAT ">>9".<br />
  13. 13. Transaction Kapsamının Belirlenmesi<br />File Name Line Blk.TypeTran Blk.Label<br />--------- ---- -------- ---- ---------<br />eTrans1.p 0 Procedure No <br />eTrans1.p 9 For No forOrder<br /> Buffers: Mysports.Order<br />eTrans1.p 10 For Yes <br /> Buffers: Mysports.Customer<br /> Frames: Unnamed<br />
  14. 14. TRANSACTION Fonksiyonunun Kullanımı<br />. . . <br />. . .<br />FOR EACH Invoice WHERE Invoice.CustNum = iCustNum:<br /> MESSAGE "Are you sure you want to delete invoice#" invoice.invoicenum <br /> "of customer #" invoice.custnum VIEW-AS ALERT-BOX BUTTONS YES-NO UPDATE lYesno.<br /> IF lYesno THEN<br />FOR EACH Order WHERE Order.CustNum = iCustNum:<br />. . .<br />. . .<br />IF TRANSACTION THEN response-if-true ELSE response-of-false<br />Bir transaction aktif olduğunda çalışması gereken kod<br />Transaction’ın aktif OLMADIĞI durumda çalışması gereken kod<br />
  15. 15. Transaction’ın Aktif Olup Olmadığını Sorgulamak<br />REPEAT: <br /> MESSAGE "A transaction" (IF TRANSACTION THEN "IS" ELSE<br /> "IS NOT")"active in the outer REPEAT block," SKIP<br /> " before creating the Order" VIEW-AS ALERT-BOX.<br /> CREATE Order.<br /> DISPLAY OrderNumOrderDate.<br /> UPDATE CustNum.<br />
  16. 16. Uygulama 1 : Transaction Kapsamının Tespit Edilmesi<br />
  17. 17. Transaction Kapsamının Özel Olarak Belirlenmesi<br />Belirtilmiş transaction kapsamı<br />. . .<br />DO TRANSACTION:<br /> . . .<br /> . . .<br /> FOR EACH . . .<br /> . . .<br /> . . .<br /> END.<br /> . . .<br /> . . .<br />END.<br />Varsayılan Transaction Kapsamı<br />
  18. 18. Game Set Match DOS<br />LagtKortLigger DOS<br />Soccer Universe DOS<br />Play Sports DOS<br />Varsayılan Transaction Kapsamının Değiştirilmesi<br /><start outer transaction-scoping block><br /> . . .<br /> FOR EACH Customer <br /> WHERE SalesRep = "RDR" TRANSACTION:<br /> ASSIGN SalesRep = “DOS".<br /> DISPLAY NAME SalesRep.<br /> END.<br /> . . .<br /><end outer transaction-scoping block><br />Trans 1<br />Trans 2<br />Trans 3<br />Trans 4<br />
  19. 19. SİSTEM HATASI!<br />Neler Kaydedildi?<br />Veritabanı<br />
  20. 20. Uygulama 2 : Varsayılan Kapsamla Kaydedilen Veri<br />
  21. 21. Bir Transaction’ın Kapsamının Genişletilmesi<br />OrjinalTransaction Kapsamı<br />DO TRANSACTION:<br /> REPEAT:<br /> . . .<br /> . . .<br /> . . .<br />REPEAT:<br />. . .<br />. . .<br />END./* Inner REPEAT block */<br /> END. /* Outer REPEAT block */<br />END. /* Transaction */<br />Yeni transaction kapsamı<br />
  22. 22. Uygulama 3 : Artırılmış Kapsamla Kaydedilen Veri<br />
  23. 23. Bir Transaction’ın Kapsamının Küçültülmesi<br />Orjinaltransaction kapsamı<br />REPEAT:<br />DO TRANSACTION:<br /><Do task 1><br />. . .<br />. . .<br />END. /* end first transaction */<br />REPEAT TRANSACTION:<br /> <Do task 2><br />. . .<br />. . .<br />END. /* end second transaction */<br />END./* End REPEAT block */<br />Daha küçük iki transaction kapsamı<br />
  24. 24. Uygulama 4 : Küçültülmüş Kapsamla Kaydedilen Veri<br />
  25. 25. Bir Alt-transaction ile Çalışmak<br />Transaction<br />Alt-transaction<br />REPEAT: /* Start of the transaction */<br /> PROMPT-FOR Order.OrderNum.<br /> . . .<br /> SET Order.PO.<br />REPEAT:<br />. . .<br />SET Qty.<br />. . .<br />END. /* Inner REPEAT block - subtransaction*/<br />END. /* Outer REPEAT block – transaction */ <br />
  26. 26. Alt-transaction’ları Tanımlamak<br />İlk düzey blok<br />Line Blk<br />---- ---<br /> 2 1 REPEAT: /* Start of the transaction */<br /> 3 1 PROMPT-FOR Order.OrderNum.<br /> 4 1 FIND Order WHERE OrderNum = INPUT Order.OrderNum.<br /> 5 1 DISPLAY OrderNumCustNum PO SalesRep.<br /> 6 1 SET Order.PO.<br /> 7 2 REPEAT: <br /> 8 2 FIND NEXT OrderLine OF order.<br /> 9 2 DISPLAY LineNumItemNum Qty Price . . . <br />10 2 SET Qty.<br />11 2 DISPLAY Qty * Price LABEL "Total price".<br />1 END. /* FIND OrderLine block */ <br />END. /* End of the transaction */<br />İkinci düzey blok<br />
  27. 27. Değişkenleri Saklamak<br />lbi4321<br />iVctr = 1<br />dNewPrice = 10.25<br />iLineNum = 16<br />
  28. 28. Bir Trsansaction içinden Bir Alt-prosedur’ü Çağırmak<br />eRunTrans.p<br />REPEAT:<br /> PROMPT-FOR Customer.CustNum.<br /> FIND Customer USING CustNum.<br />...<br /> UPDATE CreditLimit..<br /> ...<br /> RUN eUpdOrder.p (BUFFER Customer).<br /> .<br /> .<br /> .<br />END.<br />Altprosedürü çalıştır<br />eUpdOrder.p<br />FOR EACH Order OF Customer:<br /> DISPLAY Order...<br /> UPDATE Carrier.<br /> ...<br />END.<br />İşlemi çağıran prosedüre bırak<br />Transaction Kapsamı<br />
  29. 29. Uygulama 5 : Bir Transaction İçinden Bir Alt-procedur’ü Çağırmak<br />
  30. 30. Neler Kaydedildi?<br />Veritabanı<br />SİSTEM HATASI!<br />
  31. 31. Uygulama 6 : Varsayılan Transaction Kapsamını Değiştirmek<br />

×