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

import podataka u bazu iz fajla....

[es] :: Firebird/Interbase :: import podataka u bazu iz fajla....

[ Pregleda: 3190 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

enes omeragic

Član broj: 45562
Poruke: 70
*.smin.sezampro.yu.



Profil

icon import podataka u bazu iz fajla....31.07.2006. u 07:26 - pre 215 meseci
Firebird bazi pristupam dbexpres komponentama (sqlconection,sqldataset) i sa (datasetprovader,clientdataset). Kada rucno upisujem podatke u clientdataset i iste hocu da zapisem u bazu (clientdataset.applyupdates(-1)) sve radi bez problema. Medjutim kada podatke ucitam u clientdataset iz xml fajla...dobijem ih u dbgrid ali da upisem u bazu nemogu,ne izbaci mi nikakvu gresku ali ih i ne upise. Gde gresim? Hvala...
 
Odgovor na temu

delalt

Član broj: 68360
Poruke: 198
*.teol.net.



Profil

icon Re: import podataka u bazu iz fajla....31.07.2006. u 16:48 - pre 215 meseci
Ovo ti je više pitanje za Pascal/Delphi/Kylix podforum. Isto bi se dešavalo da
koristiš i neki drugi RDBMS a ne Firebird.
Kad podatke u ClientDataSet učitaš iz nekog fajla, on prekida vezu sa bazom.
Jedan od načina da ovo riješiš je da runtime kreiraš još jedan CDS2, učitaš u njega
podatke iz fajla sa LoadFromFile..., a onda prolaziš taj CDS2 od prvog do zadnjeg
zapisa i prepisuješ u onaj CDS koji je inače ostao "povezan" na bazu (preko Providera...).
Kad malo razmisliš, ovo je i normalno, iz više razloga...
 
Odgovor na temu

enes omeragic

Član broj: 45562
Poruke: 70
*.yu
Via: [es] mailing liste



Profil

icon Re: import podataka u bazu iz fajla....01.08.2006. u 07:18 - pre 214 meseci
>
>Probao sam tako kako si rekao ali mi izbacuje gresku 'mismatch'.Povezao sam
>dva cds-a preko jos jednog provajdera. Pronasao sam resenje preko ems data
>import programa. Ali bih voleo da to uradim i iz svoje aplikacije. Hvala u
>svakom slucaju...
 
Odgovor na temu

delalt

Član broj: 68360
Poruke: 198
*.teol.net.



Profil

icon Re: import podataka u bazu iz fajla....01.08.2006. u 09:16 - pre 214 meseci
Nismo se razumjeli, pomoćni CDS2 je totalno samostalan, ne vežeš ga ni za šta drugo
(osim za nekakav pomoćni DBGrid ako želiš da vidiš šta je učitano iz fajla a prije upisa u CDS1
i bazu). On samo služi da učitaš fajl.
Code:
CDS2.LoadFromFile('c:\...\fajl.cds');

Zatim ako želiš da ga prepišeš u CDS1 (i u bazu) onda uradiš ovo:
(podrazumijeva se da je ovaj CDS1 preko Provider-a i ostalog spojen na bazu i da možeš preko
njega čitati i upisivati podatke u bazu, kao što si već opisao ranije)
Code:
CDS2.First;
CDS1.Active := True;     // ovaj CDS1 učitava već postojeće podatke iz tabele u bazi (ako ih ima) 
CDS1.Last;
while not CDS2.Eof do 
  begin
    CDS1.Insert;
    CDS1.FieldByName('polje1').AsString := CDS2.FieldByName('polje1').AsString;
    CDS1.FieldByName('polje2').AsString := CDS2.FieldByName('polje2').AsString;
    // ............. dodaš isto za polja koja želiš ili sva polja
    CDS1.Post; 
    // ako hoćeš da ti odmah zapisuje u bazu onda u CDS1.AfterPost dodaš ono ApplyUpdates(-1) ...
    // ovdje kontolišeš da nije dupli itd...
    CDS2.Next;
end; 
CDS2.Close;    // ovaj CDS2 ti više ne treba
// dobio si dopunjene podatke u CDS1 i upisane u bazu 

 
Odgovor na temu

enes omeragic

Član broj: 45562
Poruke: 70
*.yu
Via: [es] mailing liste



Profil

icon Re: import podataka u bazu iz fajla....01.08.2006. u 09:51 - pre 214 meseci
>
>To se trazilo. Nisam skontao prosli put bas najbolje. Ali evo sada radi.
>Hvala puno...
 
Odgovor na temu

marcha
Nikola Marcic
Beograd/Leskovac

Član broj: 6454
Poruke: 108
*.236.eunet.yu.

ICQ: 156892888


+1 Profil

icon Re: import podataka u bazu iz fajla....01.08.2006. u 23:29 - pre 214 meseci
Evo ti ove dve metodice kojima sam sebi x puta olaksao posao prepisivanja podataka iz datasetova koji su slicnih struktura. Kopiraju se podaci iz polja izvornog dataseta (SRC) u ciljni (DEST) ako su im nazivi polja isti.

Code:

procedure CopyDbRow(Src, Dest:TDataSet);
var
  i:integer;
  f:TField;
begin
  for i:=0 to Src.FieldCount-1 do //prolazimo kroz sva polja izvornog dataseta
  begin
     f:=Dest.FindField(Src.Fields[i].FieldName);
     if f<>nil then //provera da li polje iz izvornog dataseta postoji u ciljnoj
       f.Value:=Src.Fields[i].Value;
  end; 
end;

procedure CopyTable(Src,Dest:TDataSet);
begin
 try
   Src.Open;
   while not Src.Eof do
   begin
      Dest.Insert;
      CopyDbRow(Src,Dest); 
      Dest.Post;
      Src.Next;
   end;
 finally
   Src.Close;
 end;
end;


primenjeno na kod koji ti je dao delalt:

CDS2.LoadFromFile('c:\...\fajl.cds');
CopyTable(CDS2,CDS1);



Marcha
-----------------------------------
Pretpostavka je majka zajeba.
 
Odgovor na temu

[es] :: Firebird/Interbase :: import podataka u bazu iz fajla....

[ Pregleda: 3190 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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