could'n perform the edit because another user changed ...

could'n perform the edit because another user changed ...

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.
offline
  • 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/



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;

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.

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...

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.

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.

Ko je trenutno na forumu
 

Ukupno su 570 korisnika na forumu :: 43 registrovanih, 5 sakrivenih i 522 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 1567 - dana 15 Jul 2016 19:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _commandos_, ALBION101, Apok, atrkulja, bulovic, cicus91, dedalus, dexus, Dicus, djboj, Drug pukovnik, Ehinacea, ILGromovnik, jery2, Kaplar2, KUZMAR, Levi2, Lucije Kvint, MB120mm, Mihajlo2, Milan A. Nikolic, milos.cbr, miodrag3, Mlav, Nomenklatura, orao, pein, powSrb, Profica2, Recce, repac2, RJ, royst33, S-lash, smiks63, Snorks, Srna, stringer bell, Taso, vathra, yamato, Zmaj 99, zodiac94