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

Kako bi ste resili ovaj problem?

[es] :: Pascal / Delphi / Kylix :: Kako bi ste resili ovaj problem?

[ Pregleda: 1061 | Odgovora: 11 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

MatezYU
NS

Član broj: 4114
Poruke: 911
*.adanet.co.yu.

Sajt: www.matezyu.byethost6.com


Profil

icon Kako bi ste resili ovaj problem?09.05.2007. u 06:59

Dakle ovako, imam csv fajl i treba da napravim program za editovanje i zmenu tog fajla.. Podaci u njemu su u relaciji, recimo ovako:
A,ime i prezime,ulica i broj,mesto
B,naziv filma,cena
B,naziv filma,cena
A,ime i prezime,ulica i broj,mesto
B,naziv filma,cena
A,ime i prezime,ulica i broj,mesto
B,naziv filma,cena
B,naziv filma,cena
B,naziv filma,cena
B,naziv filma,cena
B,naziv filma,cena

itd.. Dakle kontate kako je to u relaciji. Kako da odradim da podatke iz reda A vidim u jednom dbgridu a podatke iz B u drugom. I da su oni u relacji.
09.05.2007. u 06:59 

aleksandarpopov
Software developer
Senta

Član broj: 57172
Poruke: 478
195.178.33.*

Sajt: www.linkedin.com/in/aleks..


Profil

icon Re: Kako bi ste resili ovaj problem?09.05.2007. u 08:26
XML i ClientDataSet
RTFM
09.05.2007. u 08:26 

MatezYU
NS

Član broj: 4114
Poruke: 911
*.adanet.co.yu.

Sajt: www.matezyu.byethost6.com


Profil

icon Re: Kako bi ste resili ovaj problem?09.05.2007. u 08:58
Ajde mi pojasni..
Ja sam odradio ovako, uzeo sam absolute database komponentu, odradio tako da kada se pokrene program kreira 2 tabele i puni preko tog fajla te tabele i onda ih stavlja u relaciju.. Zakomplikovao.. Ajde mi pojasni kako da odradim to..
09.05.2007. u 08:58 

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 2835
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Kako bi ste resili ovaj problem?09.05.2007. u 09:54
CSV fajl beše običan ASCII fajl sa zarezima kao graničnicima?

Ja bih napravio jednu sasvim praznu MS Access BAZU sa dve tabele u njoj
i unapred postavljenoj master-detail relaciji OSOBA -> FILM.

Tabela 1 (OSOBA):
1. ID (autoincrement, PK)
2. ime i prezime
3. ulica i broj
4. mesto

Tabela 2 (FILM):
1. ID_FK (spoljni ključ ka ID-ju tabele 1)
2. naziv filma
3. cena

CSV fajl bih tretirao kao najobičniju CONFIG datoteku, i inicijalno čitanje bih odradio
kako bih odradio, na primer preko TStringList-e.

Dalje bi išlo sve preko DB Data-Aware komponenti. S obzirom da se podaci upisuju odmah,
ne bi bilo problema oko pucanja pograma/nestanaka struje i gubitka podataka.

Dalje, pre učitavanja u MS ACCESS bazu, trebalo bi vršiti proveru da li je EXPORT i pražnjenje
u CSV od prethodnog puta bio u redu i eventualno da li je datum CSV fajla noviji od datuma
u MDB fajlu, pa da se vidi šta dalje, i sl.

FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
09.05.2007. u 09:54 

MatezYU
NS

Član broj: 4114
Poruke: 911
*.adanet.co.yu.

Sajt: www.matezyu.byethost6.com


Profil

icon Re: Kako bi ste resili ovaj problem?09.05.2007. u 10:04
Meni taj fajl nije xml fajl nego obican csv fajl..
09.05.2007. u 10:04 

MatezYU
NS

Član broj: 4114
Poruke: 911
*.adanet.co.yu.

Sajt: www.matezyu.byethost6.com


Profil

icon Re: Kako bi ste resili ovaj problem?09.05.2007. u 10:13
Tako sam i ja radio. E sada interesuje me da li postoji neko "elegantnije" resenje?
09.05.2007. u 10:13 

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 2835
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Kako bi ste resili ovaj problem?09.05.2007. u 10:43
Koliko vidim, CSV fajl koji si pokazao (koga pretpostavljam moraš da imaš jer
je deo nekog većeg monolitnog "sistema" u pozadini) lici na klasicnu bazu podataka,
a to dalje znaci da ima tendenciju da se zahtevi prosiruju. To znam iz iskustva.

U takvim okolnostima, ja nemam dilemu...

Relacioni model koji ti nudi bilo koja baza (MDB recimo):

1. pri samom citanju i inicijalnom upisu izvrsice proveru integriteta
2. u samom radu sa bazom te rasterecuje pitanja o Integritetu baze
3. cuva podatke FIZIČKI na disku, a ne samo u RAM-u
4. omogućuje korišćenje DB Aware kontrola
5. olaksava se geniranje izveštaja jer neki alati za izveštaje se oslanjaju
na postavljenu master/detail vezu pa sami dalje znaju šta da rade

... itd.

Teško je definisati elegantno. Manje koda ne znači i eleganciju, pogotovo
kada stavri krenu da se usložnjavaju, pa elegancija preraste u frankeštajna
od koda.

Ovde je jedini problem šta ako se CSV fajl promeni, a ti nisi izvršio EXPORT
nazad u taj isti CSV fajl.

To što je rekao aleksandarpopov isto može biti elegantno rešenje. XML bi ti
omogućio jedan fajl, a poseduje mogućnost iteracije kroz strukturu, ali o tome
neka neko drugi priča (ko ima više iskustva sa XML-om).

FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
09.05.2007. u 10:43 

Miloš Baić

Član broj: 72468
Poruke: 1123
*.dialup.neobee.net.

Sajt: www.2advanced.com


Profil

icon Re: Kako bi ste resili ovaj problem?09.05.2007. u 11:17
Nešto slično sam davno isprobao. Kombinacija je bila TClientDataSet i .cds fajl, tj. binarni .xml. Preporučio bih ti ovu varijantu ako se projekat sastoji iz dve tabele (A, B) koje su u relaciji. Mada, može i nešto složenije, zavisi koliko bi vodio računa o svemu.

Trebala bi ti dva .xml fajla (.cds), jedan za jednu tabelu, drugi za drugu, te Master/Detail strukturu napraviti bi bio trivijalan problem.
If you go out of your mind, do it quietly, so as not to disturb those around you...
09.05.2007. u 11:17 

MatezYU
NS

Član broj: 4114
Poruke: 911
*.adanet.co.yu.

Sajt: www.matezyu.byethost6.com


Profil

icon Re: Kako bi ste resili ovaj problem?09.05.2007. u 11:31
Misliš da bi trebalo da kreiram dva temp fajla u TClientDataSet-u i da ih vežem da budu u relaciji pa da ih punim iz onog csv fajla?
09.05.2007. u 11:31 

Miloš Baić

Član broj: 72468
Poruke: 1123
*.dialup.neobee.net.

Sajt: www.2advanced.com


Profil

icon Re: Kako bi ste resili ovaj problem?09.05.2007. u 12:56
@MatezYu

Vidi ovako, kad mi nešto nije jasno, vratim se na prvi post, da ponovo pročitam pitanje. Sad, nije mi jasno da li ti podatke imaš u CSV fajlu pa želiš samo ih importovati u bazu, te napraviti Master/Detail strukturu, ili imaš CSV fajl koji ćeš direktno puniti iz svoje aplikacije, ručno?

Sad sam video, u sklopu JEDI projekta, imaš komponentu koja se zove TJvCsvDataSet, u sklopu JVCL foldera primer JvCSVDataSet.
Imaš primer unosa u csv fajl i importovanja podataka iz istog. Pogledaj, ne bi trebalo biti problema.
If you go out of your mind, do it quietly, so as not to disturb those around you...
09.05.2007. u 12:56 

MatezYU
NS

Član broj: 4114
Poruke: 911
*.adanet.co.yu.

Sajt: www.matezyu.byethost6.com


Profil

icon Re: Kako bi ste resili ovaj problem?10.05.2007. u 06:01
To sam vec uradio, dakle iskoristio sam tu JEDI komponentu za citanje podataka iz csv fajla. Zatim punim dve tabele koje koje su u relaciji i kada napravim izmene onda punim opet taj csv fajl ali kontra, idem kao save as.. i preko onog starog ponovo iz cele baze citam rekorde i punim csv fajl.. Drugacije nisam uspeo da resim.
Interesovalo me samo da li postoji neko resenje recimo da direktno pristupam csv fajlu kao bazi bez tog exporta i importa u lokalnu bazu na racunaru. Da li postoji neka komponenta ili neko resenje koje moze strukturu toj csv fajla da prepozna kao bazu?
10.05.2007. u 06:01 

Miloš Baić

Član broj: 72468
Poruke: 1123
*.dialup.neobee.net.

Sajt: www.2advanced.com


Profil

icon Re: Kako bi ste resili ovaj problem?10.05.2007. u 10:10
Nisam se previše udubio u primer sa CSV fajlom, ali umesto SaveToFile možeš nešto vako odraditi:
Code:

  with JvCsvDataSet do
   begin
    Insert;
     FieldByName('ID').AsInteger:= StrToInt(Edit3.Text);
     FieldByName('LASTPHONECALL').AsString:= Edit4.Text;
     FieldByName('PRIVATENUMBER').AsBoolean:= StrToBool(Edit5.Text);
    Post;
   end;
//refresh

Inverzno od toga:
Code:

  with JvCsvDataSet do
   begin
    Edit;
     FieldByName('ID').AsInteger:= StrToInt(Edit3.Text);
     FieldByName('LASTPHONECALL').AsString:= Edit4.Text;
     FieldByName('PRIVATENUMBER').AsBoolean:= StrToBool(Edit5.Text);
    Post;
   end;
//refresh


If you go out of your mind, do it quietly, so as not to disturb those around you...
10.05.2007. u 10:10 

[es] :: Pascal / Delphi / Kylix :: Kako bi ste resili ovaj problem?

[ Pregleda: 1061 | Odgovora: 11 ]

Postavi temu Odgovori

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