[ Veljash @ 14.08.2009. 13:09 ] @
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
"
[ Scelle @ 14.08.2009. 13:20 ] @
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
[ Getsbi @ 14.08.2009. 13:36 ] @
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]
[ Veljash @ 17.08.2009. 07:20 ] @
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!
[ Scelle @ 17.08.2009. 15:30 ] @
Uh, bas ti ne zavidim... Srecno
[ Veljash @ 17.08.2009. 22:59 ] @
Hvala! Snašao sam se nekako!:)