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

Discussione: Word 97, Access 97, Macro e Stampa unione.

  1. #1
    nafets non è in linea Novello
    Post
    3

    Word 97, Access 97, Macro e Stampa unione.

    Buongiorno a tutti.

    Come si evince dal titolo del thread sono alle prese con un po' di cose nel mondo Microsoft di tanto tempo fa (versione 97).

    Il mio probema è il seguente: ho un DB di Access 97 con due tabelle A e B. Una di queste (la tabella A) è agganciata in stampa unione a un documento di Word 97 chiamato pippo.doc. Aggancio riuscito perfettamente, infatti ottengo tante pagine sul documento pippo.doc per quanti sono i record della tabella A e su ogni pagina sono distribuiti i vari campi del record compreso il campo X che ovviamente varia al variare dei record.
    A questo punto mi è necessario su ogni pagina di Word generata dalla stampa unione di cui sopra inserire una tabella word andando a pescare i dati dalla seconda tabella di access (tabella B) presente nel DB.
    Per fare questo ho creato una macro di prova sul documento pippo.doc che si aggancia al db pesca i dati dalla tabella B con una query nel cui criterio di select c'è il campo X (proveniente dalla stampa unione con la tabella A) e li restituisce formattati sotto forma di tabella word su ogni pagina di pippo.doc.
    Riassumendo su ogni pagina del documento pippo.doc dovrò avere una tabella word che che sarà diversa visto che su ogni pagina il campo X varia. La macro funziona, ma c'è un effetto collaterale.

    La macro che ho fatto su pippo.doc, una volta eseguita, crea una tabella su ogni pagina della stampa unione, ma il contenuto è uguale su tutte le pagine del documento, ovvero: se lancio la macro sulla pagina 2 di pippo.doc la macro prende il campo X del record 2 elabora e crea la tabella relativa che inserisce correttamente nella pagina 2, ma che ripete identica su tutte le restanti pagine, mentre in realtà nelle altre ne avrebbe dovute creare di differenti sulla base del valore di X presente in quelle pagine.

    Quello che interessa a me non è per forza automatizzare l'esecuzione della macro in una volta sola: basterebbe anche poterla eseguire sulla pagina di pippo.doc che magari sto visualizzando in quel momento, ma facendo in modo che la generazione di questa tabella non si propaghi anche alle pagine precedenti e successive con i dati sbagliati.

    Ringrazio tutti fin da ora per l'aiuto che vorrete darmi.

  2. #2
    monello non è in linea Scribacchino
    Luogo
    Roma
    Post
    1,168
    Il mio probema è il seguente: ho un DB di Access 97 con due tabelle A e B.
    Le 2 tabelle sono relazionate tra loro ? Se si come ?

    Aggancio riuscito perfettamente, infatti ottengo tante pagine sul documento pippo.doc per quanti sono i record della tabella A e su ogni pagina sono distribuiti i vari campi del record compreso il campo X che ovviamente varia al variare dei record
    OK per adesso ...

    A questo punto mi è necessario su ogni pagina di Word generata dalla stampa unione di cui sopra inserire una tabella word
    E quindi ?

    Per fare questo ho creato una macro di prova sul documento pippo.doc che si aggancia al db pesca i dati dalla tabella B con una query nel cui criterio di select c'è il campo X (proveniente dalla stampa unione con la tabella A) e li restituisce formattati sotto forma di tabella word su ogni pagina di pippo.doc.
    Posta la sintassi della QUERY così iniziamo a capirci qualcosa ...

    Riassumendo su ogni pagina del documento pippo.doc dovrò avere una tabella word che che sarà diversa visto che su ogni pagina il campo X varia. La macro funziona, ma c'è un effetto collaterale.

    La macro che ho fatto su pippo.doc, una volta eseguita, crea una tabella su ogni pagina della stampa unione, ma il contenuto è uguale su tutte le pagine del documento, ovvero: se lancio la macro sulla pagina 2 di pippo.doc la macro prende il campo X del record 2 elabora e crea la tabella relativa che inserisce correttamente nella pagina 2, ma che ripete identica su tutte le restanti pagine, mentre in realtà nelle altre ne avrebbe dovute creare di differenti sulla base del valore di X presente in quelle pagine.

    Quello che interessa a me non è per forza automatizzare l'esecuzione della macro in una volta sola: basterebbe anche poterla eseguire sulla pagina di pippo.doc che magari sto visualizzando in quel momento, ma facendo in modo che la generazione di questa tabella non si propaghi anche alle pagine precedenti e successive con i dati sbagliati.

    Ringrazio tutti fin da ora per l'aiuto che vorrete darmi.
    Ripeto la domanda iniziale ... sai cosa sono i DATABASE RELAZIONALI ? Sai come si mettono in relazione due o più tabelle ?

    Prova ad eseguire una QUERY con le due tabelle messe in relazione ... che può variare a seconda del contesto ... non ci dici nulla in merito ... difficile aiutarti nella relazione ...

    Cerca di essere meno generico e più completo e preciso quando posti domande di carattere tecnico , questo vale qui ma anche altrove , in questo modo aiuti noi a capire meglio la situazione , e tu ad avere supporto più specifico e meno confusionario.

    Posta anche un'immagine delle relazioni che hai fatto , oltre alla struttura delle tabelle , dei campi , se ci sono campi duplicati , se invece sono tabelle normalizzate ...

  3. #3
    nafets non è in linea Novello
    Post
    3
    Salve,
    grazie per la risposta.
    Il database è relazionale le due tabelle sono in relazione tramite il campo id_gruppo.
    Per spiegarmi meglio: ho la tabella A che ha i campi: nome, cognome, datanascita, ruolo, id_gruppo. Questa tabella è agganciata per la stampa unione con un documento Word97. In questa tabella sono presenti solo persone di tipo DIRIGENTE.
    Sempre nello stesso database ho la tabella B che ha i seguenti campi: nome, cognome, datanascita, ruolo, id_gruppo. Questa tabella contiene sia i nominativi presenti nella tabella A sia nominativi di persone che non sono DIRIGENTE ma possono far parte di uno stesso gruppo.
    Come dicevo, dalla stampa unione sulla tabella A riesco ad ottenere un campo ovvero id_gruppo che poi uso nel codice della macro per fare una select sulla tabella B e creare la tabella con l'elenco delle persone di quel determinato id_gruppo.
    Il mio problema è che la tabella è ripetuta identica su tutte le pagine del documento Word.
    Spero di aver fatto un po' più di chiarezza.

  4. #4
    monello non è in linea Scribacchino
    Luogo
    Roma
    Post
    1,168
    Noto una mancata NORMALIZZAZIONE DEL DB proprio nelle tabelle ...

    Non sono necessarie 2 tabelle con gli stessi campi , ma puoi semplicemente aggiungere alla tabella A o B , scegli tu , il campo di tipo BOOLEANO -> DIRIGENTE di tipo -> Sì/No (-1/0 oppure Vero/Falso)

    In questo modo avrai tutte le informazioni necessarie senza campi duplicati , cosa inutile e sconsigliata , per quanto riguarda una gestione efficace ed ottimale del database.

    Ultima cosa ... la relazione tra le 2 tabelle A e B come è stata impostata ? UNO A MOLTI - UNO A UNO ?

    Tieni una sola tabella , aggiungi il campo mancante e sei a posto così ... ciao !!

  5. #5
    nafets non è in linea Novello
    Post
    3
    Salve,

    grazie per il suggerimento. Lo so che il DB non è normalizzato, ma non può essere toccato. Comunque non è quello il punto che devo risolvere.
    Come ho già detto inizialmente il DB non mi dà problemi. Io riesco ad agganciare in stampa unione l'origine dati (tabella A) che mi serve e riesco a fare una query su un'altra tabella (tabella B) dello stesso DB costruendola in base al parametro id_gruppo e estraendo i dati che servono.

    Quello che non riesco a fare è: 1. o automatizzare l'esecuzione della macro in una volta sola in modo che su ogni pagina si crei la tabella con i dati corretti diversi ogni volta, 2. oppure poterla eseguire sulla pagina aperta del mio documento Word e che sto visualizzando in quel momento, ma facendo in modo che la generazione di questa tabella non si propaghi anche alle pagine precedenti e successive con i dati sbagliati. :-(

+ Rispondi al Thread

Tag per questa discussione

Permessi di invio

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