Newsgroup: it.comp.appl.access
Titolo: Duplicare record, chiave primaria multipla e duplicati non ammessi.

Buonasera a tutti,
sono di nuovo a chiedere aiuto per un database che sto facendo.
Si tratta di un database per archiviare cd/libri ed altri prodotti.
La mia tabella principale (principaleAlbum) ha 3 chiavi primarie 
1) contatore
2) codice ("CatalogueNr", testo, duplicati NON ammessi)
3) Title (testo, duplicati ammessi)
Adesso mi trovo nella situazione di dover duplicare dei record, ma continuo a
ricevere un messaggio di errore (violazione di chiave)
Questo e' il codice del pulsante "duplica"
===
Private Sub CopiaIncolla_Click()
    Dim IntNuovo As Integer, strTitolo As String
    Dim IntFinestraMsg As Integer, strMsg As String
    If Me.Dirty Then    'Save any changes.
    Me.Dirty = False
    End If
    strTitolo = "Conferma di duplicazione record"
    strMsg = "Vuoi effettivamente duplicare il record corrente??"
    IntFinestraMsg = vbYesNo + vbQuestion
    IntNuovo = MsgBox(strMsg, IntFinestraMsg, strTitolo)
    If IntNuovo = vbYes Then
DoCmd.RunSQL "INSERT INTO PrincipaleAlbum ( Contatore, Title, ETC ELENCO CAMPI
)" & _
" SELECT PrincipaleAlbum.Contatore, PrincipaleAlbum.Title, ETC ELENCO CAMPI " &
_
" FROM PrincipaleAlbum WHERE PrincipaleAlbum.Contatore= " & Me![Contatore] & ";"
 
COSA DEVO SCRIVERE QUI PER POTER IMMETTERE IL PARAMETRO RELATIVO AL VALORE NON
DUPLICABILE??
    End If
DoCmd.Requery
DoCmd.GoToRecord , , acLast
End Sub
====
Ho gia' usato questo codice in un altro db, ma in quel caso la chiave primaria
era un contatore e non ho avuto problemi.
Vi ringrazio in anticipo per l'aiuto!
Erika
-- 
Per rispondermi... Togli "nospam"
To send me an email... take out "nospam"

[CUT]
WHERE PrincipaleAlbum.Contatore= " & Me![Contatore] & ";"
Giacchè i campi "inidicizzati" sono 3 ti suggerirei di aggiungere gli altri 
2 campi utilizzando l'operatore AND ;-)...
Notte
Gaspare 





 Erika
Io vedo 2 errori di applicazione in questa cosa:
1)Non puoi inserire nella Query il campo COUNTER, quello
viene incrementato in automatico, pertanto deve essere escluso
dall'INSERT.
2)Usi un campo chiamato "ETC ELENCO CAMPI" e questo è molto
pericoloso per la presenza degli Spazi, in questo caso
devi mettere le parentesi QUADRE.
Il 3° problema è che non riesco a capire perchè non usi
come PK solo il Counter, visto che poi è proprio lui che
ti salva il tutto.....!!!!!!!!
Lascio a te il chiarirti le idee sulla struttura di una
cosa che conosci meglio di tutti, la mia è solo una riflessione
ad alta voce.
Saluti.
@Alex.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ad alta voce.
La struttura nasce da quanto sopra...
Posso avere piu' oggetti con lo stesso nome (Title), ma il codice cd
deve essere univoco perché mi gestisce anche le tracce.
Sicuramente potevo gestirlo in maniera piu' intelligente, ma non ne ero
capace (non che sia una scusante, ma è la verita' ^_^;;)
Grazie!
Erika

2 campi utilizzando l'operatore AND ;-)...
Si', ma il mio problema è che uno dei due campi che avanzano non mi
consente i duplicati ed è testuale, quindi o inserisco io manualmente
il nuovo parametro o mi da' errore.
Anche io avevo avuto la stessa idea, ma come risolvo il problema del
dare il nuovo valore univoco a "CatalogueNr"?
Ciao e grazie
Erika

Erika
Se glielo devi passare da codice quel parametro utilizzi una forma qualsiasi 
di incremento...qualcosa del genere insomma
Dim incremento as variant
incremento=1
......
incremento=incremento+1
incremento=Cstr(incremento)