Newsgroup: it.comp.appl.access
Titolo: query di eliminazione di 1 record duplicato

Ciao a tutti,
ho una tabella in cui sono confluiti dati da diverse origini con questa
struttura:
id-rivista                url-rivista                      titolo-rivista
1122                      
www.libri.com
             i libri
1122                      
www.ilibri.it
                 I libri
1133                      
www.leggi.com
           lettura oggi
1133                      
www.lettura.net
           Lettura Oggi
id-rivista dovrebbe essere la chiave della tabella, ma in realtà ci sono
molti record duplicati in quanto il titolo e/o l'URL sono leggermente
diversi (è stato fatto un accodamento). A me basta prendere il contenuto dei
campi url-rivista e titolo-rivista da uno qualunque dei due record per
ottenere una cosa del genere:
1122                      
www.libri.com
             i libri
1133                      
www.leggi.com
           lettura oggi
e avere id-rivista come chiave.
Ho provato con query di join e delete, ma sono solo riuscita a cancellare
tutti i records duplicati e non è quello che voglio.
Se qualcuno può aiutarmi, grazie in anticipo.
Bye.
Ilaria

 ha scritto nel messaggio
news:8lpcn4$14c$1...@news.cineca.it...

Creati nella tabella un campo di tipo contatore che puoi chiamare
ID_Tabella_Riviste è che dichiarerai come chiave primaria; ciò ti permetterà
di risolvere il problema di poter avere in tabella più record con lo stesso
ID_Rivista.
Per la ricerca e/o l'estrazione dei dati dalla tabella adopera la funzione
DLookup, impostando i criteri della funzione su ID_Rivista; se la DLookup
avrà esito positivo, si posizionerà a caso su uno dei due o più record che
soddisfano i criteri.
Roberto


mi dici come imposteresti il ciclo sulla tabella origine?
Grazie
Ilaria

 ha scritto nel messaggio
news:8lrenq$6u8$1...@news.cineca.it...

Mi viene il dubbio di non aver capito nulla di quello che ti serve, temo
pertanto di essere andato fuori tema con la mia prima risposta.
Prendendo in considerazione anche la seconda parte del tuo quesito, mi viene
un ragionevole dubbio che tu voglia produrre un recordset dove non esistono
duplicati nel campo Id_Rivista: se così è prova con una query che ha il
seguente codice SQL:
SELECT Tabella1.Id_Rivista, First(Tabella1.URL_Rivista) AS
PrimoDiURL_Rivista, First(Tabella1.Titolo_rivista) AS PrimoDiTitolo_rivista
FROM Tabella1
GROUP BY Tabella1.Id_Rivista
ORDER BY Tabella1.Id_Rivista;
Resta il fatto che nella tua "tabella origine" (che chiamo Tabella1) devi
mettere come chiave primaria un campo contatore che potrebbe chiamarsi
ID_Tabella_Riviste.
Se non è neppure questo che vuoi, per me devi spiegarti un pochino meglio.
Roberto


Se anziché la soluzione che ti ho dato, basata su una query, preferisci
duplicare la tua "tabella origine" (Tabella1) in una "tabella risultato"
(Tabella11) che abbia IdRivista come chiave primaria, a fronte
dell'evento "Su clic" di un pulsante comando di una maschera genera il
seguente codice VBA:
Private Sub Comando0_Click()
Dim Trova As Variant
Dim dbIlaria As Database
Dim rcdTabellaOrigine As Recordset
Dim rcdTabellaRisultato As Recordset
Set dbIlaria = CurrentDb()
Set rcdTabellaOrigine = dbIlaria.OpenRecordset("Tabella1")
Set rcdTabellaRisultato = dbIlaria.OpenRecordset("Tabella11")
MsgBox "Inizio Elaborazione"
DoCmd.Hourglass (True)
Do Until rcdTabellaRisultato.EOF
    rcdTabellaRisultato.Delete
    rcdTabellaRisultato.MoveNext
Loop
Do Until rcdTabellaOrigine.EOF
    Trova = DLookup("Id_Rivista", "Tabella11", "Id_Rivista=" &
rcdTabellaOrigine![Id_Rivista])
    If IsNull(Trova) Then
        rcdTabellaRisultato.AddNew
        rcdTabellaRisultato![Id_Rivista] = rcdTabellaOrigine![Id_Rivista]
        rcdTabellaRisultato![url_Rivista] = rcdTabellaOrigine![url_Rivista]
        rcdTabellaRisultato![titolo_Rivista] =
rcdTabellaOrigine![titolo_Rivista]
        rcdTabellaRisultato.Update
    End If
    rcdTabellaOrigine.MoveNext
Loop
DoCmd.Hourglass (False)
MsgBox "Fine Elaborazione"
End Sub
Naturalmente devi dichiararti la struttura di Tabella11 prima di eseguire il
codice VBA, che prima la svuota e poi la riempie.
Roberto


Perfetto era proprio questo che volevo; provato, funziona!!!!!!!!!!!
Grazie 1000.
Bye.
Ilaria

 ha scritto nel messaggio
news:8m3ap2$hp3$1...@news.cineca.it...

Prego, alla prossima
Roberto