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

creare subreport da vba

  1. #1
    ciapeo non è in linea Scolaretto
    Buongiorno a tutti e grazie in anticipo a tutti coloro che mi dedicheranno un pò del loro tempo.
    Vorrei sapere come fare per creare un subreport da vba.
    Potete gentilmente postare un esempio di codice?
    Mettiamo ad esempio di tovarci all' interno dell' evento Open di un report.
    come posso creare dei sottoreport a seconda del valore specificato in una variabile?

  2. #2
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Quote Originariamente inviato da ciapeo Visualizza il messaggio
    Buongiorno a tutti e grazie in anticipo a tutti coloro che mi dedicheranno un pò del loro tempo.
    Vorrei sapere come fare per creare un subreport da vba.
    Potete gentilmente postare un esempio di codice?
    Mettiamo ad esempio di tovarci all' interno dell' evento Open di un report.
    come posso creare dei sottoreport a seconda del valore specificato in una variabile?
    Domanda decisamente sibbilina.

    Solitamente con Access NON si creano controlli o oggetti Runtime.
    Detto questo c'è da capire perchè tu abbia questa esigenza, che a mio avviso, dipende solo da un'errata interpretazione delle esigenze.

    In pratica hai preso la strada sbagliata, ma per suggerirti quella giusta devi spiegarci cosa devi fare di così imprevedibile da non poterlo pianificare.
    ℹ️ Leggi di più su @Alex ...

  3. #3
    ciapeo non è in linea Scolaretto
    Ciao @Alex e grazie per l' interessamento . Allora : c'hai preso . Molto probabilmente quello che desidero fare non è la strada migliore e quindi non mi è strettamente indispensabile. Si tratta per lo più di un modo per imparare qualcosa di nuovo, quindi se mi puoi spiegare come fare te ne sarei grato lo stesso. Passo ora a spiegare la mia situazione nel dettaglio :
    In una tabella raccolgo i nomi degli studenti di una classe e i loro voti ottenuti in 4 materie. tramite una maschera seleziono il nome di uno studente. questa operazione mi porta all'apertura di una seconda maschera che mostra il nome dello studente selezionato e una casella di testo per ogni materia, contenente i voti. Da qui vorrei aggiungere un pulsante che mi permetta di aprire un'anteprima di report contente i dati visualizzati nell'ultima maschera. Semplicissimo credo , non fosse che è la prima volta che affronto i report non avendone mai avuto esigenza.
    Quale strada mi conviene seguire?

  4. #4
    smart_1976 non è in linea Scolaretto
    ciao, ogni studente penso che abbia un ID oppure una matricola come codice univoco...quindi creati un pulsante e su clic inserisci questo codice:
    Per un campo numerico:
    DoCmd.OpenReport "MioReport",acViewPreview , , "Id =" & Me!Id
    Per un campo testo:
    DoCmd.OpenReport "MioReport",acViewPreview , , "Azienda = " & Chr$(34) & Me!Azienda & Chr$(34)

  5. #5
    ciapeo non è in linea Scolaretto
    Qualcosa di simile . Credo il tuo post mi possa essere di aiuto. Ora provo e ti faccio sapere

  6. #6
    ciapeo non è in linea Scolaretto
    Ho provato la seconda soluzione che mi hai proposto .....
    Ho fatto una prova creando prima un report in creazione guidata , con layout tabulare. Tutto bene.
    Vedo un report con i record che mi interessano e senza ripetizioni .... ma non è il rusultato che voglio ottenenere.
    Quello che voglio è qualcosa di molto simile al layout verticale della crazione guidata . Se lo utilizzo però vedo delle duplicazioni. Mi spiego :
    nella mia tabella il nome studente si presenta in più record, uno per ogni voto in ogni materia ; quindi se "Mario Rossi" ha preso 3 voti in "Storia" ho 3 record relativi a "Mario Rossi".
    Nel report, se metto le caselle di testo nell'intestazione di pagina le vedo una volta sola ( vedo il dato relativo al primo record) .Se le metto nel corpo le vedo duplicate un numero di volte pari al numero dei record.
    Sta qui il mio problema. E' per questo che avevo tentato la prima strada

  7. #7
    ciapeo non è in linea Scolaretto
    Ri-Buongiorno a tutti .
    Ho appena ripreso in mano in mano la parte report del mio database.
    Penso che elaborero una soluzione seguendo l'indicazione datami fin'ora, e poi la posterò per tutti.
    Nel frattempo rinnovo la mia domanda iniziale.
    Chi sa rispondermi?

  8. #8
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Quote Originariamente inviato da ciapeo Visualizza il messaggio
    Ri-Buongiorno a tutti .
    Ho appena ripreso in mano in mano la parte report del mio database.
    Penso che elaborero una soluzione seguendo l'indicazione datami fin'ora, e poi la posterò per tutti.
    Nel frattempo rinnovo la mia domanda iniziale.
    Chi sa rispondermi?
    Non hai dato i dettagli necessari.

    Ritengo che tu possa non aver strutturato in modo corretto il database...!
    Nel tuo caso serve implementare una relazione MOLTI-MOLTI
    Tabella_Studenti
      IDStud
      Nome
      Cognome
     
    Tabella_Materie
      IDMat
    NomeMateria
     
    Tabella_Dettaglio
      IDDettaglio
      IDStud
      IDMat
      Data
      Voto
      Note
    
    Con questa struttura la realizzazione del report che hai chiesto dovrebbe essere più semplice.
    ℹ️ Leggi di più su @Alex ...

  9. #9
    ciapeo non è in linea Scolaretto
    allora ....
    ho reimpostato le tabelle come mi hai suggerito e ho creato le relazioni.
    Assumendo che i campi in grassetto siano chiavi primarie, le relazioni sono di tipo uno-molti ( es:Tabella_Studenti.IDStud con Tabella_dettaglio.IDStud). Lo preciso per capire se questo diviene un problema.
    Assumiamo anche per semplicità che le tabelle contengano solo i dati che mi interessa visualizzare nel report specifico, come ad esempio i 4 voti ottenuti da Mario Rossi in storia, matematica e italiano.
    Tutto molto bello e molto ordinato ... ma ancora non arrivo a visualizzare quel che voglio.
    Sicuramente sbaglio nel passaggio successivo.
    Io creo un report in modalità struttura , do come origine record la seguente query per includere più dati e opzioni possibili :
    SELECT Tabella_Dettaglio.*, Tabella_Materie.*, Tabella_Studenti.*
    FROM Tabella_Studenti INNER JOIN (Tabella_Materie INNER JOIN Tabella_Dettaglio ON Tabella_Materie.IDMat = Tabella_Dettaglio.IDMat) ON Tabella_Studenti.IDStud = Tabella_Dettaglio.IDStud;
    Nell' intestazione pagina metto una casella di testo con origine record "Nome" per vedere il nome dello studente.
    Nel corpo una casella di testo con origine record "NomeMateria" .
    apro il record da vba in questo modo:
    DoCmd.OpenReport "Report", acViewPreview, , "Tabella_Dettaglio.IDStud = 1"
    Il risultato che ottengo è corretto, ma non mi soddisfa perchè nel corpo continuo a vedere tante caselle di testo quanti sono i voti ottenuti da Mario nelle varie materie ..... mentre io ne vorrei una sola che li contenga tutti ... E' così difficile da ottenere? come fare?

  10. #10
    ciapeo non è in linea Scolaretto
    OK BENE... ho risolto ... anche se non c'era nulla da risolvere ... con un pò di imbarazzo ma nella speranza che altri inesperti di report come me non perdano tempo facendo lo stesso errore .... confesso:
    utilizzavo la proprietà RecordSource invece che la RowSource.....
    vabbè io ho risolto ....

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Report e subreport
    Da lucentr nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 14-10-2016, 16:02
  2. Access: Criteri nella SUBReport
    Da BLUES nel forum Microsoft Access
    Risposte: 5
    Ultimo Post: 02-11-2013, 11:11
  3. Evento open su SubReport
    Da alfonsog nel forum Microsoft Access
    Risposte: 13
    Ultimo Post: 24-10-2013, 21:52
  4. [ACCESS VBA] Centrare subreport
    Da andromeda nel forum Microsoft Access
    Risposte: 1
    Ultimo Post: 05-12-2007, 11:22
  5. subreport in report
    Da Luisa nel forum Visual Basic 6
    Risposte: 5
    Ultimo Post: 17-03-2004, 15:00