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

    [VB6] Duplicazione form MDIchild

    Ciao.
    Ho un form MDIchild (form1) e un form normale-non MDI (form2).
    Nel form1 visualizzo una griglia con dei dati, poi lancio il form2.
    Dal form2 seleziono dei record che devono essere inseriti nella griglia del form1. Quindi dal form2 faccio un refresh della griglia e funziona.
    Il problema è che quando dal form2 faccio il refresh della griglia(del form1), si apre un nuovo form1 con la griglia aggiornata.
    Alla fine ho due form1 visualizzati, uno con lagriglia aggiornata, l'altro no.

    Questo è il codice:
    codice:
    'Ricarica i dati nella griglia del frmFatturazione.
    'Controllo se RS del frmFatturazione è aperto per refresh griglia.
    If (frmFatturazione.RsDettagli.State = adStateOpen And frmFatturazione.Cn.State = adStateOpen) Then
        frmFatturazione.RsDettagli.Close
        frmFatturazione.Cn.Close
        frmFatturazione.Cn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=InfoManager.mdb;"
        frmFatturazione.Cn.CursorLocation = adUseClient
        frmFatturazione.qDettagli = "SELECT * FROM FatturaDettagli WHERE IDFattura=" & frmFatturazione.IDFatt
        frmFatturazione.RsDettagli.Open frmFatturazione.qDettagli, frmFatturazione.Cn, adOpenDynamic, adLockOptimistic
    Else
        frmFatturazione.Cn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=InfoManager.mdb;"
        frmFatturazione.Cn.CursorLocation = adUseClient
        frmFatturazione.qDettagli = "SELECT * FROM FatturaDettagli WHERE IDFattura=" & frmFatturazione.IDFatt
        frmFatturazione.RsDettagli.Open frmFatturazione.qDettagli, frmFatturazione.Cn, adOpenDynamic, adLockOptimistic
    End If
    'Refresh griglia.
    Set frmFatturazione.FlexGridDettagli.DataSource = frmFatturazione.RsDettagli
    frmFatturazione.FlexGridDettagli.Refresh
    Come è possibile aggiornare la griglia sul form1 già aperto, evitando che se ne apra uno nuovo?
    Grazie.

  2. #2
    Ragazzi, ma non avete idee?
    ah!...questo è il codice del form MDIchild
    codice:
    Private Sub FlexGridFatture_Click()
    'Mi ricavo l'ID del cliente.
    FlexGridFatture.Col = 2
    IDCli = FlexGridFatture.Text
    'Mi ricavo l'ID della fattura su cui ho cliccato.
    FlexGridFatture.Col = 1
    'Inserisco l'ID nella variabile IDFatt per prendere i dettagli della fattura.
    IDFatt = FlexGridFatture.Text
    'Controllo se RS è già aperto. Se è aperto lo chiudo.
    If (RsDettagli.State = adStateOpen) Then
        RsDettagli.Close
        qDettagli = "SELECT * FROM FatturaDettagli WHERE IDFattura=" & IDFatt
        RsDettagli.Open qDettagli, Cn, adOpenDynamic, adLockOptimistic
    Else
        'Apro il RS e mi ricavo i dettagli della fattura.
        qDettagli = "SELECT * FROM FatturaDettagli WHERE IDFattura=" & IDFatt
        RsDettagli.Open qDettagli, Cn, adOpenDynamic, adLockOptimistic
    End If
    'Carico la griglia.
    Set FlexGridDettagli.DataSource = RsDettagli
    FlexGridDettagli.Refresh
    'Fine TAB2_________
    
    If (RsClienti.State = adStateOpen) Then
        RsClienti.Close
        qClienti = "SELECT * FROM Clienti,FatturaTestata WHERE Clienti.IDCliente = FatturaTestata.IDCliente"
        RsClienti.Open qClienti, Cn, adOpenDynamic, adLockBatchOptimistic
        'Filtro ulteriormente RS per prendere solo i dati relativi alla fattura selez.
        RsClienti.Filter = "IDFattura=" & IDFatt
        ScriviCampi
    Else
        qClienti = "SELECT * FROM Clienti,FatturaTestata WHERE Clienti.IDCliente = FatturaTestata.IDCliente"
        RsClienti.Open qClienti, Cn, adOpenDynamic, adLockBatchOptimistic
        RsClienti.Filter = "IDFattura=" & IDFatt
        ScriviCampi
    End If
    
    SSTabFatturazione.Tab = 1
    
    End Sub

  3. #3
    Il dubbio che mi è venuto è che sbaglio a richiamare il form MDIchild, perchè dal form normale (è il frmProdotti) richiamo il form "frmFatturazione", che è il form MDIchild. Ma io nel MDIpadre ho dichiarato "dim Fatturazione as new frmFatturazione".
    Quindi, forse, dovrei richiamare fatturazione.....ma non mi funziona!!!

    Per favore aiutatemi non ci sto capendo più nulla con questi MDI!!!

  4. #4
    nozioni generali:

    [list=1][*]all'avvio del progetto scegliere di avviare direttamente il form MDi oppure aviare un modulo[*]per le variabili publiche che devono essere condivise da più form (MDI o meno) dichiararle nel modulo in questo modo "Public Var as Tipo"[*]per le variabili pubbliche di un form dichiararle all'inizio di un from in questo modo "Public/Private Var as Tipo"[*]pper non commettere errori sull'assegnazione di valori a variabili che magari non esistono ricordarsi di mettere all'inizio di ogni form (prima della dichiarazione di variabili pubbliche) le parole "Option Explicit"[/list=1]

    ho risolto il tuo problema????
    (SI=bene, ciao; NO=male, dimmi qual'è il problema)
    Let's your dream came true!

  5. #5
    Ciao. Grazie di avermi risposto.
    Il problema è risolto si e no....
    Nel senso, che ciò che mi hai descritto è ciò che in ho fatto anch'io.
    Il problema sembra che sia risolto con l'eliminazione dell'assegnazione:
    codice:
    Private Sub mnuFattura_Click()
    Dim Fatture As New frmFatturazione
    Fatture.Show
    End Sub
    ...nel MDIpadre.

    Ora ho semplicemente messo:
    codice:
    Private Sub mnuFattura_Click()
    frmFatturazione.Show
    End Sub
    dove frmFatturazione è dichiarato come Form MDIchild.
    Ma se così funziona, perchè tutti i manuali-articoli che ho visto dicono di dichiarare il MDIchild come nel primo caso?

  6. #6
    nel primo caso dichiari una istanza del form MDIchild....questa tecnica in genere va utilizzata esclusivamnte nel modulo dove le operazioni da compiere per mostrare un form sono tre...istanza(dim nome as new nome_form), caricamento(load nome) e mostrare a video (nome.show)

    se vuoi richiamare cmq l'istanza nel modulo metti:
    Public Fatture As New frmFatturazione

    e in qualsiasi form puoi richiamarlo così:

    Fatture.Show


    Let's your dream came true!

  7. #7
    Grazie delle informazioni.

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.