Buon giorno,
sono anni che sono iscritto e, credo, che questo sia il primo post.
Sempre trovo le soluzioni ai miei problemi nelle risposte e nei vari trheads. Pero questo non ce la faccio.
Sono un programmatore della domenica per hobby...
Spiego il problema (assurdo).
Possiedo una DataBase Access (credo 2000 è un .mdb), mi trovo sotto Windows 10 Pro, con Python (3.6.4 64Bit) .
le import che ho usato (alternativamente) sono:
evidentemente nella seconda opzione ho creato il DNS (64Bit) in windows, e mi sono accertato che funzioni.
Ció che neccesito é modificare tutta una serie di records...
in una variabile definisco la sentenza SQL:
SentenzaSQL ='SELECT * FROM Tabella WHERE (Anno = 2018, Dipartimento=10) ORDER BY Dataoperazione ASC'
cursore.execute(SQL)
variabileTemporanea= cursore.fetchall()
for i in variabileTemporanea:
Logid = i[0]
campoa = i[2]
compoaToccato = campoa + 'ci voglio ficcare questo testo'
NuovaSQL = 'UPDATE Tabella SET campoa="' + campoaToccato + '" WHERE Logid = '+str(Logid)
cursor.execute(NuovaSQL)
Mi direte... "bravo, sei un genio dei database"... ed io rispondo "grazie ,non credo prorpio"..
Il ciclo inizia a "girare", poi ricevo il messaggio:
«
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
a.execute(SQL)
dbi.integrityError: [Microsoft][Controlador ODBC Microsoft Access] Los cambios solicitados en la tabla no se realizaron correctamente porque crearían valores duplicados en el índice, clave principal o relación. Cambie los datos en el campo o los campos que contienen datos duplicados, quite el índice o vuelva a definirlo para permitir entradas duplicadas e inténtelo de nuevo. in EXEC
»
Come é mai possibile che abbia un indice duplicato!!! non sto facendo una "INSERT"... é una stupidissima "UPDATE"..
Per favore, sono due settimane che mi ci friggo la testa...
Se l'errore mi sorgesse all'inizio del ciclo, sarebbe evidente che la falla sta li.. peró si presenta in maniera casuale...mi corregge 1500 records e poi si presenta...
Ringrazio anticipatamente per i suggerimenti che possiate inviare.