Impossibile registrare le modifiche. Il valore inserito viola le impostazioni definite per la tabella o l'elenco.

di il
8 risposte

Impossibile registrare le modifiche. Il valore inserito viola le impostazioni definite per la tabella o l'elenco.

Buona sera a tutti,
ho un problema con questo codice:
Private Sub Comando12_Click()
Dim PercFile As String
PercFile = CurrentProject.Path
DoCmd.SetWarnings False
DoCmd.TransferSpreadsheet acImport, , "TabFatture", (PercFile & "\FatPervenute.xlsm"), True 'importa i dati dal file excel
DoCmd.DeleteObject acTable, "'Fatture da Importare$'_ErroriImportazione"
DoCmd.SetWarnings True
MsgBox ("Importazione dati effettuata")
DoCmd.Close
End Sub
l'istruzione funziona perfettamente ma, se divido il database in front-end e back-end, mi restituisce il seguente errore:
Impossibile registrare le modifiche. Il valore inserito viola le impostazioni definite per la tabella o l'elenco. E' possibile, ad esempio, che il valore inserito sia inferiore al valore minimo o superiore al valore massimo impostato...
Ne sarei grato se qualcuno mi potesse indicare dove sbaglio.
Grazie.

8 Risposte

  • Re: Impossibile registrare le modifiche. Il valore inserito viola le impostazioni definite per la tabella o l'elenco.

    Ma se dividi il DB dove effettui l'import, nel FE o nel BE... ed hai la tabella Linkata...?
    Quel codice gira in LOCALE nel FE... è normale per te...?
    La Tabella TabFatture poi che interazioni ha con le LinkedTable...?

    Qualche cosa non mi torna.
  • Re: Impossibile registrare le modifiche. Il valore inserito viola le impostazioni definite per la tabella o l'elenco.

    Buongiorno,
    grazie Alex per il tuo interessamento, sempre disponibile e gentile.
    Ho modificato il codice sulla base delle tue indicazioni, sperando di aver capito bene, riportando la posizione del database back-end (CAPITOLI BE). Access non mi da più errore ma non importa i dati, cos'altro sbaglio?
    Di seguito il codice modificato:

    Private Sub Comando12_Click()
    Dim PercFile As String
    PercFile = CurrentProject.Path
    DoCmd.SetWarnings False
    DoCmd.TransferSpreadsheet acImport, , (PercFile & "\CAPITOLI BE\TabFatture"), (PercFile & "\FatPervenute.xlsm"), True
    DoCmd.SetWarnings True
    MsgBox ("Importazione dati effettuata")
    DoCmd.Close
    End Sub

    Scusa se faccio errori probabilmente banali ma, non sono un tecnico di informatica, sono autodidatta e mi mancano molte nozioni e tutto quello che so l'ho imparato grazie ai vostri post.
  • Re: Impossibile registrare le modifiche. Il valore inserito viola le impostazioni definite per la tabella o l'elenco.

    Purtroppo non ho capito come operi... quello che hai fatto non va bene a prescindere.
    Dove devi importare la Tabella...?
    In LOCALE o nel BE...?

    Se va nel BE non puoi usare il [DoCmd.TransferSpreadsheet] dal client in quel modo...!
    Docmd è un'oggetto membro di Access(Application) ed opera, nel tuo caso che ometti l'oggetto Padre su Application che è il Client.
    Se devi invece operare sul BE, devi aprire un'oggetto Access Application specifico e su quello usare il Docmd...
    
    Dim Acc As Object
        Set Acc = CreateObject("Access.Application")
        Acc.OpenCurrentDatabase (path del BE)
        Acc.DoCmd.TransferSpreadsheet ....
    ecc...    
    
  • Re: Impossibile registrare le modifiche. Il valore inserito viola le impostazioni definite per la tabella o l'elenco.

    Scusa Alex se ti sto stressando,
    si vorrei importare la tabella in BE. Ho modificato il codice ma faccio ancora delle cavolate, Access, infatti, mi da il seguente errore:
    "Impossibile aprire il database. Il database è stato aperto da un altro utente in accesso esclusivo, è mancante o non è un file ADP"

    ho provato in questi due modi e mi restituisce sempre lo stesso errore.

    Dim PercFile As String
    PercFile = CurrentProject.Path
    Dim Acc As Object
    Set Acc = CreateObject("Access.Application")
    Acc.OpenCurrentDatabase (PercFile & "\CAPITOLI BE")
    Acc.DoCmd.TransferSpreadsheet acImport, , TabFatture, (PercFile & "\FatPervenute.xlsm"), True
    MsgBox ("Importazione dati effettuata")
    DoCmd.Close
    End Sub

    .....

    Dim PercFile As String
    PercFile = CurrentProject.Path
    Dim Acc As Object
    Set Acc = CreateObject("Access.Application")
    Acc.OpenCurrentDatabase (PercFile & "\CAPITOLI BE")
    Acc.DoCmd.TransferSpreadsheet acImport, , (PercFile & "\CAPITOLI BE\TabFatture"), (PercFile & "\FatPervenute.xlsm"), True
    MsgBox ("Importazione dati effettuata")
    DoCmd.Close
    End Sub

    Grazie.
  • Re: Impossibile registrare le modifiche. Il valore inserito viola le impostazioni definite per la tabella o l'elenco.

    Stai passando correttamente il NOME del BE...? (secondo me no)
    Guardaci bene:
    
    Acc.OpenCurrentDatabase (PercFile & "\CAPITOLI BE")
    Secondo, apri la GUIDA in linea per leggere come si usa la funzione [TransferSpreadsheet]:
    
    Sub TransferSpreadsheet([TransferType As AcDataTransferType = acImport], 
    				[SpreadsheetType As AcSpreadSheetType = acSpreadsheetTypeExcel12Xml], 
    				[TableName], 
    				[FileName], 
    				[HasFieldNames], 
    				[Range], 
    				[UseOA])
        Membro di Access.DoCmd
    Questo è errato:
    
    Acc.DoCmd.TransferSpreadsheet acImport, , (PercFile & "\CAPITOLI BE\TabFatture"), (PercFile & "\FatPervenute.xlsm"), True
    Ti sembra di passare i parametri corretti...?(secondo me no, in particolare il nome della Tabella è un oggetto del DB non un file quindi non ha percorso)

    Questo è errato:
    
    Acc.DoCmd.TransferSpreadsheet acImport, , TabFatture, (PercFile & "\FatPervenute.xlsm"), True
    Il Nome Tabella, come indicato nella GUIDA, deve essere un NOME, quindi una Stringa, quello che passi tu è un oggetto.
  • Re: Impossibile registrare le modifiche. Il valore inserito viola le impostazioni definite per la tabella o l'elenco.

    Perdonami Alex,
    il percorso dove si trova il BE (Capitoli_be.accdb) è sicuramente questo ("C:\Users\michele.prencipe\Desktop\CAPITOLI\CAPITOLI BE") ma continua a darmi errore.

    Ho consultato la guida per capire come funziona [TransferSpreadsheet] ma sulla base delle mie scarse conoscenze ho provato a riscrivere il codice in questo modo "Acc.DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, StrTab, (PercFile & "\FatPervenute.xlsm"), True" ma, non posso testarlo se prima non risolvo l'errore precedente


    Dim PercFile As String
    Dim StrTab As String
    PercFile = CurrentProject.Path
    StrTab = TabFatture
    Dim Acc As Object
    Set Acc = CreateObject("Access.Application")
    Acc.OpenCurrentDatabase ("C:\Users\michele.prencipe\Desktop\CAPITOLI\CAPITOLI BE")
    'CAPITOLI BE è la cartella dove si trova Capitoli_be.accdb
    Acc.DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, StrTab, (PercFile & "\FatPervenute.xlsm"), True
    MsgBox ("Importazione dati effettuata")
    DoCmd.Close
    End Sub
    Grazie
  • Re: Impossibile registrare le modifiche. Il valore inserito viola le impostazioni definite per la tabella o l'elenco.

    Non metti il nome completo del BE... serve il path ma completo del nomebe.accdb e ti non lo metti.
  • Re: Impossibile registrare le modifiche. Il valore inserito viola le impostazioni definite per la tabella o l'elenco.

    Grazie Alex Problema risolto,
    questo il codice definitivo:

    Private Sub Comando12_Click()
    If MsgBox("Importazione fatture pervenute - Confermi l'importazione?", vbYesNo) = vbYes Then
    On Error GoTo Errore
    Dim PercFile As String
    PercFile = CurrentProject.Path
    Dim StrTab As String
    StrTab = "C:\Users\michele.prencipe\Desktop\Capitoli\Capitoli be\"
    Dim Acc As Object
    Set Acc = CreateObject("Access.Application")
    Acc.OpenCurrentDatabase (StrTab) & "Programma Capitoli _be.accdb"
    Acc.DoCmd.TransferSpreadsheet acImport, , ("TabFatture"), (PercFile & "\FatPervenute.xlsm"), True
    Acc.DoCmd.DeleteObject acTable, "'Fatture da Importare$'_ErroriImportazione"
    MsgBox ("Importazione dati effettuata")
    DoCmd.Save
    DoCmd.Close
    End If
    Exit_Errore:
    Exit Sub

    Errore:
    Resume Exit_Errore
    End Sub

    Buona serata
Devi accedere o registrarti per scrivere nel forum
8 risposte