Citat:
spartak: Evo kako ja za sada razumem ono sto ti radis:
txt CSV -1-> Access -2-> sad koristis te podatke drugom aplikacijom
Dopunsko pitanje za korak 1 glasi: "Da li odradjujes bilo kakvu poslovnu logiku pri punjenju Access baze, to jest da li transformises u prvom koraku podatke na bilo koji nacin?"
U slucaju da je odgovor ne, licno ne vidim razlog da prepumpavas podatke .NET aplikacijom. Zasto direktno ne importujes file u Access sa GetExternalData?
Za sad se to slaže s onim što sam napisao, ali ranije nisam naveo da tekst koji daje centrala nije CSV, već su podaci fiksne dužine, bez separatora, i što je još gore s vremena na vreme se ubacuju neki karakteri koji kvare strukturu zapisa. Tako da sam već napravio program koji od tog txt fajla generiše CSV, i u njega ubacuje neke dodatne informacije kojih nema u originalnom fajlu (naziv mesta koje je pozvano, tarifnu klasu, ...).
CSV sam naveo jer mi nije potreban način na koji ću izvući podatke iz originalnog fajla, već način na koji da ubrzam čitav proces, a u konačnoj verziji se uopšte neće ni pojavljivati, ali sad se CSV kreira za oko 2.5s, a podaci prebacuju u bazu (uz isti kod) za oko 40s (a u VC++ za oko 5s - u praznu bazu, uz MFC kod).
GetExternalData mi ne radi posao, jer je fajlove potrebno obrađivati bar jednom dnevno, što često neću raditi ja već neko od tehničara, a za to je mnogo lakše i elegantnije rešenje da kliknu na digme, i izaberu mesec i godinu na koje se odnose podaci.
Citat:
mmix: Ne moras da koristis SQL bazu, dovoljno da imas SQL instaliran. Onda iz njega napravis DTS paket koji ce ti source text file importovati u Access bazu. Za sve ovo ti ne treba linija koda. To je sto se tice najlakse i verovatno najbrze opcije. :)
Medjutim, ako bas hoces da se igras sa C#-om, odgovor lezi u DataAdapteru. Mozes da koristis OdbcDataAdapter koji ide preko ODBCa, ili (preporucujem) preko OldDbDataAdapter-a, koji je brzi i napredniji (posto je OleDB bolji od ODBCa). A pre svega, potreban ti je DataSet koji ces puniti podacima iz koda.
Najlaksi nacin da napravis sve sto ti treba je da kao prvo napravis konekciju sa Access bazom u "Server Explorer" toolboxu koristeci Jet OLEDB provider
Dalje, iz Server explorera prebaci tabelu na Form, to ce ti na formi krerati konekciju i OleDbDataAdapter sa svim odgovarajucim komandama (select/insert/update/delete).
Desno dugme misa na DataAdapter na formi i izaberi "Generate dataset"; iz wizarda izaberi New, daj mu neko ime, iz liste tabela izaberi svoju (verovatno ce biti samo jedna ako nemas druge adaptere na formi) i cekiraj "Add this dataset to the designer". To ce ti u projekat dodati .xsd fajl sa semom koja odgovara semi tabele u bazi, a na formu dodati instancu tog dataseta
U kodu forme jednostavno punis dataset do mile volje i kad zavrsis sa svim unosima i hoces da prebacis dataset u bazu, samo pozovi Update metod DataAdaptera i kao parametar prosledi instancu DataSet-a.
Probaću ovo rešenje negde iduće sedmice (kažu da ne valja raditi posao kod kuće), pa ću javiti da li je bilo ubrzanja u procesu, i kolika su.
U svakom slučaju, hvala na trudu.