Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 6 odgovora
  • 4.092 pregleda

Najnovija ↓

Problem oko brisanja podatka iz baze Access? 08.06.2006. u 16:35 · pre 248 meseci #1
Pomozite ljudi nikako da riješi ovaj problem,
trebao bi napraviti bazu (Access) u kojoj će se vrtjet 10000 podataka, znači kad uđe 10001 da se 10000 izbriše, kako da to napravim ??
Pokušao sam sa datasetom ali je to previše podataka pa ga adapter u jednoj operaciji ne uspije napuniti provjeriti dali ima u njemu 10000 pod. i ako je narasao za jedan da ga obriše...
Mislim da bi bilo bolje to riješit sa Command-om ,

Code:
     Dim kom1 As New System.Data.OleDb.OleDbCommand("SELECT COUNT(*) FROM DNTTransakcije", konekcija)


ali kako sa reći da ako je broj 10000 izbriši prvoga??
ili ima neko bolje rješenje?
HVALA puno
Re: Problem oko brisanja podatka iz baze Access? 08.06.2006. u 18:36 · pre 248 meseci #2
Treba ti ovaj SQL, moras da imas AutoNumber polje u tabeli (ovde je ID, ti verovatno imas vec neko drugo), ovime ce ti se transaction tabela ponasati kao FIFO i zadrzati samo 10000 najsvezijih transakcija (pozivas je nakon sto insertujes 10001 red.


Code:

delete from DNTTransakcije
where ID not in (SELECT TOP 10000 ID
FROM DNTTransakcije
order by ID desc);


Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Problem oko brisanja podatka iz baze Access? 08.06.2006. u 23:14 · pre 248 meseci #3
Hvala mmix,
imam još jedno pitanjce, kako riješiti problem ID-jeva, ako radim ovako sa brisanjem prvoga kad u bazu stigne 10001 onda če mi ID rasti u nedogled, znači oni če rasti, a ja ću one prve brisat....kako to rješavate? Dali se da izvest da ih nakon nekog vremena resetiram na počenu vrijednost da krenu od nule?
I do koliko mogu rasti...inače za ID imam posebnu kolonu u kojem je autonumber, nemogu neku već postojeću kolonu upotrijebit jer nemaaju jedinstvene podatke!
HVALA
Re: Problem oko brisanja podatka iz baze Access? 08.06.2006. u 23:57 · pre 248 meseci #4
Citat:
Bojan11: Hvala mmix,
Dali se da izvest da ih nakon nekog vremena resetiram na počenu vrijednost da krenu od nule?
I do koliko mogu rasti...inače za ID imam posebnu kolonu u kojem je autonumber, nemogu neku već postojeću kolonu upotrijebit jer nemaaju jedinstvene podatke!
HVALA


Iskreno ne resava se, sve zavisi od toga koliko ce redova ulaziti u bazu za lifetime aplikacije. Ako prelazi 2 milijarde onda AAutoNumber (Long) nije dovoljan :) i mora da se koristi neko drugo resenje, ali u praksi je to bas bas retko. Cak i ako uzmes u jednom trenutku i re-key sve redove da krenu od nula (mada sumnjam da access dozvoljava takvo nesto), autonumber polje ce i dalje imati svoj counter koji ne mozes promeniti. Alternativno, mozes da kreiras novu temp tabelu sa istim kolonama, iskorpiras svojih 10000 transakcija (onda ce IDevi krenuti od 1) i na kraju obrises staru tabelu a novu preimenujes u DNTTransakcije, ali ovo je sve manualno odrzavanje.

Ako vec imas Autonumber kolonu iskoristi nju u gornjoj skripti.
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: Problem oko brisanja podatka iz baze Access? 20.06.2006. u 02:24 · pre 248 meseci #6
Ovo sa privremenom tabelom bi moglo da se izvede ako se ne narušava referencijalni integritet. Jel ima neko alternativno rešenje ako se tako narušava?
Potpis
Winners never quit, quitters never win.
Re: Problem oko brisanja podatka iz baze Access? 21.06.2006. u 15:27 · pre 247 meseci #7
Posto vec postoji AutoID polje:

Dim kom1 As New System.Data.OleDb.OleDbCommand("SELECT COUNT(*) FROM DNTTransakcije", konekcija)
Dim n as Integer
n = kom1.ExecuteScalar()
If n = 1000 Then
Kom1.CommandText = "DELETE FROM DNTTransakcije Where AutoID = (SELECT MIN(AutoID) FROM DNTTransakcije)"
Kom1.ExecuteNonQuery()
ENd if


Potpis
Misa Simic
MCSD .NET
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme