Ispade roman od poruke ali molim vas procitajte do kraja
Mislim da cu primjerom najbolje objasniti problem:
Dakle, neka tabela u .gdb bazi ima kolone ID, IME, PREZIME
IME i PREZIME unosi korisnik aplikacije (radjene u builder-u) a ID je AutoIncrement o kojem brine AfterInsert-triger u samoj bazi
Na formi su TIB komponente koje se vezu na bazu bez koriscenja BDE-a: IBTable1, IBDatabase1, IBTransaction1 i DataSource1 i DBGrid1.
Nakon podizanja aplikacije sve izgleda u redu, IBTable1 povuce sve podatke iz baze, ali ako korisnik unese "Ime" i "Prezime" a polje "ID" (kojem je u Fields Editoru postavljeno Required=false) ostavi prazno, nakon:
Code:
IBTable1->Post();
IBTable1->Post();
IBTable jednostavno ne vidi vrijednost novog ID-a, tj vidi se uneseno ime i prezime ali ID kao da je NULL
Probao sam sa
Code:
IBTable1->Post();
IBTransaction1->CommitRetaining();
IBTable1->Refresh();
IBTable1->Post();
IBTransaction1->CommitRetaining();
IBTable1->Refresh();
ali problem je ostao!?
Kad bazi pristupim iz npr. IBExpert-a, vidi se da su svi podaci tu ali ih bilder-aplikacija ne vidi sve dok se ne restartuje...
Jedini nacin koji sam nasao da natjeram IBTable1 da vidi novu vrijednost ID-a bez restartovanja aplikacije je prilicno ljakse:
Code:
IBTable1->Post();
IBTable1->Active=false;
IBTable1->Active=true;
IBTable1->Post();
IBTable1->Active=false;
IBTable1->Active=true;
CachedUpdates su podeseni na false
Pretpostavljam da tu ima caka koju ja (ocito) ne znam... Ovo mi je oduzelo vec dosta vremena, please help!
Hvala na strpljenju
Tica