Azuriranje baze

1

Azuriranje baze

offline
  • Pridružio: 26 Feb 2007
  • Poruke: 220
  • Gde živiš: Novi Sad

Evo mene opet.Radim sa Access bazom, i imam problem sa azuriranjem podataka. Imam dve forme, kad unesem podatke na jednu izmene na drugoj mi se pojave tek kad zatvorim i ponovo otvorim aplikaciju. Probala sam Refresh ali nece. Ima li neko ideju. Na formovima su DBGridovi,ADOConnection i ADOTable.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Strog  Male
  • Stručni saradnik
    Web programiranje
  • Bojan Kopanja
  • Web & Mobile developer @ ZeusSoftware
  • Pridružio: 26 Jul 2003
  • Poruke: 2597
  • Gde živiš: Stara Pazova

Toplo ti preporucujem ovaj link: http://delphi.about.com/od/database/a/databasecourse.htm posto je stvarno super objasnjeno sve sto ti treba za pocetak i preporucujem ti kao prvo da se manes Table komponenti i da predjes na Query komponente za izvlacenja podataka iz baze, a zatim da se manes i ADO-a i Accessa i da sto pre predjes na nesto bolje tipa ZEOS/PosgreSQL kao odlicna free varijanta!

Sto se ovog tvog problema tice najbolje ces ga resiti pomocu nekog servera ( kojeg moras sama da napravis ) koji ce da gleda sta ti stanice rade i da ti eventualno salje podatke o izmenama ka svim ostalim stanicama kada jedna nesto izmeni kako bi svugde imala stvarno stanje sto se tice podataka.

Znaci ovo ti mozda i nije bas tako bezazlen problemcic tako da ti predlazem nesto jednostavnije za pocetak, takodje nauci sto bolje i SQL kako bi mogla da koristis Query komponente i onda si na konju!

Do duse nisam siguran da se ovo ne moze resiti nekako jednostavnije tako da necu odmah da te obeshrabrim... Ipak treba sacekati da se pojavi i beli sa svojim savetom Wink.

Kako ti on kaze, tako je i amin Smile.



offline
  • Pridružio: 08 Jan 2007
  • Poruke: 279
  • Gde živiš: Srbija

Probaj ovako:
//na TForm2 gde vrsis obradu  ...   with Form1.ADOTable1 do    begin      Insert;        .... // upises sta zelis      Post;    end;     //refresh   Form1.ADOTable1.Requery([]);
Slažem se sa prethodnim postom, ne treba da gubiš vreme na ove stvari.

offline
  • Strog  Male
  • Stručni saradnik
    Web programiranje
  • Bojan Kopanja
  • Web & Mobile developer @ ZeusSoftware
  • Pridružio: 26 Jul 2003
  • Poruke: 2597
  • Gde živiš: Stara Pazova

Ne loshmi_sr, nije toliki problem da azurira podatke na tom kompu koji je izvrsio neki insert. Problem je sto treba javiti i ostalim racunarima da je uradjen insert pa da i oni odrada taj refresh kako bi imali najsvezije podatke... Ovo u sustini moze biti i dosta opasno posto moze doci do gubljenja podataka ako je neko recimo ujutro upalio komp i pokrenuo program, otisao da doruckuje, a u medjuvremenu se nesto bitno izmeni u bazi. Ovaj se vrati, nastavi da radi na neazurnim podacima i prepise onu vaznu informaciju svojim radom, a da toga nije ni svestan... E zato po meni treba neki servercic koji ce da spreci da se sve ovo desi...

Dopuna: 02 Apr 2007 13:06

Kakav sam ja balvan Very Happy... Pa sad sam procitao da je njoj problem druga forma, a ne drugi komp Laughing. Znaci ne verujem kakav sam previd napravio Very Happy.

E pa ovo je onda vrlo jednostavno. Znaci batali Table komponentu, uzmi Query komponentu i ovih problema neces imati...

U sustini tebi je pri ovakvom nacinu rada koliko se meni cini glavni problem sto obe forme pravis istovremeno tako da se podaci odmah ucitaju u obe!

Formu 2 ne kreiraj odmah kad se pokrene porogram vec u neki event ( recimo on button click ili na klik na neku stavku u meniju ) stavi ovakav kod:

Form2:= TForm2.Create(nil); Form2.ShowModal;

a u OnClose event forme 2 stavi:

Action:= caFree;

I imaces uvek sveze podatke na formi 2, ali je ovo i dalje jako lose resenje ( zbog ADOTable komponente Very Happy )!

Izvinjavam se jos jednom za lose procitano pitanje Very Happy!

offline
  • Pridružio: 26 Feb 2007
  • Poruke: 220
  • Gde živiš: Novi Sad

e momci hvala al' kakav drugi racunar trenutno radim samo na jednom i kad unesem npr u formu Artikli novi deo hocu da mi se on pojavi u Formi Ulaz rado bi presla na SQL al' za sad nemam zivaca da cackam po tome. Zasto svi izbegavaju Acces i ADO jel tol'ko lose?

Dopuna: 02 Apr 2007 13:12

Sorry Strog nisam videla tvoj odgovor probacu pa cemo da vidimo dal' fercera.

Dopuna: 02 Apr 2007 13:19

PS Nemoj da pujdas belog na mene nakrpice me za sve i svasta

offline
  • Pridružio: 08 Jan 2007
  • Poruke: 279
  • Gde živiš: Srbija

Eto, izgleda da sam bio u pravu. Potrebno je na jednom kompu ažurirati podatke. Ako sam te dobro razumeo, Magrath, imaš jednu TForm gde se nalazi TDBGrid sa dataset -om, a sa druge radiš punjenje i update -ovanje baze. Neophodno ti je da, kad na TForm2 odradiš INSERT ili UPDATE (EDIT), ta se promena automatski prikaže na TForm1 u TDBGridu!?! Ako je tako, kod koji sam prethodno postovao rešava ti problem, odnosno, Requery([]) je isto što i Close - Open te komponente, u tvom slučaju TADOTable.

A ako je u pitanju problem sa formama, onda odradi ovo što je Strog rekao, s tim, što iz fajla Project.dpr treba izbaciti te forme, da se ne inicijalizuju po pokretanju aplikacije.

Zašto se izbegava ADO?
Pa, nije to baš u potpunosti tačno. Znam neke vrsne programere koji koriste ADO tehnologiju, ali ova druga škola izbegava zbog ODBC drajvera koji su znatno sporiji od native pristupa, kao npr. ZEOSLib. Takođe nije cross - platform rešenje kao npr. dbExpress, ali pošto je Borland prestao razvijati Kylix (pandan delphiju), to ti i ne znači baš nešto.

offline
  • Pridružio: 26 Feb 2007
  • Poruke: 220
  • Gde živiš: Novi Sad

E losmi care ono radi sa Requery za sad. Nisam izbacila formove iz projekta jako me mrzelo da radim sve ponovo al' je proradilo. Inace probala sam Close-open ranije pa nije htelo.Hvala svima.Ako ne vidite "masem repom "upravo od srece posto sam bila zestoko zapela Very Happy

Dopuna: 03 Apr 2007 10:24

PS hvala svima na savetima mislim da ce mi pomoci za dalje

offline
  • Strog  Male
  • Stručni saradnik
    Web programiranje
  • Bojan Kopanja
  • Web & Mobile developer @ ZeusSoftware
  • Pridružio: 26 Jul 2003
  • Poruke: 2597
  • Gde živiš: Stara Pazova

Magrath ::...Nisam izbacila formove iz projekta jako me mrzelo da radim sve ponovo...

Nisi ni trebala da ides sve iz pocetka! Da bi izbacila forme iz projekta pa ih kasnije sama kreirala samo trebas da ides na Project->Options i da kliknes na karticu Forms. Imaces prikazane 2 liste. U levoj su ti sve forme koje se automatski kreiraju po startovanju programa a desno su one koje sama kreiras po potrebi! Sada samo tu Formu 2 prebacis u desnu listu i to je to, izbacila si je iz projekta.

Sad kad si to uradila i kada hoces da pozoves tu formu onda uradis ono sto sam vec napisao gore ( Form2:= TForm2.Create(nil) itd. ) i to ti je sva mudrost... Radice tebi to i ovako kako si sad uradila, ali je to jednostavno pogresno i ne valja da se navikavas na takav sistem rada!

Pozz!

offline
  • Pridružio: 26 Feb 2007
  • Poruke: 220
  • Gde živiš: Novi Sad

Aaaaaaaa ajd dobro probacemo i to .Nisam znala za to .Koliko vam je vremena trebalo da savladate Delphi mada je to glupo pitanje posto pretpostavljam da ste imali podlogu u nekom drugom jeziku. Ja sam tek pocela a u skoli smo crtali stolice u Basic-u. Prednosti skolovanja u Srbijici.

Dopuna: 03 Apr 2007 11:03

Evo Strog ja probala i tvoju varijantu i mogu ti reci da radi.Poslusacu iskusnijeg ako ne i starijeg "kolegu" pa cu da nastavim tako .Evo rep je ponovo proradio .Hvala

offline
  • Pridružio: 08 Jan 2007
  • Poruke: 279
  • Gde živiš: Srbija

Ako hoćeš još malo da mrdaš repom, TForm klase možeš izbaciti i na sledeći način:
1) projekat ti je otvoren
2) imaš više TForm klasa koje se inicijalizuju sa TMainForm (osnovnom)
3) odeš na "Project" - "View source" i dobiješ nešto ovako:
program Project1; uses   Forms,   Unit1 in 'Unit1.pas' {Form1},   Unit2 in 'Unit2.pas' {Form2},   Unit3 in 'Unit3.pas' {Form3}; {$R *.res} begin   Application.Initialize;   Application.CreateForm(TForm1, Form1);   Application.CreateForm(TForm2, Form2);   Application.CreateForm(TForm3, Form3);   Application.Run; end.
4) potom izbaciš ostale TForm klase sem osnovne ( npr. TForm1) i rezultat je:
program Project1; uses   Forms,   Unit1 in 'Unit1.pas' {Form1},   Unit2 in 'Unit2.pas' {Form2},   Unit3 in 'Unit3.pas' {Form3}; {$R *.res} begin   Application.Initialize;   Application.CreateForm(TForm1, Form1);   Application.Run; end.
Dalje, kao što je Strog rekao, kreiraš i pozivaš TForm klase po potrebi. Naravno i koristiš Free ili Release u zavisnosti od potrebe.

O svemu tome pogledaj malo u helpu.

Ko je trenutno na forumu
 

Ukupno su 1415 korisnika na forumu :: 46 registrovanih, 7 sakrivenih i 1362 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., Aleksandar Tomić, aleksmajstor, Apok, BlekMen, Brana01, cemix, darios, Dimitrise93, draganca, dragoljub11987, dule10savic, FileFinder, goxin, Griffon vulture, ILGromovnik, Ivan001, Ivica1102, kikisp, kolle.the.kid, Kubovac, kuntalo, ljuba, Mcdado, Mercury, milenko crazy north, Milos ZA, milutin134, nemkea71, nikola287, pein, powSrb, Ripanjac, Seeker, solic, srbijaiznadsvega, Srle993, vathra, Vlad000, vladaa012, VP6919, W123, YU-UKI, zillbg, zzapNDjuric99, Čivi