Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa transakcijama (TIBTransaction)

[es] :: Pascal / Delphi / Kylix :: Problem sa transakcijama (TIBTransaction)

[ Pregleda: 1738 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Mr. Rejn
Deki Karamatijević
Sremčica

Član broj: 2514
Poruke: 515
*.dynamic.sbb.co.yu.



+4 Profil

icon Problem sa transakcijama (TIBTransaction)08.01.2007. u 12:44 - pre 210 meseci
Znam da je ovo forum za Delphi,ali pošto je pitanje VCL,
a ne C++ specifično, postujem ga ovde..

Npr. transakcija UnosStavkiTran se pokrece u jednoj metodi:
Code:

void __fastcall TForma::SpeedButton12Click(TObject *Sender)
{
...
UnosStavki->Open(); //otvara
UnosStavki->Append(); //dodaje prazan red
UnosStavki->Edit(); //ulazi u edit mod
UnosStavkiTran->Active = true;
}

a treba da se potvrdi (posle unosa podataka u dataset UnosStavki) u
drugoj metodi:
Code:

void __fastcall TForma::SpeedButton2Click(TObject *Sender)
{
switch (Application->MessageBoxA("Potvrdi unos?","Unos proizvoda u toku",MB_OKCANCEL | MB_ICONQUESTION))
        {
        case IDOK: UnosStavkiTran->Commit();
        case IDCANCEL: UnosStavkiTran->Rollback();
        }
}

međutim, po kliku na SpeedButton2 javlja se greška 'Transacion is not active', što je čudno
jer u istom programu na drugim formama ovaj postupak radi.
U suštini izgleda kao da se UnosStavkiTran transakcija deaktivira po izvršavanju metode u kojoj je
aktivirana? Ima li neko pojma šta je ovo? Transakcije su tipa TIBTransaction.
Ag + Na -> Xe
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Problem sa transakcijama (TIBTransaction)08.01.2007. u 13:47 - pre 210 meseci
> međutim, po kliku na SpeedButton2 javlja se greška 'Transacion is not active', što je čudno
> jer u istom programu na drugim formama ovaj postupak radi.
> U suštini izgleda kao da se UnosStavkiTran transakcija deaktivira po izvršavanju metode u kojoj je
> aktivirana? Ima li neko pojma šta je ovo? Transakcije su tipa TIBTransaction.

Negde se transakcija završava pre dolaska u tu metodu. Moja preporuka ti je da uključiš use debug DCU, postaviš breakpoint na TIBTransaction.EndTransaction i vidiš odakle se poziva.
 
Odgovor na temu

Mr. Rejn
Deki Karamatijević
Sremčica

Član broj: 2514
Poruke: 515
*.adsl-1.sezampro.yu.



+4 Profil

icon Re: Problem sa transakcijama (TIBTransaction)14.01.2007. u 21:37 - pre 210 meseci
Malo kasnim, ali bolje ikad nego nikad...izgleda da radi kada se stavi van switch-case dela
(razlog nepoznat):
Code:

void __fastcall TForma::SpeedButton2Click(TObject *Sender)
{
UnosStavkiTran->Commit();
}

izgleda da Delphi/BCB ne poznaju siguran način da započnu transakciju u jednoj metodi, a završe
je u drugoj..što je glupo-pa naravno da će korisnik hteti da započne transakciju eventom neke
kotrole, a da je završi eventom neke druge,ili pritiskom na enter. Evo nekog buđavog članka o
tome: http://delphi.about.com/od/database/l/aa010202a.htm

Voleo bih da čujem nečije iskustvo i/ili preporuku o ovoj temi,tj. počinjanje transakcije u jednoj
a commit/rollback u nekoj drugoj metodi (mislim na TIBTransaction).

Ag + Na -> Xe
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Problem sa transakcijama (TIBTransaction)15.01.2007. u 02:10 - pre 210 meseci
> Malo kasnim, ali bolje ikad nego nikad...izgleda da radi kada se stavi van switch-case dela
> (razlog nepoznat):

Problem je u tvom kodu.

> izgleda da Delphi/BCB ne poznaju siguran način da započnu transakciju u jednoj metodi,
> a završe je u drugoj..što je glupo-pa naravno da će korisnik hteti da započne transakciju
> eventom neke kotrole, a da je završi eventom neke druge,ili pritiskom na enter. Evo nekog buđavog
> članka o tome: http://delphi.about.com/od/database/l/aa010202a.htm

Žarko je mislio na nešto drugo, da transakcije treba da budu atomske, tj. da traju što kraće, otpočnu se, uradi se šta treba i komituju se.

> Voleo bih da čujem nečije iskustvo i/ili preporuku o ovoj temi,tj. počinjanje transakcije u jednoj
> a commit/rollback u nekoj drugoj metodi (mislim na TIBTransaction).

Sasvim je normalno da se transakcija otpočne u jednoj a završi u drugoj metodi, ili da se otpočne i završi u istoj, već prema potrebama situacije i programa. Bitno je voditi računa da transkacije ne traju dugo i da se pametno koriste.


 
Odgovor na temu

Mr. Rejn
Deki Karamatijević
Sremčica

Član broj: 2514
Poruke: 515
212.200.219.*



+4 Profil

icon Re: Problem sa transakcijama (TIBTransaction)15.01.2007. u 10:42 - pre 210 meseci
Citat:
savkic:
Žarko je mislio na nešto drugo, da transakcije treba da budu atomske, tj. da traju što kraće, otpočnu se, uradi se šta treba i komituju se.

Pa ne verujem baš da je mislio na nešto drugo,lepo kaže čovek:
Citat:
Even though it is possible, it is NOT advisable to start, commit or rollback a transaction in different event handlers (button clicks, for example)

Ag + Na -> Xe
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Problem sa transakcijama (TIBTransaction)15.01.2007. u 15:41 - pre 210 meseci
> Pa ne verujem baš da je mislio na nešto drugo,lepo kaže čovek:
>> Even though it is possible, it is NOT advisable to start, commit or rollback a transaction in different event handlers (button clicks, for example)

Samo treba čitati, spominje _event handlers_ a ne _metode_, to znači da upravljanje transakcijama ne treba da zavisi od aktivnosti korisnika, pritisak na dugme, izlazak iz forme itd.
 
Odgovor na temu

morlic
Milos Orlic
Beograd

Član broj: 6081
Poruke: 735
*.dynamic.sbb.co.yu.



+1 Profil

icon Re: Problem sa transakcijama (TIBTransaction)15.01.2007. u 16:19 - pre 210 meseci
Citat:
izgleda da Delphi/BCB ne poznaju siguran način da započnu transakciju u jednoj metodi, a završe
je u drugoj..što je glupo-pa naravno da će korisnik hteti da započne transakciju eventom neke
kotrole


Zanima me koji to programski jezik poznaje siguran nacin za to sto si pomenuo, a da Delphi/BCB to isto ne moze? Zanima me naziv jezika i ako moze primer koda, zbog koga ovo tvrdis. Ja pre mislim da je vestina i znanje programera presudna za dobar rezultat.
 
Odgovor na temu

Mr. Rejn
Deki Karamatijević
Sremčica

Član broj: 2514
Poruke: 515
212.200.219.*



+4 Profil

icon Re: Problem sa transakcijama (TIBTransaction)15.01.2007. u 21:53 - pre 210 meseci
Izgleda da radi kako treba kada se izbor postavi u MessageDlg:
Code:

if (MessageDlg("Ažurirati unos?", mtConfirmation, TMsgDlgButtons() << mbYes << mbNo , 0) == mrYes)
        try {
            PregledUnosIzlaznihFakturaTran->Commit();
             }
        catch (...) {
            PregledUnosIzlaznihFakturaTran->Rollback();
             }

samo primećujem da javlja "Transaction not active" kada se ovo pokuša sa MessageBoxA i switch/case,
kako sam naveo u prvom postu,bar kod mene-možda je problem na nekom drugom mestu u kodu.
Ag + Na -> Xe
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Problem sa transakcijama (TIBTransaction)

[ Pregleda: 1738 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.