Selezionare un record per poi modificarlo o cancellarlo (VBA)

di il
16 risposte

Selezionare un record per poi modificarlo o cancellarlo (VBA)

Buongiorno, dovendo realizzare un'applicazione molto semplice ma da affidare a utenti piuttosto inesperti sto cercando di evitare che essi possano accedere a tabelle intere per evitare danni. Ora per inserire nuovi record me la sono cavata con una maschera con le caselle di testo che rappresentano i campi da inserire e del codice VBA come sotto, Ma per operazioni di modifica o cancellazione di un singolo record le mia competenze sono insufficienti. Per ora ho risolto con una classica query che alimenta una maschera che consente l'edit di specifici campi e, con un pulsante, la cancellazione del record. Funziona ma non mi piace molto. Aspetto vostro suggerimenti, grazie, m.


Private Sub plsInsNominativo_Click()
Dim strInsert
Dim risposta
    risposta = MsgBox("confermi?", vbYesNo)
    
    If risposta = 6 Then
        strInsert = "INSERT INTO T_Anagrafica(NOMINATIVO,DIVISIONE,EMAIL,DATA_FIRMA_DSAN)" & vbCrLf & _
            "VALUES(pNOMINATIVO,pDIVISIONE,pEMAIL,pDATA_FIRMA_DSAN)"
        Set DB = CurrentDb
        Set qdf = DB.CreateQueryDef(vbNullString, strInsert)
        qdf.Parameters("pNOMINATIVO").Value = Me.NOMINATIVO.Value
        qdf.Parameters("pDIVISIONE").Value = Me.DIVISIONE.Value
        qdf.Parameters("pEMAIL").Value = Me.EMAIL.Value
        qdf.Parameters("pDATA_FIRMA_DSAN").Value = Me.DATA_FIRMA_DSAN.Value
        qdf.Execute dbFailOnError
        
       
        
        MsgBox "E' stato inserito il nominativo di " & Me.NOMINATIVO.Value & " " & Me.DIVISIONE.Value & " con DSAN in data:  " & Me.DATA_FIRMA_DSAN.Value
        
        NOMINATIVO.Value = ""
        DIVISIONE.Value = ""
        EMAIL.Value = ""
        DATA_FIRMA_DSAN.Value = ""
      
    Else
        MsgBox ("ti sei pentito!")
        
    End If
End Sub




16 Risposte

  • Re: Selezionare un record per poi modificarlo o cancellarlo (VBA)

    Il Codice che pubblichi non ha nulla a che vedere con l'oggetto del 3D… lo sai vero…?

    Puoi spiegarci meglio cosa vuoi/devi fare…?

  • Re: Selezionare un record per poi modificarlo o cancellarlo (VBA)

    Il codice che ho pubblicato mostra come ho risolto l'INSERIMENTO di un nuovo record. Mi serve un vostro consiglio per operare in qualche modalità analoga a questa per la SELEZIONE e successiva MODIFICA o CANCELLAZIONE di un record.

  • Re: Selezionare un record per poi modificarlo o cancellarlo (VBA)

    A parte il fatto che non l'hai detto, a xhe serve pubblicare quel codice se devi fare altro?

    Per “selezionare” intendi ricercare secondo criteri?

    Quali criteri?

    Del linguaggio SQL conosci la SELECT, la UODATE, la DELETE?

  • Re: Selezionare un record per poi modificarlo o cancellarlo (VBA)

    Caro Oregon deponi la tua ‘vis polemica’, del tutto inappropriata. 

    Ho inserito quel codice per dire come avevo provato a risolvere il tema dell'INSERIMENTO di un nuovo record tramite maschera e codice.

    Orbene: potete suggerirmi qualcosa di analogo per far si che il mio utente, perfino più sprovveduto di me, possa eseguire, in sequenza:

    la ricerca e selezione di uno specifico record;
    la sua successiva modifica o cancellazione.

    Si, certo che conosco SELECT, la UPDATE e DELETE, ma vorrei rendere le operazioni le più sicure possibili all'utente finale.

    Mi sono spiegato questa volta?

    Grazie

  • Re: Selezionare un record per poi modificarlo o cancellarlo (VBA)

    Non “depongo” nulla, nessuna polemica, ho solo fatto una precisazione, direi molto opportuna secondo me. Ho solo concordato con @Alex sul fatto che il codice mostrato (e non spiegato) era comunque OT rispetto alla richiesta.

    E ti ho indicato le operazioni da tenere in considerazione.

    Per il resto, la tua richiesta non è chiara, mi dispiace. “Operazioni più sicure”, ovvero? 

  • Re: Selezionare un record per poi modificarlo o cancellarlo (VBA)

    Come nell'inserimento di un nuovo record cerco di evitare che l'utente entri in contatto diretto con la tabella vorrei un vostro consiglio su come operare per le operazioni di modifica e cancellazione di un record.

    Provo a spiegarmi meglio: l'utente decide di modificare un dato relativo a Mario Rossi; prima lo ricerca nel DB, poi lo seleziona, in caso apporta le eventuali correzioni/modifiche o procede alla cancellazione del record.

    Come fare questo in modo che l'utente al più ‘faccia danni’ solo su un record e non rovini tutta la tabella?

  • Re: Selezionare un record per poi modificarlo o cancellarlo (VBA)

    Faustinator:

    l'utente decide di modificare un dato relativo a Mario Rossi; prima lo ricerca nel DB, poi lo seleziona, in caso apporta le eventuali correzioni/modifiche o procede alla cancellazione del record.

    Raccontato così, mi appare una normalissima gestione dei dati per qualsiasi utente.
    Ma tu lavori direttamente sulle tabelle? Anche per gli utenti esperti, qualsiasi operazione di INPUT, MODIFICA, CANCELLAZIONE vuoi fare, devi operare sempre con le MASCHERE. Una maschera SINGOLA ti permette di vedere un record alla volta…in caso di errori/pasticci vari, hai danneggiato solo quel singolo record, tutti gli altri resteranno intatti. Voglio dire anche che non ti serve alcun codice VBA da mettere in campo.

  • Re: Selezionare un record per poi modificarlo o cancellarlo (VBA)

    Hai usato una maschera per l'input dei dati per l'inserimento? O fai con VBA?

    Fai qualcosa di simile per la ricerca chiedendo cognome e nome e dai la SELECT con la WHERE.

    Presenti i dati trovati e li mostri. Quando l'utente li avrà modificati con un tasto esegui la UPDATE con la WHERE     

    Oppure se vuole cancellarli con un altro tasto esegui la DELETE con la WHERE

    Come ti avevi “riassunto” nella risposta precedente. 

  • Re: Selezionare un record per poi modificarlo o cancellarlo (VBA)

    Oregon: per l'INSERIMENTO di un nuovo record ho usato una maschera con le caselle di testo dove l'utente va a per scrivere i campI: Nominativo, mail, date ecc. e poi, con plsInsNominativo_Click() il codice che ho descritto nel primo post  ‘deposita’ i dati dalla maschera alla tabella, 
    Non so se questa modalità sia la migliore ma funziona e per ora mi accontento.

    Allora se comprendo il tuo consiglio potrei usare la stessa machera (o una semplificata, dato che la ricerca è sul solo nominativo) ma da lì… non so come eseguire la select… con il WHERE…

    Ossia che da lì in poi sono un attimo impantanato…

  • Re: Selezionare un record per poi modificarlo o cancellarlo (VBA)

    Ma la 

    strInsert = "INSERT INTO ...

    l'hai scritta tu, no?

  • Re: Selezionare un record per poi modificarlo o cancellarlo (VBA)

    Sì, quella mi risulta comprensibile (l'ho copiata da qualche forum e riadattata al mio caso).

  • Re: Selezionare un record per poi modificarlo o cancellarlo (VBA)

    Adesso la richiesta mi è più chiara.

    Tu vuoi del codice completo per la ricerca, modifica e cancellazione in VBA da copiare e incollare.

    Non è questo lo scopo del forum.

    Questo è quanto puoi cominciare a studiare

    https://www.secoda.co/learn/mastering-sql-how-to-use-select-insert-update-and-delete-commands

  • Re: Selezionare un record per poi modificarlo o cancellarlo (VBA)

    Per ora ho ‘autoappreso’ in questo modo, molto artigianale, anche grazie a vostri contributi. Comunque forse qualche altro potrà darmi suggerimenti validi. 

  • Re: Selezionare un record per poi modificarlo o cancellarlo (VBA)

    A noi poco importa se questo sia il tuo metodo di apprendimento piu funzionale, sei libero di usare quello che più ti dà soddisfazione… ma non in questo forum, noi diamo indicazioni suggerimenti non “codice pronto” se l'OP non ha un minimo di competenza, deve essere un confronto tecnico non un copia/incolla.

    Il tuo codice ad esempio non è intelligente, era molto meglio predisporre la maschera al fine di essere aperta in modalità Addnew/Edit/Delete ed usare un Recordet specifico magari con transazione… quello che fai tu, hai detto giusto funziona ma non va bene.

Devi accedere o registrarti per scrivere nel forum
16 risposte