Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [VB6] Form e Dataenviroment

    Utilizzo spesso per creare delle form di facile utilizzo un command del dataenviroment per collegare i controlli della form (textbox, combobox, etc...) alla base dati. Questo mi velocizza molto la scrittura del codice di salvataggio e caricamento dei dati da far apparire.

    Non riesco a capire una cosa. Quando chiudo la form i command collegati ai vari controlli si chiudono automaticamente oppure necessitano del codice rsCommand.close per chiuderli?

    Lo chiedo perchè a volte mi resta la connessione aperta e poi aprendo altre form con lo stesso command da utilizzare mi da l'errore segnalando che è ancora aperto.
    Quando ho provato a mettere il Close nell'evento Form_Unload invece mi dà un errore che mi segnala che non è un'operazione consentita in quel contesto. Insomma dove è la verità?

  2. #2
    Dimenticavo di dire un informazione importante. i form che sto utilizzando sono tutti Form MDIChild....

  3. #3
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ciao Seyen,
    quando uso il DE per i Report utilizzo questo sistema (collaudato):
    nel modulo del DataReport:
    .... ...
    With DataEnvironment1
    If .rsCommandCOM1.State <> 0 Then
    .rsCommandCOM1.Close
    End If
    End With

    'Rinvia all'evento Terminate del DataEnvironment per chiudere la connessione:
    Unload DataEnvironment1

    Nel modulo del DE:
    codice:
    Private Sub DataEnvironment_Terminate()
    
    'Chiude la connessione ed azzera i riferimenti:
        With DataEnvironment1.Connection1
            .Close
        End With
            
        Unload Me
    
    End Sub
    Naturalmente prima di Terminate c'è l'evento
    codice:
    Private Sub DataEnvironment_Initialize()
    'Si connette con stringa di connessione ed attiva la connessione:
        With DataEnvironment1.Connection1
            .ConnectionString = DataConnessione
            .Open
        End With
      
      End Sub
    LM

  4. #4
    Anche io uso quel sistema per controllare se eventualmente il command è ancora aperto e quindi evito di riaprirlo ed avere errore. Solo che non capisco perchè quando la form viene scaricata non vengano rilasciate le connessioni collegate.
    Dici che mettere Set form = nothing nel codice dove ritorna il programma dopo la chiusura di form possa essere giusto?

    La seconda parte del codice che hai messo cosa dovrebbe fare? chiude la connessione del Dataenviroment (e lo riapre...) sul Db in questione....ma quando lo fà?

  5. #5
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Guarda che la connessione avviene nel DE nell'evento DataEnvironment_Initialize()
    quindi quando hai terminato l'uso del DataReport, devi chiudere la connessione con l'evento DataEnvironment_Terminate()
    richiamandolo con
    Unload DataEnvironment1
    Provare per credere, ...
    LM

  6. #6
    Così però chiudo il collegamento completo con il database...essendo il mio programma basata su Form MDI e figlie se chiudessi il dataenviroment potrei interrompere la connessione all base dati per le altre form attive in quel momento....quindi credo non sia praticabile.
    Cmq grazie per l'informazione che mi potrà tornare utile in altri progetti.

    Ultima domanda. L'overhead creato dalla continua apertura e chiusura del dataenviroment di quanto appesantisce l'applicazione?

  7. #7
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Il seguente codice non chiude in assoluto la conn. con il DB, ma solo quella con il DE:

    With DataEnvironment1.Connection1
    .Close
    End With

    Quindi è quello che ti serve per il corretto funzionamento dei due oggetti DE e DR. Ti dirò di più, è anche il modo di tenere aggiornate le informazioni da visualizzare/stampare nel DataReport; infatti con il DR si corre il rischio di stampare dati non aggiornati, presenti nel DB ma non disponibili per il DE.
    Dato che apri e poi chiudi la connessione con il DE, non si verificano appesantimenti nello svolgimento del prog.
    LM

  8. #8
    Ottimo...grazie. Cmq per la cronaca non mi serve per una stampa su report, ma per delle form contenenti Listview, Datagrid e simili...

    Va bene lo steso giusto?

  9. #9
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Bhe, personalmente ho sempre usato il DE per l'oggetto DataReport, però non credo che vi siano differenze, si tratta sempre di connessioni DE/DB. Non ti rimane che provare ...
    LM

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.