Newsgroup: it.comp.lang.visual-basic
Titolo: Aggiungere Records ad un Database

Il presente codice mi funziona solo la prima volta a database vuoto
appena richiamo la SubRoutine per aggiungere altri record mi da
un errore dicendomi :
"L'apporto di modifiche  non è riuscito perchè si è cercato di
duplicare i valori nell'indice,nella chiave primaria..."
Non riesco a capire se è il codice sbagliato o ho settato male
il database Access
Se avete tempo mi date un aiutino?
-------------------------------------------------------------
Public Sub ScriviSuDB( )
'Scrive i dati nella tabella del DataBase Archivio.mbd
Dim rs As New ADODB.Recordset
Dim cn As New ADODB.Connection
Dim strSQL As String
'Si assicura che la connessione non sia gia aperta
If cn.state <> 0 Then cn.Close
'Apre la Connessione
ConnDB "Archivio.mdb"
cn.Open strCnn
strSQL = "[TabellaArchivio],cn"
With Oggetto
    rs.Open "[TabellaArchivio]", strCnn, adOpenDynamic, adLockOptimistic, 
adCmdTable
    rs.AddNew
    rs!Mese = .Mese
    rs!Anno = .Anno
    If Not IsNull(Giornata.Ingresso) Then rs!Ingresso = 
Format(Giornata.Ingresso, "
hh.mm
")
    If Not IsNull(Giornata.Uscita) Then rs!Uscita = Format(Giornata.Uscita, 
"
hh.mm
")
    rs!HV = Giornata.Orario1
    rs!HS = Giornata.Orario2
    rs.AddNew
    rs.Update
    rs.Close
End With 

 duplicare i valori nell'indice,nella chiave primaria..."
[cut]
scusa maaaa, quel messaggio non ti suggerisce proprio niente?
il problema non e' nel codice ma nei dati e/o nella struttura
della tabella.
bye
r

nerone ha scritto:

gia'
rs!Mese = .Mese
rs!Anno = .Anno
non e' che c'e' una PK o un index unique anno-mese?
ciao, a.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

sono d'accordo il problema devi cercarlo nella struttura della tabella,
probabilmente è dovuto al fatto che ai cercato di inserire 2 o più
valori uguali nel campo stabilito come "chiave primaria"





 Se avete tempo mi date un aiutino?
La butto lì: nella tabella incriminata, volevi usare un campo
contatore, però hai usato un integer ed ovviamente Access
protesta...
Ciao,
Andrea

 non e' che c'e' una PK o un index unique anno-mese?
Come si vede se è questo il problema? Uso come DB Access 2000

L'hai buttata bene una svista e io di coccio che ho controllato
riguardandomi il monitor per minuti interi senza che mi balzasse agli
acchi... Demente
:-(

 :-(
Beh, io una volta ho scritto una DLL, c'era un buco, l'ho
sistemato, ricaricato il progetto principale, il buco si
ripresentava... indovina un pň? :D
Non avevo copiato la DLL compilata nel source tree
principale del programma :D
Sviste, purtroppo, che succedono anche a chi non č proprio di
primo pelo... :D
Su con la vita.
Andrea

A proposito di DLL io dovrei farne una ma ho letto che con VB6 non si fanno 
delle vere e proprie DLL bensì degli Active X
Non avendo il "pelo" come dici tu e avendo fatto ( o quasi) tutto con VB 
pensi sia difficile provare a passare anzi a convertire quel codice in C++ 
ho è totalmente diverso anche come filosofia di ragionamenti?
Seconda domanda: Vedendo bene quella tabella di Access dove io vado a 
scrivere i dati che importo a me quella chiave primaria non serve proprio.
Sono obbligato a lasciarla o posso anche farne a meno? 

 Sono obbligato a lasciarla o posso anche farne a meno? 
E' buona norma avere *sempre* una chiave primaria *corretta* per ogni
tabella, perché:
1) Oggi forse non ti serve ma domani potrebbe servirti
2) Non è bene avere una tabella senza chiavi primarie per principio
3) Una chiave primaria è anche un ottimo sistema per aiutare la
    consistenza di un DB
Quindi si, direi di tenerla :D
Ciao,
Andrea

Insomma in poche parole mi rassegno :-)
Io avrei necessità di crearmi una DLL da inserire in un programma che sto 
scrivendo... la cosa piu semplice da fare, se dovessi decidere un linguaggio 
nuovo cosa mi proponi?