Newsgroup: it.comp.appl.access
Titolo: Evitare l'inserimento di duplicati e ricerca su campi multipli

Buonasera a tutti e Buona Pasqua,
dopo un periodo in cui access e io siamo andati relativamente
d'accordo... mi sono incartata di nuovo.
Sto scrivendo un nuovo database per l'apprendimento della lingua
giapponese (sic!). A causa di come è strutturato il corso, sono
costretta a crearmi un piccolo vocabolario personalizzato, ma la
faccenda non è semplice come io me l'ero immaginata all'inizio
Ho due problemi legati al fatto che un ideogramma, benché scritto
sempre nello stesso modo, puo' avere diverse trascrizioni fonetiche e
di conseguenza diversi significati in italiano
1)  EVITARE DI INSERIRE combinazioni di TRASCRIZIONI + ITALIANO
duplicate (diversi ideogrammi possono significare la stessa cosa in
italiano, ma difficilmente avranno anche la stessa trascrizione.
Ovviamente il campo IDEOGRAMMA non ammette duplicati).
La struttura è questa:
IDEOGRAMMA
ROMAJI1
ITALIANO1
ROMAJI2
ITALIANO2
ROMAJI3
ITALIANO3
Copincollando qua e là avevo scritto questa porcheria:
==================================================
Private Sub Italiano1_BeforeUpdate(Cancel As Integer)
If DCount("*", "TBL_PRINCIPALE", "Romaji1=" & Chr$(34) & Me!Romaji1 &
Chr$(34)) And _
DCount("*", "TBL_PRINCIPALE", "Italiano1=" & Chr$(34) & Me!Italiano1 &
Chr$(34)) Or _
DCount("*", "TBL_PRINCIPALE", "Romaji2=" & Chr$(34) & Me!Romaji2 &
Chr$(34)) And _
DCount("*", "TBL_PRINCIPALE", "Italiano2=" & Chr$(34) & Me!Italiano2 &
Chr$(34)) Or _
DCount("*", "TBL_PRINCIPALE", "Romaji3=" & Chr$(34) & Me!Romaji3 &
Chr$(34)) And _
DCount("*", "TBL_PRINCIPALE", "Italiano3=" & Chr$(34) & Me!Italiano3 &
Chr$(34)) <> 0 Then
If MsgBox("Il vocabolo è già esistente in tabella! Vuoi veramente
continuare", vbYesNo) = vbNo Then
DoCmd.SetWarnings False
'DoCmd.CancelEvent
Me.Undo
   DoCmd.Requery
   DoCmd.GoToRecord , , acLast
DoCmd.SetWarnings True
End If
End If
End Sub
==================================================
Il suo lavoro lo fa, ma i duplicati vengono segnalati singolarmente,
non in combinazione ROMAJI1 + ITALIANO1.
Come posso correggere questa cosa?
Secondo problema:
Dopo aver inserito i vocaboli ho anche bisogno di richiamarli:
ho un controllo di ricerca a cui ho abbinato questo codice:
=========================================
Private Sub Filtro_AfterUpdate()
    Dim RecordCorrente As Variant
     Me.FilterOn = False 'annulla eventuali filtri precedenti
   If Me.Dirty Then 'salva il record se hai fatto modifiche
     Me.Dirty = False
   End If
     Dim rs As Object
    RecordCorrente = Me.RecordsetClone.Bookmark
     Me.Filter = "[Romaji1] Like " & Chr(34) & "*" & Me![Filtro] & "*"
& Chr(34)
     Me.FilterOn = True
 If Me.RecordsetClone.EOF Then 'se nessun record corrisponde
     MsgBox "Non ci sono risultati utili"
     DoCmd.RunCommand acCmdUndo
     DoCmd.ShowAllRecords
     Me.Filter = ""
     Me.Filter = vbNullString
 
 End If
 End Sub
==========================================
Anche questo funziona, ma se io volessi cercare in piu' campi
contemporaneamente (cioé in tutte le trascrizioni inserite)?
Ho provato ad ampliare il filtro con and o or, ma mi restituisce un
errore di tipo non corrispondente.
Mi date qualche dritta?
Grazie in anticipo per l'aiuto!
Erika

si riferisca alla fonetica e/o all'italiano.
No, io devo cercare in trascrizione1+trascrizione2trascrizione3
contempraneamente.
So che è assurdo, ma che colpa ne ho io se il giapponese è fatto
così? Io lo sto solo imparando! :)
Grazie ancora
Ciao
Erika

si riferisca alla fonetica e/o all'italiano.
<No, io devo cercare in trascrizione1+trascrizione2trascrizione3
<contempraneamente.
<So che è assurdo, ma che colpa ne ho io se il giapponese è fatto
<così? Io lo sto solo imparando! :)
<Grazie ancora
<Ciao
<Erika
[Risposta]
Anche qui la risposta deriva dalla prima impostazione.
Solo per curiosità puoi mandarmi uno spezzone di mdb?
Ciao, Carlo