Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313

    [vba/access] fermare "auto"-INSERT

    ciao,

    ho creato un form col wizard. questo form é legato ad una tabella...

    quando l'utente modifica uno dei campi, questo é automaticamente salvato nel db. e soprattutto, quando un utente scrive qualcosa in uno dei campi vuoti di un nuovo record, questo viene automaticamente salvato all'evento onLostFocus.

    come posso impedire che cio accada?

    voglio che l'INSERT sia eseguito quando l'utente clicca su un bottone specifico. se questo non accade, i dati non sono salvati... pero voglio evitare di scrivermi tutta la query in modo manuale.
    si puo fare?
    alcool: la causa e la soluzione di tutti i problemi

  2. #2
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    COn le transazioni
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

  3. #3
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    Originariamente inviato da kalosjo
    COn le transazioni
    grazie. ho fatto questo (wksp é il workspace corrente):

    all form load faccio beginTrans.
    poi ho due bottoni (salva e annulla).

    salva -> wksp.commitrans
    annulla-> wksp.rollback

    tutto bene finché sto modificando dei record... ma quando carico il form per aggiungere un nuovo record il rollback non funziona. come mai? c'é qualcosa che mi sfugge?
    alcool: la causa e la soluzione di tutti i problemi

  4. #4
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    forse trovate il problema guardando il codice:
    codice:
    Private Sub Form_Load()
    
        Dim rs As Recordset
        
        ' Set the current workspace
        Set wksp = DBEngine.Workspaces(0)
        
        ' Begin the transaction
        wksp.BeginTrans
        
        ' Adding a new record
        If (modFunctions.curId = -1) Then
            DoCmd.GoToRecord , , acNewRec ' il problema é che se aggiungo dati il rollback non funziona
            Me.cmdDelCb.Visible = False
        
        ' Load the selected one
        Else
            Set rs = Me.Recordset
            rs.FindFirst ("case_id = " & modFunctions.curId)
            Me.cmdDelCb.Visible = True
        End If
        
        ' Show / Hide fields
        If (Me.cstm_will_pay.Value = "Yes") Then
            show 1, False
        End If
        
        If (Me.cb_entitled.Value = "Yes") Then
            show 2, True
        End If
    End Sub
    ed ecco il rollback button (esci senza salvare)
    codice:
    ' Cancel edits -> do not save changes
    Private Sub cmdRollback_Click()
    
        ' Rollback transaction
        wksp.Rollback
        
        ' Close the form
        DoCmd.Close acForm, "frm_cb_case"
    End Sub
    alcool: la causa e la soluzione di tutti i problemi

  5. #5
    secondo me ti stai complicando inutilmente la vita, per quel che ti serve ti bastano due bottoni salva e annulla che puoi creare comodamente col wizard in 2 secondi. poi da codice puoi fare gli aggiustamenti del caso, guardando quel che ti ha generato.

    xxx

  6. #6
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    non sono molto abituato a lavorare con accesss...e per lo piu io scrivo sempre molto codice (almeno so cosa fa cosa perché l'ho scritto io - non é detto che sia l'approccio giusto).

    quindi il wizard non l'ho quasi mai usato. mi spieghi come creo questi bottoni???

    io ho creato il form da wizard (cosi prende come recordsource una tabella). ma di opzioni riguardo ai bottoni salva e annulla mica ne ho viste
    alcool: la causa e la soluzione di tutti i problemi

  7. #7
    quando trascini un command button nel form ti si dovrebbe aprilre la finestra di creazione guidata del bottone.
    li selezioni come categoria "operazione sui record" e come azione quel che ti serve.

    anch'io inizialmente scrivevo routine su routine ma access è stato creato per velocizzare al massimo la creazione delle maschere per l'accesso ai dati, quindi è decisamente meglio sfruttare le sue potenzialità e scriverci dentro meno codice possibile.
    xxx

  8. #8
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    Originariamente inviato da Alethesnake
    quando trascini un command button nel form ti si dovrebbe aprilre la finestra di creazione guidata del bottone.
    li selezioni come categoria "operazione sui record" e come azione quel che ti serve.

    anch'io inizialmente scrivevo routine su routine ma access è stato creato per velocizzare al massimo la creazione delle maschere per l'accesso ai dati, quindi è decisamente meglio sfruttare le sue potenzialità e scriverci dentro meno codice possibile.
    sarà... ma a me questa cosa che dici te mica funziona!
    non mi ha mai chiesto cosa farci con i controlli trascinati... :master: :master:

    io scelgo di inserire un bottone. poi sono sempre stati ca**i miei... non mi ha mai proposto niente... ho un access antipatico?
    alcool: la causa e la soluzione di tutti i problemi

  9. #9
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    ok. ho trovato.. dovevo attivare un'opzione. ora ci do un'occhiata.

    [edit] in effetti mi stavo complicando la vita non poco. ho creato il bottone "undo" e ho copiato i lcodice che mi serviva. grazie
    alcool: la causa e la soluzione di tutti i problemi

  10. #10
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    codice:
    ' Cancel edits -> do not save changes
    Private Sub cmdRollback_Click()
    
        ' Undo changes
        DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
        
        ' Close the form
        DoCmd.Close acForm, "frm_cb_case"
    End Sub
    piccolo problema: se l'utente apre il form.. non fa niente.. e poi clicca su cmdRollback il comando UNDO non é disponibile (poiché non c'é nessuna azione da annullare... come lo controllo?)

    [EDIT] ho risolto cosi:
    codice:
    ' Cancel edits -> do not save changes
    Private Sub cmdRollback_Click()
    
        On Error GoTo errorHandling
    
        ' Undo changes
        DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
        
        ' Close the form
        DoCmd.Close acForm, "frm_cb_case"
        
        Exit Sub
    errorHandling:
        DoCmd.Close acForm, "frm_cb_case"
        
    End Sub
    alcool: la causa e la soluzione di tutti i problemi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.