+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 10 su 10

Discussione: duplicare maschera con 2 sottomaschere

  1. #1
    BEETH non è in linea Novello
    Post
    25

    duplicare maschera con 2 sottomaschere

    buongiorno,
    sto cercando di duplicare una maschera con altre due sottomaschere a cascata senza riuscirci.
    Il codice che duplica la maschera e la sottomaschera funziona, non riesco a duplicare la seconda sottomaschera.

    Per essere più chiaro ho messo in condivisione il DB all'indirizzo:
    https://drive.google.com/open?id=1_5...i888kpxuX_wzWZ

    Ho tre tabelle (Tab1, Tab2, Tab3) con 2 relazioni "1 a molti" e con conseguenti 3 maschere (Maschera1, Sottomaschera2, Sottosottomaschera3). Il primo campo è una PK legato al secondo campo della tabella seguente.
    Ogni campo della maschera ha lo stesso campo della tabella di origine ma con una "F" finale.


    Il codice ,attivato da un bottone nella prima maschera , che duplica le prime 2 form, e funziona , è questo:

    codice:
    Option Compare Database
    Option Explicit
    
    Private Sub Comando18_Click()
    'CODICE ORIGINALE DEL BOTTONE DUPLICA EVENTO
    
    Dim Messaggio1 As String
    Messaggio1 = MsgBox("Sto duplicando l'evento che stai visualizzando in questo momento! Vuoi proseguire con la duplicazione?", vbYesNo)
    If Messaggio1 = vbNo Then
    Exit Sub
    Else
        
        Dim sSQL As String
        Dim db As DAO.Database
        Dim lngIDcontratto As Long 'IDCrmDett1 è l'iD della form
        Dim lngIDIngr As Long 'terza form
        Dim sSQL2 As String 'terza form
    
        Set db = DBEngine(0)(0)
    
        If Me.Dirty Then
            Me.Dirty = False
        End If
        If Me.NewRecord Then
            MsgBox "Seleziona contratto da duplicare."
        Else
    
            'Duplica l'evento (maschera principale/Tab1)
            With Me.RecordsetClone
                .AddNew 'Crea un nuovo record della form
                    !datacontratto = Me.datacontrattoF 'campo Tab1 = campo form
                    !numerocontratto = Me.numerocontrattoF 'campo Tab1 = campo form
                    !clientecontratto = Me.clientecontrattoF 'campo Tab1 = campo form
                    
                .Update
                .Bookmark = .LastModified 'vai all'ultimo modificato
                
                'Duplica la maschera secondaria INIZIO
                lngIDcontratto = !IDcontratto  'PK chiave primaria della tabella1
    
                   sSQL = "INSERT INTO Tab2 (idcontratto2, datadescrizione, notedescrizione) " & _
                        "SELECT " & lngIDcontratto & " As Newidcontratto2, i.datadescrizione, i.notedescrizione" & _
                        "  FROM Tab2 As i" & _
                        " WHERE (i.idcontratto2 = " & Me.IDcontrattoF & ");"
    
                    db.Execute sSQL, dbFailOnError
                'Duplica la maschera secondaria FINE
                
    'Duplica la maschera 3 INIZIO
    '   sSQL2 = "INSERT INTO Tab3 (iddescrizione2, dettaglioNote, dettagliodata) " & _
    '   "SELECT " & lngIDIngr & " As Newiddescrizione2, i.dettaglioNote, i.dettagliodata" & _
    '   "  FROM Tab3 As i" & _
    '   " WHERE (i.iddescrizione2 = " & Forms!Maschera1!Sottomaschera2.idcontratto2F & ");"
    '   db.Execute sSQL2, dbFailOnError
    'Duplica la maschera 3 FINE
                
                Me.Bookmark = .LastModified 'vai all'ultimo modificato
            End With
        End If
    
        Set db = Nothing
    
        End If
    
    MsgBox "Il Maschera e la sottomaschera sono state duplicate con successo.", vbInformation + vbOKOnly, "Contratto"
    End Sub

    Come vedete alla riga 'Duplica la maschera 3 INIZIO
    ho provato ad inserire un nuovo codice ma mi da errore "impossibile trovare il campo sottomaschera 2".

    Evidentemente c'è qualcosa che mi sfugge nel secondo SQL di accodamento.
    Qualcuno può aiutarmi per favore ad risolvere questo problema?

    Grazie delle risposte

  2. #2
    CarlettoFed non è in linea Novello
    Post
    38

    Richiesta

    Non si riesce a scaricare il file condiviso.

  3. #3
    OsvaldoLaviosa non è in linea Topo di biblioteca
    Luogo
    Conversano
    Post
    2,801
    Quote Originariamente inviato da BEETH
    sto cercando di duplicare una maschera con altre due sottomaschere a cascata
    A cosa serve fare questa operazione?

    Quote Originariamente inviato da BEETH
    Ho tre tabelle (Tab1, Tab2, Tab3) con 2 relazioni "1 a molti" e con conseguenti 3 maschere (Maschera1, Sottomaschera2, Sottosottomaschera3). Il primo campo è una PK legato al secondo campo della tabella seguente.
    Hai provato la procedura guidata di creazione maschera/sottomaschere che prevede la sincronizzazione fino al terzo livello?
    Ditemi i campi di tutte le vostre tabelle.

  4. #4
    BEETH non è in linea Novello
    Post
    25
    ciao Carletto,
    ho provato, al secondo tentativo lo scarica

  5. #5
    BEETH non è in linea Novello
    Post
    25
    Quote Originariamente inviato da OsvaldoLaviosa Visualizza il messaggio
    A cosa serve fare questa operazione?
    Ciao Osvaldo della risposta. Siccome ci sono contratti uguali e ripetuti nel tempo, diventa più pratico duplicare il contratto e modificare solo la data del contratto ed eventualmente qualche altra variante.


    Hai provato la procedura guidata di creazione maschera/sottomaschere che prevede la sincronizzazione fino al terzo livello?
    ???? Non capisco. La maschera e le altre 2 sottomaschere sono già state create e collegate tra loro attraverso i campi Master e secondari. A meno che tra i menu ci sia un automatismo di duplicazione che io non conosco.

  6. #6
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    15,628
    Non c'è sempre necessità di allegare file... se serve te lo si propone... ma preferiamo analizzare la descrizione e ragionarci insieme... sarà utile anche domani rileggendo il post quando sicuramente il file non sarà più accessibile.
    Prova cosi
    codice:
    Forms!Maschera1!Sottomaschera2.Form.idcontratto2F
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  7. #7
    BEETH non è in linea Novello
    Post
    25
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Non c'è sempre necessità di allegare file... se serve te lo si propone... ma preferiamo analizzare la descrizione e ragionarci insieme... sarà utile anche domani rileggendo il post quando sicuramente il file non sarà più accessibile.
    Prova cosi
    codice:
    Forms!Maschera1!Sottomaschera2.Form.idcontratto2F
    Grazie Alex, provo subito. Ho allegato il DB per praticità vostra, ma quando vorrete la descrizione ve la manderò volentieri.

  8. #8
    BEETH non è in linea Novello
    Post
    25
    Provato, ancora errore: runtime 2465. impossibile trovare il campo "sottomaschera2" a cui viene fatto riferimento nell'espressione

  9. #9
    OsvaldoLaviosa non è in linea Topo di biblioteca
    Luogo
    Conversano
    Post
    2,801
    Quote Originariamente inviato da OsvaldoLaviosa
    Hai provato la procedura guidata di creazione maschera/sottomaschere che prevede la sincronizzazione fino al terzo livello?
    Quote Originariamente inviato da BEETH
    ???? Non capisco. La maschera e le altre 2 sottomaschere sono già state create e collegate tra loro attraverso i campi Master e secondari. A meno che tra i menu ci sia un automatismo di duplicazione che io non conosco.
    Non conosco i dettagli di quello che succede veramente. La procedura guidata di creazione maschera + sottomaschera + sotto/sottomaschera produce il meccanismo Campi master e secondari sì tra Maschera1 e Maschera2. La maschera 3 appare "visivamente/fisicamente" dentro la Maschera1, ma siccome deve dare conto dei propri dati a Maschera2, la procedura guidata elabora un CODICE VBA "ad hoc" per fare sincronizzare Maschera2 con Maschera3.
    Ditemi i campi di tutte le vostre tabelle.

  10. #10
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    15,628
    Quote Originariamente inviato da BEETH Visualizza il messaggio
    Provato, ancora errore: runtime 2465. impossibile trovare il campo "sottomaschera2" a cui viene fatto riferimento nell'espressione
    Perchè sei distratto e/o pasticcione... e confondi i Nomi di Oggetti coni Nomi dei Container...!!!
    Intanto non esiste il controllo [idcontratto2F]... ha ragione lui... la [F] non c'è... esiste infatti [idcontratto2]
    Poi la Maschera che chiami [Sottomaschera2] in realtà si chiama [Form2]...
    Così infatti Funziona..., nel senso che non da quel tipo di ERRORE, poi ne restituisce un'altro, ben più grave ma ci guardi tu con calma.
    codice:
     Me!Form2!idcontratto2
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi