Poslao: 18 Okt 2007 15:08
|
offline
- Pridružio: 03 Nov 2006
- Poruke: 59
|
Naime imam jedan problem, koristim ORACLE bazu i posle nekoliko editovanja nekog rekorda dobijem poruku :
could'n perform the edit because another user changed the record
Inace, kod edirovanja koristim komponentu TABLE, pa me interesuje da li neko zna u cemu je problem.
Meni sto pada na pamet jeste da komponenta TABLE ne odradi POST i da taj tekord ostane u edit modu i posle da se ne moze promjeniti, a da to ORACLE upisuje u neke svoje fajlove da je taj rekord u edit modu.
Ako neko zna kako ovo da rjesim, bio bih zahvalan.
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 18 Okt 2007 18:17
|
offline
- Srki_82
- Moderator foruma
- Srđan Tot
- Am I evil? I am man, yes I am.
- Pridružio: 12 Jul 2005
- Poruke: 2483
- Gde živiš: Ljubljana
|
Meni se ova greska javlja kad komponenta ne moze da nadje rekord koji treba da promeni. Da li je moguce da u tom menjajnu promenis i primarni kljuc rekorda?
BTW standardni drajver za Oracle koji dolazi uz Windows je jako ogranicen.
http://support.microsoft.com/kb/q244661/
|
|
|
|
Poslao: 19 Okt 2007 10:29
|
offline
- Pridružio: 03 Nov 2006
- Poruke: 59
|
NIje to, hvala na pokusaju.
Rjesio sam problem.
Naime, posto sam koristio komponentu TABLE, dovoljan je POST, medjutim ja sam, ne znam iz kojeg razloga, posle stavio i COMMIT i ona napravi problem.
Inace to je izlgedalo ovako, mozda nekome bude od koristi :
procedure TImaociGradjeINUP.IWButton3Click(Sender: TObject);
var st, pomSif_mjesto, pomBR_DOSIJE : string;
poz : integer;
begin
pomSif_mjesto := IWDBEdit15.Text; // ovo sam stavio jer mi se sifra mjesta izubi negdje usput !!!
pomBR_DOSIJE := IWDBEdit2.Text;
if IWEdit8.Text <> '' then begin
poz := pos('@',IWEdit7.Text);
if poz = 0 then begin
WebApplication.ShowMessage('Pogresna e-mail adresa!');
IWEdit7.SetFocus;
exit;
end;
end;
if IWEdit8.Text <> '' then begin
poz := pos('@',IWEdit8.Text);
if poz = 0 then begin
WebApplication.ShowMessage('Pogresna e-mail adresa!');
IWEdit8.SetFocus;
exit;
end;
end;
if IWEdit8.Text <> '' then begin
if UpperCase(Copy(IWDBEdit22.Text, 1, 4)) <> 'WWW.' then begin
WebApplication.ShowMessage('Pogresna Internet adresa!');
IWDBEdit22.SetFocus;
exit;
end;
end;
try
if p.pop = false then begin // dole podaci su upisani, ako se radi o eidt modu
st := 'select SEQ_PK_SJEDISTE.nextval as max from dual';
p.SQLopen(st);
p.TSJEDISTESIF_SJEDISTA.AsInteger := StrToInt('1'+p.up.FieldByName('max').AsString);
// p.TSJEDISTEIMA_BR_DOSIJEA.AsString := p.TIMAOCIBR_DOSIJEA.AsString;
p.TSJEDISTEIMA_BR_DOSIJEA.AsString := pomBR_DOSIJE;
P.TSJEDISTESIF_TIP_SJED.asinteger := 1;
p.TSJEDISTESIF_MJESTO.AsInteger := StrToInt(pomSif_mjesto);
// p.TTip_imaocaBR_DOSIJEA.AsString := p.TIMAOCIBR_DOSIJEA.AsString;
// p.TDosije_imBR_DOSIJEA.AsString := p.TIMAOCIBR_DOSIJEA.AsString;
p.TTip_imaocaBR_DOSIJEA.AsString := pomBR_DOSIJE;
p.TDosije_imBR_DOSIJEA.AsString := pomBR_DOSIJE;
end;
p.TIMAOCI.Post;
p.Edit_Wiew := true;
p.stEdit_wiev := p.TIMAOCIBR_DOSIJEA.AsString;
p.TSJEDISTE.Post;
p.TTip_imaoca.Post;
if (IWDBEdit4.Text <> '') and (IWDBEdit29.Text <> '') then
P.TDosije_im.Post
else p.TDosije_im.Cancel;
if IWEdit1.Text <> '' then begin
if (p.pop = true) and (tel1 <> '') then begin
p.TTelefon_im.Locate('telefon',tel1,[]);
p.TTelefon_im.Edit
end else
p.TTelefon_im.Append;
if p.Query1.Active then
p.TTelefon_imBR_DOSIJEA.AsString := p.Query1.FieldByName('br_dosijea').AsString
else
// p.TTelefon_imBR_DOSIJEA.AsString := p.TIMAOCIBR_DOSIJEA.AsString;
p.TTelefon_imBR_DOSIJEA.AsString := pomBR_DOSIJE;
p.TTelefon_imTELEFON.AsString := IWEdit1.Text;
p.TTelefon_im.Post;
end;
if IWEdit2.Text <> '' then begin
if (p.pop = true) and (tel2 <> '') then begin
p.TTelefon_im.Locate('telefon',tel2,[]);
p.TTelefon_im.Edit
end else
p.TTelefon_im.Append;
if p.Query1.Active then
p.TTelefon_imBR_DOSIJEA.AsString := p.Query1.FieldByName('br_dosijea').AsString
else
// p.TTelefon_imBR_DOSIJEA.AsString := p.TIMAOCIBR_DOSIJEA.AsString;
p.TTelefon_imBR_DOSIJEA.AsString := pomBR_DOSIJE;
p.TTelefon_imTELEFON.AsString := IWEdit2.Text;
p.TTelefon_im.Post;
end;
if IWEdit3.Text <> '' then begin
if (p.pop = true) and (tel3 <> '') then begin
p.TTelefon_im.Locate('telefon',tel3,[]);
p.TTelefon_im.Edit
end else
p.TTelefon_im.Append;
if p.Query1.Active then
p.TTelefon_imBR_DOSIJEA.AsString := p.Query1.FieldByName('br_dosijea').AsString
else
// p.TTelefon_imBR_DOSIJEA.AsString := p.TIMAOCIBR_DOSIJEA.AsString;
p.TTelefon_imBR_DOSIJEA.AsString := pomBR_DOSIJE;
p.TTelefon_imTELEFON.AsString := IWEdit3.Text;
p.TTelefon_im.Post;
end;
if IWEdit4.Text <> '' then begin
if (p.pop = true) and (fax1 <> '') then begin
p.TFaks_im.Locate('faks',fax1,[]);
p.TFaks_im.Edit
end else
p.TFaks_im.Append;
if p.Query1.Active then
p.TFaks_imBR_DOSIJEA.AsString := p.Query1.FieldByName('br_dosijea').AsString
else
p.TFaks_imBR_DOSIJEA.AsString := p.TIMAOCIBR_DOSIJEA.AsString;
p.TFaks_imFAKS.AsString := IWEdit4.Text;
p.TFaks_im.Post;
end;
if IWEdit5.Text <> '' then begin
if (p.pop = true) and (fax2 <> '') then begin
p.TFaks_im.Locate('faks',fax2,[]);
p.TFaks_im.Edit
end else
p.TFaks_im.Append;
if p.Query1.Active then
p.TFaks_imBR_DOSIJEA.AsString := p.Query1.FieldByName('br_dosijea').AsString
else
p.TFaks_imBR_DOSIJEA.AsString := p.TIMAOCIBR_DOSIJEA.AsString;
p.TFaks_imFAKS.AsString := IWEdit5.Text;
p.TFaks_im.Post;
end;
if IWEdit6.Text <> '' then begin
if (p.pop = true) and (fax3 <> '') then begin
p.TFaks_im.Locate('faks',fax3,[]);
p.TFaks_im.Edit
end else
p.TFaks_im.Append;
if p.Query1.Active then
p.TFaks_imBR_DOSIJEA.AsString := p.Query1.FieldByName('br_dosijea').AsString
else
p.TFaks_imBR_DOSIJEA.AsString := p.TIMAOCIBR_DOSIJEA.AsString;
p.TFaks_imFAKS.AsString := IWEdit6.Text;
p.TFaks_im.Post;
end;
if IWEdit7.Text <> '' then begin
if (p.pop = true) and (eml1 <> '') then begin
p.TEmail_im.Locate('e_mail',eml1,[]);
p.TEmail_im.Edit
end else
p.TEmail_im.Append;
if p.Query1.Active then
p.TEmail_imBR_DOSIJEA.AsString := p.Query1.FieldByName('br_dosijea').AsString
else
p.TEmail_imBR_DOSIJEA.AsString := p.TIMAOCIBR_DOSIJEA.AsString;
p.TEmail_imE_MAIL.AsString := IWEdit7.Text;
p.TEmail_im.Post;
end;
if IWEdit8.Text <> '' then begin
if (p.pop = true) and (eml2 <> '') then begin
p.TEmail_im.Locate('e_mail',eml2,[]);
p.TEmail_im.Edit
end else
p.TEmail_im.Append;
if p.Query1.Active then
p.TEmail_imBR_DOSIJEA.AsString := p.Query1.FieldByName('br_dosijea').AsString
else
p.TEmail_imBR_DOSIJEA.AsString := p.TIMAOCIBR_DOSIJEA.AsString;
p.TEmail_imE_MAIL.AsString := IWEdit8.Text;
p.TEmail_im.Post;
end;
if IWEdit9.Text <> '' then begin
if IWEdit10.Text = '' then begin
WebApplication.ShowMessage('Upisi prezime odgovornog lica!');
IWEdit10.SetFocus;
exit;
end;
if (p.pop = true) and (ol12 <> '') then begin
p.TOdg_lice_im.Locate('prezime',ol12,[]);
p.TOdg_lice_im.Edit
end else
p.TOdg_lice_im.Append;
if p.Query1.Active then
p.TOdg_lice_imBR_DOSIJEA.AsString := p.Query1.FieldByName('br_dosijea').AsString
else
p.TOdg_lice_imBR_DOSIJEA.AsString := p.TIMAOCIBR_DOSIJEA.AsString;
p.TOdg_lice_imIME.AsString := IWEdit9.Text;
p.TOdg_lice_imPREZIME.AsString := IWEdit10.Text;
p.TOdg_lice_imGOD_OD.AsString := IWEdit11.Text;
p.TOdg_lice_imGOD_DO.AsString := IWEdit12.Text;
p.TOdg_lice_im.Post;
end;
if IWEdit13.Text <> '' then begin
if IWEdit14.Text = '' then begin
WebApplication.ShowMessage('Upisi prezime odgovornog lica!');
IWEdit14.SetFocus;
exit;
end;
if (p.pop = true) and (ol22 <> '') then begin
p.TOdg_lice_im.Locate('prezime',ol22,[]);
p.TOdg_lice_im.Edit
end else
p.TOdg_lice_im.Append;
if p.Query1.Active then
p.TOdg_lice_imBR_DOSIJEA.AsString := p.Query1.FieldByName('br_dosijea').AsString
else
p.TOdg_lice_imBR_DOSIJEA.AsString := p.TIMAOCIBR_DOSIJEA.AsString;
p.TOdg_lice_imIME.AsString := IWEdit13.Text;
p.TOdg_lice_imPREZIME.AsString := IWEdit14.Text;
p.TOdg_lice_imGOD_OD.AsString := IWEdit15.Text;
p.TOdg_lice_imGOD_DO.AsString := IWEdit16.Text;
p.TOdg_lice_im.Post;
end;
if IWEdit17.Text <> '' then begin
if IWEdit18.Text = '' then begin
WebApplication.ShowMessage('Upisi prezime odgovornog lica!');
IWEdit18.SetFocus;
exit;
end;
if (p.pop = true) and (ol32 <> '') then begin
p.TOdg_lice_im.Locate('prezime',ol32,[]);
p.TOdg_lice_im.Edit
end else
p.TOdg_lice_im.Append;
if p.Query1.Active then
p.TOdg_lice_imBR_DOSIJEA.AsString := p.Query1.FieldByName('br_dosijea').AsString
else
p.TOdg_lice_imBR_DOSIJEA.AsString := p.TIMAOCIBR_DOSIJEA.AsString;
p.TOdg_lice_imIME.AsString := IWEdit17.Text;
p.TOdg_lice_imPREZIME.AsString := IWEdit18.Text;
p.TOdg_lice_imGOD_OD.AsString := IWEdit19.Text;
p.TOdg_lice_imGOD_DO.AsString := IWEdit20.Text;
p.TOdg_lice_im.Post;
end;
/// if p.TSJEDISTE.Database.InTransaction then p.TSJEDISTE.Database.Commit;
/// if p.TIMAOCI.Database.InTransaction then p.TIMAOCI.Database.Commit;
/// if p.TTip_imaoca.Database.InTransaction then p.TTip_imaoca.Database.Commit;
/// if p.TDosije_im.Database.InTransaction then p.TDosije_im.Database.Commit;
// if p.TTelefon_im.Database.InTransaction then p.TTelefon_im.Database.Commit;
// if p.TFaks_im.Database.InTransaction then p.TFaks_im.Database.Commit;
// if p.TEmail_im.Database.InTransaction then p.TEmail_im.Database.Commit;
// if p.TOdg_lice_im.Database.InTransaction then p.TOdg_lice_im.Database.Commit;
if p.pop = true then p.pop := false;
tel1 := ''; tel2 := ''; tel3 := '';
fax1 := ''; fax2 := ''; fax3 := '';
eml1 := ''; eml2 := '';
ol11 := ''; ol12 := ''; ol13 := ''; ol14 := '';
ol21 := ''; ol22 := ''; ol23 := ''; ol24 := '';
ol31 := ''; ol32 := ''; ol33 := ''; ol34 := '';
Release;
TImaociGradje.Create(WebApplication).show;
except
on E:Exception do begin
p.PorukaKorisniku :='WebArhiva Greska 00062 -'+ 'Greska pri upisu !-Imalac gradje ';
p.OpisGreske :=e.Message;
p.neuspjelakomanda :='';
p.SnimiGreskuUAlert(p.username ,p.neuspjelakomanda,p.PorukaKorisniku,p.OpisGreske);
WebApplication.ShowMessage(p.PorukaKorisniku+e.Message);
if p.TSJEDISTE.Database.InTransaction then p.TSJEDISTE.Database.Rollback;
if p.TIMAOCI.Database.InTransaction then p.TIMAOCI.Database.Rollback;
if p.TTip_imaoca.Database.InTransaction then p.TTip_imaoca.Database.Rollback;
if p.TTelefon_im.Database.InTransaction then p.TTelefon_im.Database.Rollback;
if p.TFaks_im.Database.InTransaction then p.TFaks_im.Database.Rollback;
if p.TEmail_im.Database.InTransaction then p.TEmail_im.Database.Rollback;
if p.TOdg_lice_im.Database.InTransaction then p.TOdg_lice_im.Database.Rollback;
if p.TDosije_im.Database.InTransaction then p.TDosije_im.Database.Rollback;
p.Edit_Wiew := true;
p.stEdit_wiev := p.TIMAOCIBR_DOSIJEA.AsString;
end;
end;
end;
|
|
|
|
Poslao: 19 Okt 2007 11:00
|
offline
- savkic
- Novi MyCity građanin
- Pridružio: 05 Jun 2007
- Poruke: 29
|
> Naime, posto sam koristio komponentu TABLE, dovoljan je POST,
> medjutim ja sam, ne znam iz kojeg razloga, posle stavio i
> COMMIT i ona napravi problem.
Posle commit se transakcija zatvara i podaci upisuju u bazu, transakcija koja pregleda podatke te promene ne vidi i zato se dobije greška.
Savetujem ti da izbaciš TTable komponente iz upotrebe i pređeš na Query za prikaz a UpdateSql za izmene. Sve je daleko brže i pouzdanije.
|
|
|
|
Poslao: 19 Okt 2007 12:09
|
offline
- Pridružio: 03 Nov 2006
- Poruke: 59
|
IPAK NISTA NISAM URADIO, JEDNO VRIJEME JE RADILO KAKO TREBA I SADA OPET BRLJA.
Savkic, to sto pricas je tacno i ja znam da bi problem rjesio sa Query i UpdateSql, ali mi je to sada ogroman posao, tacnije gotovo nemoguc iz razloga:
Jedan Query koristim za prikaz, a onda na osnovu rekorda koji je oznacen u njemu, funkcijom LOCATE trazim rekord u tabeli.
Ovo ne mogu da uradim u komponenti Query, jer ako stavim RequestLive = true, onda ne mogu da koristim LOCATE itd...
|
|
|
|
Poslao: 19 Okt 2007 17:54
|
offline
- savkic
- Novi MyCity građanin
- Pridružio: 05 Jun 2007
- Poruke: 29
|
> jemu, funkcijom LOCATE trazim rekord u tabeli.
Locate uglavnom ide sekvencijalno dok ne pronađe traženi slog. Ništa specijalno, možeš i sam napisati.
> Ovo ne mogu da uradim u komponenti Query, jer ako stavim
> RequestLive = true, onda ne mogu da koristim LOCATE itd...
Kako RequestLive utiče na locate?
Inače, RequestLive ti i ne treba, samo popuni UpdateSql.
|
|
|
|
Poslao: 23 Okt 2007 08:35
|
offline
- Pridružio: 03 Nov 2006
- Poruke: 59
|
RequestLive itekako utice na sve ostalo, ali si upravu da mi to ne treba, samo mi treba ChackedUpdates = true.
Ipak sam morao da predjem na tvoju varijantu, jeste da tu jebilo puno posla, morao sam da mjenjam puno toga, ali nema veze.
Sada valjda radi, bar na onim stvarima gdje sam promjene napravio.
Ono sto je ludo, sto sa komponentom TABLE nikada ne znas kada ce doci dogreske, nekada odmah prilikom druge promjene, a nekada mozes i po 15 puta da napravis izmjenu i tek onda zvekne, bas ludo.
|
|
|
|