Newsgroup: it.comp.appl.access
Titolo: Problemi con stampa unine

Dovrei stampare una lettera, premendo un pulsante, che corrisponda al record
che ho visualizzato con dati sia della maschera principale [M_PRINCIPALE]
che della sottomaschera [M_SECONDARIA].
La lettera è agganciata ad una query con la stampa unione.
Ho fatto un controllo su una casella che se c'è il campo bianco o "NO"
questa non stampa la lettera.
Pero quando nella casella di controllo c'è la "SI" questa mi stampa sempre
il primo record e non quello visualizzato.
I passaggi sono quelli sottoelencati, qualcuno mi potrebbe indicare dove
sbaglio?
Grazie
Valter
Private Sub cmdApriDoc_Click()
    Dim oDoc As word.Application
    Dim SetComCamp As Recordset
    Set SetComCamp = Forms![M_PRINCIPALE]
![M_SECONDARIA].Form.RecordsetClone
If COMBO_INVIO = "SI" Then
   Set oDoc = CreateObject("Word.Application")
    oDoc.Application.Documents.Open
"c:\ms_office\access\multe\multe_00_01\spett23.doc"
    oDoc.Visible = True
    oDoc.ActiveDocument.PrintOut
    oDoc.Quit
    Set oDoc = Nothing
Else
          MsgBox "Non è un ....... da stampare la lettera"
Exit Sub
End If
End Sub

 ha scritto nel messaggio
news:OTg78.27074$3J1.8...@news2.tin.it...

La lettera è del tipo "fattura"? Con una intestazione ed un elenco di
dettagli?
Ciao.
--
Sergio MAZZA

 ha scritto nel messaggio
news:a3lniq$jao$1...@canarie.caspur.it...

Forse indirettamnte potrebbe esse paragonata ad una fattura, in effetti ha
l'indirizzo è come per una fattura, dati che si prendono dalla maschera
principale e dei dati all'interno della lettera che vengono presi dalla
maschera agganciata, secondaria, e che hanno il collegamento per mezzo della
matricola che si trova nella maschera principale con il dato o piu dati che
si trovano nella secondaria
Grazie dell'attenzione
Valter

 ha scritto nel messaggio
news:C7B78.25861$om6.6...@news1.tin.it...

Cercando di spigarmi meglio, di solito o stampo da furi con word e stampa
unione pero sono delle lettere circolari, questa volta cambiando indirizzo
per ogni lettera, preso dalla maschera anagrafica pricniaple devo immettere
dei dati che si modificano (e devo controllare) che si agganciano
all'intereno del testo della lettera.
Mi auguro di essere stato chiaro.
In effetti dai passaggi scritti il controllo se la lettera devo stamparla
funziona ma non mi sceglie il nominativo che compare sulla maschera
Spero che mi puoi aiutare Grazie Valter


Dalle mie parti si dice: "...per star meglio qui giaccio...".
Prendo per buono che devi fare una stampa unione che produce un documento
per ogni record resitutito da una query/tabella.
Detto questo, se il documento word lo associ ad una query e nella stessa ci
inserisci la condizione che ti permette di filtrare la query per farti
restituire un solo record (quello visualizzato sulla form in questo caso),
quando esegui la stampa unione word si incarica di eseguire la query.
Nella query devi indicare quale campo prendere in considerazione per il
filtro ed inserire nella riga "condizione" il riferimento al controllo sulla
maschera, nel tuo caso mi sembra di aver capito che hai un controllo di tipo
casella combinata. Quindi nella riga scriverai:
Es.
'-------------
Forms![m_principale]![COMBO_INVIO]
'-------------
Il codice del bottone che avvia la stampa unione potrebbe essere:
'----------
Private Sub cmdApriDoc_Click()
Dim oDoc As word.Application
If Me!COMBO_INVIO = "SI" Then
   Set oDoc = CreateObject("Word.Application")
    oDoc.Application.Documents.Open
"c:\ms_office\access\multe\multe_00_01\spett23.doc"
    oDoc.Visible = True
    oDoc.ActiveDocument.PrintOut
    oDoc.Quit
    Set oDoc = Nothing
Else
          MsgBox "Non č un ....... da stampare la lettera"
end if
End Sub
'----------
Prova cosě...
Ciao.
--
Sergio MAZZA


Inanzi tutto Ti Ringrazio dell'attenzione che mi presti, anche se pongo dei
quesiti in modo non proprio chiaro.
Il passaggio da te indicatomi si impianta quando premo il pulsante, che da
il comando per stampare la lettera, e mi restituisce il comando inserito
nella query:
 Forms![m_principale]![COMBO_INVIO]
Comando che ho provato all'inizio il segno di uguale o niente, però in
automatico Access mi dà le parentesi quadre attorno al Forms.
Digitando manualmente SI mi stampa il primo record della tabella che trova
(nel campo INVIO) la parola SI.
Invece se nel campo INVIO trova la parola NO funziona anche se il primo
record della tabella +è digitato SI.
Dov'è che posso ancora sbagliare?
Spero di essere stato chiaro almeno questa volta
Grazie
Valter


Ma [COMBO_INVIO] è una casella combinata?
E' inserito nella form [m_principale]?
Ciao.
--
Sergio MAZZA

 ha scritto nel messaggio
news:a3qnjq$sml$1...@canarie.caspur.it...

E una semplice casella con abbinata, nelle possibilità delle proprietà -
"Origine riga", la predisposizione di SI o No o lasciarla in bianco. Dato
che implementa la tabella principale, dove esiste il collegamneto con la
maschera principale.
Ti ringrazio sia dell'attenzione che mi presti e inoltre spero che mi dai
l'Input necessario perchè tutte le volte che da una query cerco di
agganciare una maschera o inserire dei passaggi che mi hai indicato o sempre
avuto, anzi non ci sono mai riuscito.
Pertanto mi auguro che mi indichi il passaggio o predisposizione di Access
che sbaglio
Grazie Valter


No problem, però cerca di essere più generoso nell'esporre il problema;
non capisco come hai impostato (nella struttura della tabella) il campo
legato alla [combo_invio], se di tipo "Sì/No", come l'hai formattato e se
hai impostato un valore predefinito per i nuovi record (caldamente
consigliato).
Comunque dovrebbe ritornarti un valore 0 per No/Falso o -1 per Sì/True,
quindi se nella riga delle condizioni inserisci -1 (al posto del
Forms![m_principale]![COMBO_INVIO]) ed esegui la query dovresti vedere tutti
i record con il valore -1/Sì/True.
E' così?
Ciao.
--
Sergio MAZZA

 ha scritto nel messaggio
news:a3tcim$kmq$1...@canarie.caspur.it...



Allora cerco di ricapitolare, considerato l'errore della spedizione in
E-mail, e se non funziona torno al vecchio meccanismo che quando lancio la
stampa la query mi chiede il codice del cliente e lo stampo.
La casella di COMBO_INVIO non è altro che una casella di testo con due
caselle di testo da poter immettere il SI o NO, però l'ho predisposta in
questo modo perché un domani se voglio distinguere perché non ho spedito
lettere in quella tornata posso mettere N1 - N2 ecc o altro e così
recuperare con una query la situazione di invio di quel giorno e motivi
della non spedizione.
Casella che si trova nella maschera principale, nella sottomaschera ci sono
dei campi che vengono modificati o implementati nel periodo, non tutti i
giorni.
Dunque il passaggio attuale, dopo i tuoi consigli, è qullo sotto elencato:
  Private Sub cmdApriDoc_Click()
 Dim oDoc As word.Application
 If COMBO_INVIO = "SI" Then
        Set oDoc = CreateObject("Word.Application")
    oDoc.Application.Documents.Open
"c:\ms_office\access\multe\multe_00_01\spett22.doc"
    oDoc.Visible = True
    'DA DECIDERE QUALE è LA SCELTA SOTTOSTANTE
                         'oDoc.ActiveDocument.PrintOut '(per stampare senza
vedere il documento e Word)
    oDoc.ActiveDocument.PrintPreview  ' (Per vedere il documento prima di
stamparlo)
    oDoc.Quit
    Set oDoc = Nothing
Else
          MsgBox "Non è un ....... da stampare la lettera"
'Exit Sub
End If
End Sub
Nella riga criteri, della query,  che ci sono i campi per la stampa unione
della lettera, è inserita la seguente riga.
[forms]![INDACQUI_S]![COMBO_INVIO]
A questo punto si crea l'errore comparendo la riga della query, a questo
punto se nella casella digito "SI" mi stampa tutti i record con significato
il "SI" nella casella COMBO_INVIO
Invece se do l'invio senza digitare mi stampa il primo record che trova con
il "SI" e poi al rientro in Access mi fa il Debug della funzione e si ferma
con una linea gialla sulla riga seguente della funzione sopradescritta.
 oDoc.Application.Documents.Open
"c:\ms_office\access\multe\multe_00_01\spett22.doc"
E a questo punto mi blocca la lettera come ci fosse un'altra persona che sta
utilizzando la lettera.
Il mio scopo è quello di premere il pulsante e che stampi quel record
(cliente) che nella casella COMBO_INVIO ha digitato la SI
Spero che possa darmi una mano se no ti ringrazio lo stesso
Valter

 Valter
Dovresti cambiare qualcosina nel codice:
'-------------
- la: Dim oDoc As word.Application, mettila dopo la: If COMBO_INVIO = "SI"
Then; così ti crea l'istanza a word solo se [combo_invio]="Si";
- dopo la: Private Sub cmdApriDoc_Click() inserisci: Me.refresh;
- inserisci dopo la: Private Sub cmdApriDoc_Click() la: On error goto
cmdApriDoc_Error;
- inserisci prima di: End Sub le righe:
cmdApriDoc_Error:
    oDoc.Visible = True
    mgsbox err.number & ", " & err.description
'-------------
Comunque ho provato anch'io con una form con una combo+query e non mi
presenta nessun problema di selezione dati.
Controlla bene che è una stupidaggine ma se non la trovi è un casino...
Ciao.
--
Sergio MAZZA