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

update iz jedne u drugu identičnu tabelu?

[es] :: Pascal / Delphi / Kylix :: update iz jedne u drugu identičnu tabelu?

[ Pregleda: 4422 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

salvaric
Novi Sad

Član broj: 53995
Poruke: 204
*.adsl.eunet.rs.



+4 Profil

icon update iz jedne u drugu identičnu tabelu?19.10.2013. u 15:31 - pre 127 meseci
Pozdrav društvo,

Program koristi dve identične baze (mdb), u jednoj su svi podaci a druga služi kao privremeno skladištenje za obradu. To sam uradio iz razloga što se program koristi na mreži i koristi ga više korisnika u isto vreme, pa da nebi bilo neželjenih efekata nad glavnom bazom, pucanja veza itd...

Hteo sam da napravim UPDATE posle izmene podataka, koji će iz privremene tabele jedne baze update-ovati podatke u tabelu glavne baze, kako bi što manje glavna baza bila zauzeta.
Code:

UPDATE tabPartneri A in "c:\baza.mdb" set ROW = (select * tabPartneri B in "c:\baza_privremena.mdb" where A.IDPartnera=B.IDPartnera)


Dal je moguće to izvesti, pošto mi ovaj kod daje grešku,
jer bih hteo izbeći ispisivanje svih kolona tipa: set a.idpartnera=b.idpartnera,a.naziv=b.naziv..., imam dosta tabela i kolona unutar njih, pa sam hteo skratiti kod.

[Ovu poruku je menjao salvaric dana 19.10.2013. u 16:42 GMT+1]
Nikad izvini!
 
Odgovor na temu

salvaric
Novi Sad

Član broj: 53995
Poruke: 204
*.adsl.eunet.rs.



+4 Profil

icon Re: update iz jedne u drugu identičnu tabelu?20.10.2013. u 09:23 - pre 127 meseci
Ovaj primer sam našao negde na net, al ne fercera.

Dal neko zna neki elegantniji način da update-ujem podatke iz jedne u drugu bazu a da pti tome ne ispisujem sve kolone u sql upitu, ili da primenim metodu brisanja pa insert podataka u glavnu bazu, što bi trebalo malo duže da traje od update-a?
Nikad izvini!
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: update iz jedne u drugu identičnu tabelu?20.10.2013. u 09:53 - pre 127 meseci
Prvo resenje je da odradis CopyFile(backup_baza, main_basa, FALSE), s' tim sto bi onda morao da privremeno zatvoris bazu prilikom kopiranja.
Drugo resenje je koriscenjem SQL-a, ali ne znam kako bi glasio query, verovatno bi trebao da koristis cursor.
A trece i najispravnije resenje je da koristis neku bazu koja zapravo podrzava concurrent access. :)
 
Odgovor na temu

salvaric
Novi Sad

Član broj: 53995
Poruke: 204
*.dynamic.isp.telekom.rs.



+4 Profil

icon Re: update iz jedne u drugu identičnu tabelu?22.10.2013. u 12:32 - pre 127 meseci
CopyFile(backup_baza, main_basa, FALSE)
mi nemože pomoći iz razloga što pomoćna baza u tabelama sadrži samo one slogove koji se trenutno edituju i posle update-a bi ih trebalo izbrisati.
Glavna baza je već prepuna podacima, tako da sam hteo da je iskoristim i doradim program sa kreiranjem pomoćne, kako bih rasteretio glavnu.

Dal neko zna SQL kod za UPDATE svih polja odjednom, bez da se ispisuju, nad tabelama koje imaju istu strukturu polja?
Nikad izvini!
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
*.teol.net.



+62 Profil

icon Re: update iz jedne u drugu identičnu tabelu?22.10.2013. u 13:47 - pre 127 meseci
A da dobacis koju gresku dobijas s onim gore, u prvom postu teme..?

Pozz
 
Odgovor na temu

salvaric
Novi Sad

Član broj: 53995
Poruke: 204
*.adsl.eunet.rs.



+4 Profil

icon Re: update iz jedne u drugu identičnu tabelu?22.10.2013. u 21:08 - pre 127 meseci
Izvini što se nisam ranije javio,

rešio sam problem sa ovim, napravio sam funkciju koja će pokupiti sve nazive kolona iz tabele i smestiti u stringlist i posle sa for petljom ispisati sql upit, sa primenom parametara.

Code:
 
var
ListaKolona:TStringList;
Lista: String;
begin
       ListaKolona:=TStringList.Create;
       ListaKolona:=UcitajKolone(Modul.TabPartneri);
        with Modul.TabPartneri do
          begin
             for I := 0 to ListaKolona.Count - 1 do
                begin
                  if Lista = '''' then
                     Lista:=ListaKolona.Strings[i]).Value + ''=:''+ListaKolona.Strings[i]).Value
                  else
                     Lista:=Lista+'',''+ListaKolona.Strings[i]).Value + ''=:''+ListaKolona.Strings[i]).Value
               end;             
             SQL.Clear;
             SQL.Add('UPDATE tabPartneri A in "'+Baza+'" SET '+Lista);
             SQL.Add('where IDPartnera='+IntToStr(ID));
             for I := 0 to ListaKolona.Count - 1 do
              begin
                 Parameters.ParamByName(ListaKolona.Strings[i]).Value:= ModulObrada.tabPartneri.FieldByName(ListaKolona.Strings[i]).Value;
              end;
             ExecSQL;
           end;
end;



To sve radi kako treba, samo sad je nastao problem posle update, pošto se DBGrid-om prikazuju podaci pomoću ADOTable-a koji je konektovan na glavnu bazu, i posle izmene podataka odradim close i open te tabele pa onda na Locate da bih locirao izmenjeni slog, al mi ne osveži podatke koji su izmenjeni, tek posle druge izmene sve radi kako treba, DBGrid ih prikaže, ali svako prva izmena, prilikom novog pokretanja programa neće da prikaže izmene. Pokušavao sam sa Refresh, Requery, al nikako privu izmenu da pri-kaže.

Dal neko zna u čemu je caka?
Nikad izvini!
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: update iz jedne u drugu identičnu tabelu?23.10.2013. u 13:07 - pre 127 meseci
> open te tabele pa onda na Locate da bih locirao izmenjeni slog, al mi ne osveži podatke koji su izmenjeni, tek posle druge izmene sve radi kako treba, DBGrid ih prikaže,
> ali svako prva izmena, prilikom novog pokretanja programa neće da prikaže izmene. Pokušavao sam sa Refresh, Requery, al nikako privu izmenu da pri-kaže.

Ako ne vidis updejtovane podatke obično to znači sledeće:
- transakcija koja je uradila updejt nije commitovana
- upit koji čita podatke koristi transakciju koja ne vidi podatke. Rešenje: zatvoriti upit, startovati novu transakciju i poslati novi upit

 
Odgovor na temu

rankez
Ravna Gora

Član broj: 2850
Poruke: 96
*.dynamic.sbb.rs.



Profil

icon Re: update iz jedne u drugu identičnu tabelu?14.12.2013. u 07:01 - pre 125 meseci
Ja imam sličan problem.

Imam dve mdb baze koje su potpuno identične strukture. U jednoj su podaci obrađeni u toku jednog dana a u drugoj su svi podaci. Imam potrebu da podatke iz dnevne baze dodam (append) u glavnu bazu.

Razmišljam na sledeći način (crenim sam označio problem):
Code:

var slog : [red]record[/red] //Kako definišem bilo kakav slog? 
Begin
  TableSve.Open;
  TableSve.Append;
  With TablePrivremena do 
  begin
    Open;
    While not EoF do
    begin
      slog:=[red]GetCurrentRecord;[/red]  //koju funkciju da upotrebim da izčitam ceo slog?
      TableSve.[red]AppendRecord[/red] :=slog; //koju funkciju da upotrebim dodam ceo slog u bazu?
      Next;
    end;
    Close;
  end;
  TableSve.Post;
  TableSve.Close;
end;


Nije problem da se ovo uradi "polje po polje" ali je stvar u tome što je veliki broj polja pa sam mislio da upotrebim neku funkciju koja izčitava ceo slog iz baze i upisuje ga u drugu bazu (obe baze su iste strukture). Tražio sam po helpu (Delphi XE4) ali bezuspešno.


 
Odgovor na temu

tkaranovic
Tomislav Karanović
Beograd

Član broj: 220507
Poruke: 307



+18 Profil

icon Re: update iz jedne u drugu identičnu tabelu?22.12.2013. u 01:57 - pre 125 meseci
Code:

  for i := 0 to Table1.FieldList.Count-1 do
    Table2.Fields.FieldByName(Table1.FieldList[i].Name).Value := Table1.FieldList[i].Value;

 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: update iz jedne u drugu identičnu tabelu?

[ Pregleda: 4422 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

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