Modificare subito dopo un INSERT INTO

di il
4 risposte

Modificare subito dopo un INSERT INTO

Buonasera e grazie in anticipo
la procedura per la quale chiedo aiuto duplica molti campi (ma non tutti) di un record da un tabella di dati anagrafici
in sostanza duplica quasi completamente una anagrafica
ma avrei bisogno di fleggare a vero un campo logico della tabella in questione per riconoscerlo come record derivante da una procedura di duplicazione
Private Sub pulDuplica_Click()

' QUI

Dim myNumAnagrafe As Long
Dim myQuest As String
Dim myNome As String
Dim myElencoCampi As String

myElencoCampi = "NOME,SEX,NATO_IL,NATO_A,NATO_PROV,COD_FISCALE,EXTRA_UE,INDIRIZZO,CAP,CITTA,PROV,"
myElencoCampi = myElencoCampi & "TELEFONO,TEL_ALTRI,EMAIL,SOCIAL,CORSO,EX_PATENTE,DATA_ISCRIZIONE,"
myElencoCampi = myElencoCampi & "PRIVATISTA,ESTENSIONE,LISTINO,PROMOZIONI,NOTE_VELOCI,"
myElencoCampi = myElencoCampi & "APP_REG,APP_MAIL,APP_IOS,ALTRE_SCUOLE,FINANZIAMENTO,CC_SCUOLA,"
myElencoCampi = myElencoCampi & "NOTE_LUNGHE,PATENTE_NUM,PATENTE_DATA,PATENTE_SCAD,FILEFOTO"

myNumAnagrafe = 0
If Not IsNull(Me.crpAnagrafica) Then
    myNumAnagrafe = Me.crpAnagrafica.Value
    If myNumAnagrafe > 0 Then
        myNome = Me.crpAnagrafica.Column(1)
        myQuest = "CREAZIONE DI UNA NUOVA ANAGRAFICA ATTIVA" & vbCrLf
        myQuest = myQuest & "DUPLICANDO I DATI PRINCIPALI DI" & vbCrLf
        myQuest = myQuest & myNome & vbCrLf
        myQuest = myQuest & "CONFERMI ?"
        
        If MsgBox(myQuest, vbYesNo) = vbYes Then
    
            CurrentDb.Execute "INSERT INTO Anagrafe (" & myElencoCampi & ") SELECT " & myElencoCampi & " FROM Anagrafe WHERE ID_ANAGRAFE = " & myNumAnagrafe
    
            Me!crpAnagrafica.Requery
            Call crpAnagrafica_AfterUpdate
    
        End If
    End If
End If
End Sub
Dopo aver fatto INSERT INTO dovrei andare a flaggare Vero un campo di quel record appena aggiunto
Come dovrei fare? Devo andare all'ultimo record e modificare il campo?

4 Risposte

  • Re: Modificare subito dopo un INSERT INTO

    Credo di aver risolto, mi confermate che e' una buona soluzione e anzi forse l'unico modo?
            If MsgBox(myQuest, vbYesNo) = vbYes Then
        
                CurrentDb.Execute "INSERT INTO Anagrafe (" & myElencoCampi & ") SELECT " & myElencoCampi & " FROM Anagrafe WHERE ID_ANAGRAFE = " & myNumAnagrafe
        
                Set myrst1 = CurrentDb.OpenRecordset("Anagrafe", dbOpenDynaset)
                myrst1.MoveLast
                myrst1.Edit
                myrst1.Fields("REISCRITTO") = True
                myrst1.Update
                myrst1.Close
        
                Me!crpAnagrafica.Requery
                Call crpAnagrafica_AfterUpdate
        
            End If
        End If
  • Re: Modificare subito dopo un INSERT INTO

    Walter61 ha scritto:


     
    CurrentDb.Execute "INSERT INTO Anagrafe (" & myElencoCampi & ") SELECT " & myElencoCampi & " FROM Anagrafe WHERE ID_ANAGRAFE = " & myNumAnagrafe
    
    Tutto in un'unica insert :
    
    CurrentDb.Execute 
        "INSERT INTO Anagrafe (" & 
        myElencoCampi & ",REISCRITTO" &
        ") SELECT " & myElencoCampi & ",True AS REISCRITTO" & 
        " FROM Anagrafe WHERE ID_ANAGRAFE = " & myNumAnagrafe
    
  • Re: Modificare subito dopo un INSERT INTO

    Ma non sarebbe più "normale" (inteso verso il concetto di normalizzazione) avere due tabelle distinte? L'anagrafica e le iscrizioni associate 1-M: nelle iscrizioni si predispone una data di iscrizione e data una finestra temporale di validità, magari con una query parametrica, si ottiene l'elenco degli iscritti ad una certa data.
  • Re: Modificare subito dopo un INSERT INTO

    Grazie max.riservo
    in effetti qualcosa mi diceva che il codice poteva essere migliorato e smagrito
    ps ho aggiunto un altro campo dove riporto la pk del record originale dal quale l'anagrafica viene duplicata
    grazie Sgrubak
    sono assolutamente d'accordo, la fase iniziale di normalizzazione poteva anche essere studiata meglio e ottimizzata cosi' come suggerisci separando i meri dati anagrafici dai vari corsi seguiti... purtroppo ormai e' troppo tardi e gli interventi ora sarebbero troppo pesanti ...
Devi accedere o registrarti per scrivere nel forum
4 risposte