Newsgroup: it.comp.appl.access
Titolo: Dritta per un problema di etichette

Salve a tutti e grazie in anticipo per un eventuale aiuto.
 
Vi spiego il mio problema:
Ho un database in cui ho una tabella ordini. Da questa tabelle devo ricavare il report per le etichette.Fino a qui non ci sarebbero problemi.Ma le etichette vanno create in base al numero massimo di quantita in una scatola.
 
Mi spiego meglio con un esempio:
 
nella tabella ordine ho un record con la data, il nome della ditta, nome prodotto e la quantita ordinata.
 
25/3/2014----pane e vino----Pizza Bianca----5
 
Nella tabella prodotti c'e' un campo max_quantita'_scatola,mettiamo in questo caso 1
 
Allora dovro' stampare 5 etichette da 1 l'uno.
 
Ho provato a pensare a vari modi, ma non riesco a trovare una soluzione concreta da sviluppare.
 
Riuscireste a darmi una mano perfavore?
 
Grazie in anticipo

Forse sto per dire una stupidata   :-(
 
quindi hai una tabella/Query con i vari record 
da stampare singolarmente su etichetta
 
Ogni record riporta fra l'altro numero che 
corrisponde alle etichette da stampare
 
Apri un recordset che cicla tutti i record
e per ogni record:
- Apre il report della etichetta
- lo stampa il numero di volte necessario
- richiude il report
 
Forse sono stato troppo sintetico,  caso mai facci sapere
Oppure se qualcun' altro ha idee migliori 
imparo qualcosa anch'io :)
 
.


Ciao e grazie per la risposta
allora il numero di etichetta sara' dato dalla quantita ordinata, diviso la quantita max per scatola dalla tabella prodotti.
 
Veramente deve preparare il report delle etichette che sono su un foglio a4 prima di stampare, non a singola etichetta.
 
Io avevo pensato di fare la querry per data di ordine.Da li andare attraverso ogni record, e per ogni record, crearlo nuovamente in un altra tabella per tot volte quanto e' il risultato della divisione.
E da li fare il report per le etichette
Volevo farlo attraverso macro senza usare Visual basic. voi cosa ne pensate?
 
avete un idea migliore??
 

> avete un idea migliore??
 
 
Idee tante,    il problema è poi metterle in pratica  :-)
 
In effetti anch' io avevo inizialmente pensato a una query che 
dato un numero ( N ) presente in ogni record vada a ricreare
quel record appunto N volte
 
 
ma non sono riuscito a crearla con il solo linguaggio di SQL
Magari qualcuno piu esperto potrebbe aiutarci
 
 
con il recordset e VBA è invece facile,
 
 
[code]
Public Sub StampaReport()
 
Dim DBx As DAO.Database
Set DBx = DBEngine(0)(0)
 
Dim Rsx As DAO.Recordset
Set Rsx = DBx.OpenRecordset("Tabe", dbOpenDynaset)
 
Dim X As Integer
 
Rsx.MoveFirst
    Do Until Rsx.EOF
    DoCmd.OpenReport "Rep1", acViewPreview, "", "[Id]=" & Rsx.Fields("Id").Value, acNormal
 
        For X = 1 To Rsx.Fields("N4").Value  ' N4 è il numero di stampe
            DoCmd.RunCommand acCmdPrint
            'MsgBox X
            ' oppure query di inserimeno in tabella temporanea
        Next
    DoCmd.Close (acReport), "Rep1"
    Rsx.MoveNext
    Loop
 
End Sub
[/code]
 
.
 
 


 
 
problema che ho affrontato tempo fa, ti conviene andare di vba...
tieni conto che non sempre stamperai un A4 pieno, ma alcune volte magari 
ti restano disponibili alcune etichette di un foglio A4.
Quindi il programma deve chiederti prima di stampare sia quante 
etichette vuoi stampare, sia quante lasciarne vuote prima di iniziare la 
stampa. In questo modo avrai zero sprechi.
 
ciao
BFS
 

 
Grazie a tutti per le risposte.
Volevo evitare di usare visual basic, perche sono abituato a C e php, non sono proprio una cima con la sintassi e la struttura Vb.
Comunque, ho cominciato e sto riusciendo ad usare la macro. Per il loop basta usare una macro e alla proprieta Ripetizione inserire la condizione.
Comunque in serata vi faccio sapere come va. Ma se ci sono altre idee e consigli , ne sono piu che felice.
 
Io la penso in questa maniera:" Io imparo da te, tu impari da me, tutti imparano da tutti"..il bello della comunita degli sviluppatori :-)
 
Grazie ancora in anticipo a tutti

Certamente meglio se usi VBA ....
 
Pero con i vecchi trucchi dimenticati si riesce a fare di tutto
 
Fatti una tabella di nome "Tabe"
- Id --- Contatore --- Key
- Des1 -- Testo 
- Num --- Numerico  ( il numero di etichette da stampare )
 
Fai una tabella di solo appoggio di nome "T1" con il solo campo
- Nux --- Numerico --- Key
Nel campo Nux ci metti meticolosamente tutti i numeri da 1 fino al numero massmo di etichette che potresti dovere stampare
 
 
Poi fai questa query e i record di "Tabe" vengono presi tante volte quante indicato nel campo "Tabe.Num"
 
[code]
SELECT 
Tabe.Id, 
Tabe.Des1, 
Tabe.Num
FROM 
Tabe 
RIGHT JOIN 
T1 
ON 
Tabe.Num>=T1.Nux
WHERE 
(((Tabe.Num) Is Not Null))
;
[/code]
 
.

Salve ragazzi e grazie ancora..
comunque ho risolto usando le macro, usate a mo di codice :-).
Praticamente ho creato una tabella holding e tramite macro usate come loop con varie espressioni di controllo e con condizioni ho ricreato nella tabella holding gli ordini ma basati sulle quantita'; quindi ripetute quante volte serviva e poi ho fatto le etichette da tale tabella.
 
grazie a tutti per l'aiuto 

:-)