Poslao: 02 Apr 2007 11:41
|
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.
|
|
Poslao: 02 Apr 2007 11:57
|
offline
- Strog
- 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 .
Kako ti on kaze, tako je i amin .
|
|
|
|
Poslao: 02 Apr 2007 12:23
|
offline
- loshmi_sr
- Građanin
- 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.
|
|
|
|
|
Poslao: 02 Apr 2007 13:19
|
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
|
|
|
|
Poslao: 02 Apr 2007 14:40
|
offline
- loshmi_sr
- Građanin
- 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.
|
|
|
|
Poslao: 03 Apr 2007 10:24
|
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
Dopuna: 03 Apr 2007 10:24
PS hvala svima na savetima mislim da ce mi pomoci za dalje
|
|
|
|
Poslao: 03 Apr 2007 10:33
|
offline
- Strog
- 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!
|
|
|
|
Poslao: 03 Apr 2007 11:03
|
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
|
|
|
|
Poslao: 03 Apr 2007 11:29
|
offline
- loshmi_sr
- Građanin
- 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.
|
|
|
|