Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 5 su 5

errore di run time 3061 e errore data (medesimo codice)

  1. #1
    tolya90 non è in linea Novello
    Post
    18
    Like Inviati  
    0
    Like Ricevuti  
    0
    Buon pomeriggio,
    ieri ho risolto un 3D precedente così ho provato, a partire da quello, a complicare nonchè migliorare il codice (premesso che sono un neofita per cui non garantisco circa la qualità di quanto segue).
    Si tratta di un pulsante per l'archiviazione di un processo. Quello che io chiedo di fare al click è:
    - chiedere all'utente se vuoi inserire una descrizione del processo che sta per archiviare e se:

    NO allora l'archiviazione avviene senza descrizione
    SI, invece, l'utente inserisce da tastiera la descrizione che verrà salvata nell'apposito campo della tabella di destinazione.

    Problema comune a entrambe le possibilità, è il salvataggio della data, la quale viene memorizzata in modo incomprensibile e specifico che il campo di destinazione della data e di tipo DATA/ORA (a me interesserebbe salvare la data e l'orario).

    Quindi, sia per il SI che per il NO credo salvi male la data, e in più per il SI mi da errore di run time 3061. Spero di essermi spiegato bene. Di seguito riporto il codice.

    Dim descr As String
    Dim P_identificativo As Long
    Dim data As Date
    
    data = Date
    P_identificativo = Nz(DMax("ID_Processo", "Processi archiviati")) + 1
    
    DoCmd.SetWarnings (WarningsOff)
    
        messaggio = MsgBox("Vuoi aggiungere una descrizione al processo da archiviare?", vbYesNo, "Descrizione")
    
        If messaggio = vbYes Then
            
            descr = InputBox("Inserire la descrizione")
            CurrentDb.Execute _
            "INSERT INTO [Processi archiviati] " & _
            "( [Tipologia fase], [Mezzo di trasporto], [Descrizione macroazione], " & _
            "[Descrizione dettagliata], Azione, TMU, [Quantità], [TEMPO TOTALE], ID_Processo, Descrizione, Data_salvataggio ) " & _
            "SELECT [Tipologia fase], [Mezzo di trasporto], [Descrizione macroazione], " & _
            "[Descrizione dettagliata], Azione, TMU, [Quantità], [TEMPO TOTALE], " & P_identificativo & " ," & descr & " ," & data & " " & _
            "FROM [Mappatura processo];"
    
    MsgBox ("Processo archiviato!")
            
            DoCmd.SetWarnings (WarningsOn)
            DoEvents
            'Me.Requery
        ElseIf messaggio = vbNo Then
        CurrentDb.Execute _
            "INSERT INTO [Processi archiviati] " & _
            "( [Tipologia fase], [Mezzo di trasporto], [Descrizione macroazione], " & _
            "[Descrizione dettagliata], Azione, TMU, [Quantità], [TEMPO TOTALE], ID_Processo, Data_salvataggio ) " & _
            "SELECT [Tipologia fase], [Mezzo di trasporto], [Descrizione macroazione], " & _
            "[Descrizione dettagliata], Azione, TMU, [Quantità], [TEMPO TOTALE], " & P_identificativo & " ," & data & " " & _
            "FROM [Mappatura processo];"
    
    MsgBox ("Processo archiviato!")
            'Me.Undo
            DoCmd.SetWarnings (WarningsOn)
            Exit Sub
        End If
    
    Ultima modifica di tolya90; 04-11-2016 15:11 

  2. #2
    OsvaldoLaviosa non è in linea Topo di biblioteca
    Post
    3,094
    Like Inviati  
    0
    Like Ricevuti  
    1
    Quando posti un codice, assicurati di aver cliccato prima sul tasto "Modalità avanzata" per vedere più comandi. Poi selezioni il codice e clicchi sul tasto #

  3. #3
    L'avatar di muttley005
    muttley005 ora è in linea Topo di biblioteca
    Post
    2,057
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao,
    direi che il problema era in parte simile al precedente...
    devi assolutamente studiare la formattazione/concatenazione delle stringhe!
    altrimenti siamo sempre lì ...

    quando esegui un comando SQL (CurrentDb.Execute) passi un parametro stringa
    se all'interno della stringa devi inserire variabili numeriche ti basta questo
    "... [TEMPO TOTALE], " & P_identificativo & " , ..."
    
    per testi serve l'aggiunta degli apici singoli
    "... , '" & descr & "', ..."
    
    per le date devi formattarle in base alle tue impostazioni (e/o del db che usi) e racchiuderle tra ## (ad esempio)
    "... , #" & format$(tuaData,"mm/dd/yyyy") & "# , ..."
    
    questo in generale ... nel tuo caso te lo puoi risparmiare (sulla data) e scrivere direttamente così:
    "... , Now() , ..."
    

  4. #4
    tolya90 non è in linea Novello
    Post
    18
    Like Inviati  
    0
    Like Ricevuti  
    0
    Grazie ancora. Lo so hai perfettamente ragione, ma purtroppo devo elaborare quanto sopra nel breve tempo per cui, ahimè, non ho il tempo materiale di avere un approccio rigoroso (cosa peraltro di cui mi spiace). Scusami se ho chiesto banalità, ma la fretta mi ha portato a questo.

    Grazie mille.

  5. #5
    L'avatar di muttley005
    muttley005 ora è in linea Topo di biblioteca
    Post
    2,057
    Like Inviati  
    0
    Like Ricevuti  
    0
    si... ognuno ha le proprie cose ... ma così facendo, se non capisci/apprendi i concetti, l'unica soluzione possibile per aiutarti è praticamente fornirti la soluzione completa e questo, oltre ad essere vietato dal regolamento, non ti permette di "entrare nel meccanismo" ... per cui alla prossima saremo daccapo

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. errore di run-time 3061 parametri insufficienti previsto 1
    Da Aleandro nel forum Microsoft Access
    Risposte: 5
    Ultimo Post: 22-11-2020, 09:10
  2. Risposte: 4
    Ultimo Post: 08-11-2017, 15:25
  3. Errore run-time 3061
    Da OsvaldoLaviosa nel forum Microsoft Access
    Risposte: 16
    Ultimo Post: 18-09-2015, 11:21
  4. Problema comando INSERT INTO, errore 3061
    Da RaoulDuke nel forum Microsoft Access
    Risposte: 6
    Ultimo Post: 15-01-2013, 19:41
  5. Errore di run-time 3061
    Da carrdi63 nel forum Microsoft Word
    Risposte: 2
    Ultimo Post: 06-03-2009, 15:53