[ DART_VEJDER @ 07.05.2006. 23:33 ] @
| postoji li neki drugi nacin da uradim ovo:
imam jednu formu na kojoj imam dva ADOTable-a. jedan je povezan na jednu bazu (jedan fajl) a drugi ADOTable na drugu bazu (drugi fajl)
znaci imamo 2 odvojene baze...
Prva baza, tj. tabela na koju je "zakacen" ADOTable1 ima neke zapise, a tabela na koju je "zakacen" ADOTable2 je prazna.
meni treba da iskopiram sve zapise iz ADOTable-a1 u ADOTable2... tj. bukvalno da prekopiram zapise tabele 1 u tabelu 2 koja se nalazi u drugoj bazi na HDD-u...
ja sam to uradio ovako:
/////////Button1Click :
Code:
ADOTable2->Insert();
for(int i=1;i<=ADOTable1->RecordCount;i++)
{
ADOTable2->Insert()
ADOTable2->FieldByName("ID")->AsInteger=ADOTable1->FieldByName("ID")->AsInteger;
ADOTable2->FieldByName("ime")->AsString=ADOTable1->FieldByName("ime")->AsString;
ADOTable2->FieldByName("prezime")->AsString=ADOTable1->FieldByName("prezime")->AsString;
ADOTable2->FieldByName("god")->AsString=ADOTable1->FieldByName("god")->AsString;
ADOTable1->Next();
}
ADOTable2->Edit();
ADOTable2->Post();
///////////kraj.
ovo radi, ali me interesuje kako bi vi ovo uradili...
osim toga, ima li neki vec gotov metod koji bi mogao ovo odraditi .... |
[ X Files @ 08.05.2006. 13:07 ] @
Ja bih tabelu kopirao preko SQL upita INSERT ... INTO, dakle:
// Netestirano !!!
INSERT INTO Tabela2 (POLJE1, POLJE2, POLJE3)
SELECT T1_POLJE1, T1_POLJE2, T1_POLJE3
FROM Tabela1
Ne zaboravi da se taj ADO upit pokrece sa ExecSQL(), a ne sa Open(). Takodje ne zaboravi da
ako je neka od tih tabela povezana sa nekom vizuelnom (data-aware) kontrolom, prethodno uradis
DisableControls() i na kraju EnableControls() nad tim tabelama/tabelom:
Table1->DisableControls();
// UPIT ExecSQL()
Table1->EnableControls();
Nisam pri racunaru koji ima instaliran BCB, ali pogledaj da li u okviru TADOTable postoji metoda
Batch(), koja ima vise funkcija tipa brisanja, kopiranja i sl. Znam da je to postojalo u BDE, ali
nisam siguran za ADO, jer se ne secam da sam to vidjao...
[ itf @ 08.05.2006. 17:16 ] @
Svaka tablica ima varijable za svaki stupac (napraviš dvoklik na ADOTable i desnim klikom na Add fields.."). I to možeš iskoristiti za kopiranje:
Code:
T1->First(); // kreni od prvog zapisa
for(int i = 1; i <= T1->RecordCount; i++){
T2->Append();
T2ID->Value = T1ID->Value;
T2Ime->Value = T1Ime->Value;
T2Prezime->Value = T1Prezime->Value;
T2God->Value = T1God->Value;
T2->Post();
T1->Next(); //prijeđi na sljedeći zapis
}
[ X Files @ 08.05.2006. 19:54 ] @
Ako koristis MS ACCESS bazu onda su tabele definitivno u JEDNOJ bazi.
Pa cak i kod DBF fajlova, kod kojih je svaka tabela poseban fajl, svejedno, upit
ce ta na osnovu naziva tabele (tj fajla) uzme sve sto treba i izvrsi kopiranje.
Sta ti nije dalo rezultate? Svi primeri su jednostavni...
[ X Files @ 08.05.2006. 19:55 ] @
@fucking voodoo
Izbrisao si post?
[Ovu poruku je menjao X Files dana 08.05.2006. u 20:56 GMT+1]
[ DART_VEJDER @ 08.05.2006. 23:07 ] @
@itf:
pa ja sam i uradio sta si ti ovdje napisao....
@X Files
ja pricam o 2 fajla kao: jedan je na C:\temp\prvi.mdb
a drugi je na D:\neki_folder\drugi.mdb
a i jedan i drugi imaju identicnu tabelu.
Kako onda tu da iskoristim SQL upit?? mislim da je ovako onda najlakse i najbolje...
ako imate jos kakav predlog, ili da me demantujete ...izvolite...
[Ovu poruku je menjao DART_VEJDER dana 09.05.2006. u 00:07 GMT+1]
[ X Files @ 10.05.2006. 16:50 ] @
Ako je vec tako, onda samo petlja (kao sto si pokazao).
[ DART_VEJDER @ 11.05.2006. 18:36 ] @
kada ovako kopiram tabele desava se jedna jako cudna stvar:
zamislio sam da iz jednog programa kopiram prvu tabelu u drugu bazu kojoj mogu pristupiti iz jednog drugog programa.
ja uradim prvi put kopiranje, podaci se iskopiraju, pomocu onog programa normalno pristupim i vidim podatke.
iskopiram drugi put, podaci se iskopiraju, ali se iz onog programa nista ne vidi IAKO SU SE PODACI SVI ISKOPIRALI!!!!
i tako svaki sljedeci put: treci put radi normalno, cetvrti put ne....
u cemu je stvar???
[ DART_VEJDER @ 12.05.2006. 21:41 ] @
problem rijesen pomocu SQL upita:
insert * into IME_TABELE in ODREDISNA_BAZA from IME_TABELE in POCETNA_BAZA
(ako ista tabela vec ne postoji u odredisnoj bazi)
[ X Files @ 12.05.2006. 21:52 ] @
Odlicno.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.