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

Access 2007 brisanje duplikata

[es] :: Access :: Access 2007 brisanje duplikata

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

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Veljash

Član broj: 129608
Poruke: 6
*.static.sbb.rs.



Profil

icon Access 2007 brisanje duplikata14.08.2009. u 13:09 - pre 178 meseci
Imam dve tabele u bazi podataka, u jednoj tabeli imam dosta unosa koji se nalaze i u drugoj tabeli pa bih hteo da ih obrišem.
Našao sam vb kod na netu, on mi je pomogao da obrišem duplikate u okviru jedne tabele, ne znam da programiram u vbu ali mislim da treba samo malo da se doradi ovaj kod da bih mogao da ga koristim sa dve tabele.

Zna li neko!!! Hitno mi je potrebno!!


"
Option Compare Database
Option Explicit

Sub Remove_Duplicates()

'change "**Duplicates**" to target table name (leave perins)
'change "**Duplicate_ID**" to column name containg the duplicate information


Dim str_Duplicate_column(2) As String

str_Duplicate_column(1) = "**Duplicate_ID**"
str_Duplicate_column(2) = "**Duplicate_ID**"

Call Remove_Duplicates_Leave_One("**Duplicates**", str_Duplicate_column)

End Sub

Sub Remove_Duplicates_Leave_One( _
pstr_Target_Table As String, _
pstr_Duplicate_Column() As String)

Dim dbs As DAO.Database
Dim rst As DAO.Recordset

Dim str_sql As String

Dim var_Current_Value(2) As Variant
Dim var_Previous_Value(2) As Variant

Set dbs = Access.CurrentDb

pstr_Target_Table = "[" & pstr_Target_Table & "]"

pstr_Duplicate_Column(1) = "[" & pstr_Duplicate_Column(1) & "]"
pstr_Duplicate_Column(2) = "[" & pstr_Duplicate_Column(2) & "]"

'Orders recordset so duplicates are sequential
str_sql = _
"SELECT " & _
pstr_Duplicate_Column(1) & "," & _
pstr_Duplicate_Column(2) & " " & _
"FROM " & _
pstr_Target_Table & " " & _
"ORDER BY " & _
pstr_Duplicate_Column(1) & "," & _
pstr_Duplicate_Column(2)

Set rst = dbs.OpenRecordset(str_sql, dbOpenDynaset)

Do While Not rst.EOF

var_Previous_Value(1) = rst(pstr_Duplicate_Column(1))
var_Previous_Value(2) = rst(pstr_Duplicate_Column(2))

rst.MoveNext

Delete_Another_Duplicate_Maybe:

If rst.EOF Then Exit Do

var_Current_Value(1) = rst(pstr_Duplicate_Column(1))
var_Current_Value(2) = rst(pstr_Duplicate_Column(2))

If _
var_Previous_Value(1) = var_Current_Value(1) _
And _
var_Previous_Value(2) = var_Current_Value(2) _
Then

rst.Delete

rst.MoveNext

If Not rst.EOF Then

var_Current_Value(1) = rst(pstr_Duplicate_Column(1))
var_Current_Value(2) = rst(pstr_Duplicate_Column(2))

'var_Previous_Value will maintain original value
GoTo Delete_Another_Duplicate_Maybe:

End If

End If

Loop

End Sub
"
 
Odgovor na temu

Scelle
Slavko Šćekić
Student, Računarski fakultet
Beograd

Član broj: 151761
Poruke: 174
77.222.13.*



Profil

icon Re: Access 2007 brisanje duplikata14.08.2009. u 13:20 - pre 178 meseci
Ako su zapisi jednoznacno identifikovani kljucem (a sva pravila kazu da bi trebali da budu), onda mozes obrisati duplikate sledecim upitom:
Code:
DELETE FROM prvaTabela WHERE kljuc_U_Prvoj IN (SELECT kljuc_U_Drugoj FROM drugaTabela)

Naravno, podrazumijevam da su zapisi u jednoj tabeli IDENTICNI zapisima iz druge tabele, tj da jedan kljuc identifikuje isti zapis u obije tabele.

I ne mogu a da malo ne pametujem... Zasto ti se uopste javljau dupli podaci u bazi? Kao sto znas, baze podataka se i prave da se podaci ne bi nepotrebno ponavljali na vise mjesta. Mislim da treba ozbiljno da razmislis o ponovnom projektovanju baze, koja nece imati ovakve probleme. Ako treba pomoc, opisi situaciju malo detlajnije. Pozdrav

"Takozvani praktični ljudi bili bi korisni i zasluživali bi svaku pohvalu i poštovanje kad od te svoje praktičnosti ne bi hteli da naprave smisao života i razlog svoga opstanka, opravdanje za podjarmljivanje i terorisanje svih onih koji su lišeni toga praktičnog smisla, ali zato stvoreni za druge, možda više i bolje podvige."

Ivo Andric
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2831



+45 Profil

icon Re: Access 2007 brisanje duplikata14.08.2009. u 13:36 - pre 178 meseci
Ne treba ti VBA kod. Postoji par Wizarda u Query, New modu. Find Duplicates Query Wizard i Find Unmatshed Query Wizrad. Uz premeštanje u praznu tabelu sa istovetnom strukturom sve se može odraditi očas posla. Mada može da se napiše i Without Matching query pomoću Join Properties.

[Ovu poruku je menjao Getsbi dana 14.08.2009. u 14:47 GMT+1]
 
Odgovor na temu

Veljash

Član broj: 129608
Poruke: 6
*.static.sbb.rs.



Profil

icon Re: Access 2007 brisanje duplikata17.08.2009. u 07:20 - pre 178 meseci
U pitanju je baza podataka koju je napravio ArcGIS, i tabele nisu identifikovane ključem. Ove dve tabele sadrže informacije dva lejera na kojima su stubovi javnog osvetljenja, tako da predpostavljate koliko ima informacija (koordinata svakog stuba, podaci o svetiljci...). Prvi lejer je kao sređen, ali mi fali dosta lokacija, u drugi lejer su učitani svi podaci tako da ima gomila duplikata... ArcGIS je suviše spor za odklanjanje duplikata (satima radi) dok u Accessu to mogu da odradim za pet minuta. Ja sam bio zadužen za prikupljanje podataka, ne i za samu obradu, tako da je neko drugi bio zadužen za bazu podataka pa su meni uvalili da nastavim. I ja bih najradije krenuo izpočetka ali ima baš dosta posla...
A i na kraju sam provalio da mi se ne podudaraju koordinate, a ni vreme pozicioniranja a trebalo bi da bude isto, tako da mi sad ni Access ne može pomoći!

Hvala na pomoći!
 
Odgovor na temu

Scelle
Slavko Šćekić
Student, Računarski fakultet
Beograd

Član broj: 151761
Poruke: 174
77.222.13.*



Profil

icon Re: Access 2007 brisanje duplikata17.08.2009. u 15:30 - pre 178 meseci
Uh, bas ti ne zavidim... Srecno
"Takozvani praktični ljudi bili bi korisni i zasluživali bi svaku pohvalu i poštovanje kad od te svoje praktičnosti ne bi hteli da naprave smisao života i razlog svoga opstanka, opravdanje za podjarmljivanje i terorisanje svih onih koji su lišeni toga praktičnog smisla, ali zato stvoreni za druge, možda više i bolje podvige."

Ivo Andric
 
Odgovor na temu

Veljash

Član broj: 129608
Poruke: 6
93.87.222.*



Profil

icon Re: Access 2007 brisanje duplikata17.08.2009. u 22:59 - pre 178 meseci
Hvala! Snašao sam se nekako!:)
 
Odgovor na temu

[es] :: Access :: Access 2007 brisanje duplikata

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

Postavi temu Odgovori

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