Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Gestione Richieste e COMPILAZIONE STAMPE su Gestionale gia' fatto...

Ragazzi oggi mi fanno sta richiesta : Creare la gestione delle "richieste"
in un gestionale che non ho fatto io.
Ora il vecchio sviluppatore non si trova ma per fortuna ho i sorgenti con
qualche Rem.
In pratica la cosa e' organizzata cosi' :
ci sono delle tabelle tipo :
tblScadenze
tblContratti
tblClienti
Ora la richiesta non e' altro che un record in cui possono venir registrato
che il "cliente X" prenota "y oggetti" e deve fare certe cose con certe
scadenze Z
in pratica ho buttato giu una tabellina tipo :
TblRichieste
IdRichiesta - Prot - Data - Tipo (valore per smistare i tipi di richieste) -
IdCli1 - IdCli2 - IdCli3 - IdOgg1 - IdOgg2 - IdOgg3 - Annotazioni
Ora pero' ste cose le dovrei sia memorizzare ( e la tabella c'e') e sia
stampare in qualsiasi momento, e qui viene il brutto, come potrei gestire
anche la stampa di diversi moduli ?
Io ho creato oltre a TblRichieste anche tblLISTARichieste che contiene i
tipi e altri flag per scremare le richieste e TblSTAMPERichieste  che
contiene in pratica :
IdRichiesta , NomeVar , Valore , Lunghezza
es:
"1" , "CLI_Cognome_1" , "" , "25"
"1" , "CLI_Nome_1" , "" , "25"
"1" , "OGG_Nome_1" , "" , "10"
"1" , "OGG_Nome_2" , "" , "10"
"2" , "CLI_Cognome_1" , "" , "25"
"2" , "CLI_Nome_1" , "" , "25"
"2" , "OGG_Nome_1" , "" , "25"
cioe' in pratica genero una tabella di "Template" per i documenti word da
compilare.
Esempio, la richiesta con Id 1 ha solo 3 variabili da compilare : Cognome1
nome1 e il nome di 2 oggetti,
ora quando lancio una stampa creo su una tabella di memorizzazione una cosa
tipo :
IdRichiesta , NomeVar , Valore , Lunghezza
es:
"1" , "CLI_Cognome_1" , "Rossi" , "25"
"1" , "CLI_Nome_1" , "Mario" , "25"
"1" , "OGG_Nome_1" , "PortalampadaY" , "10"
"1" , "OGG_Nome_2" , "TavolinoX" , "10"
dove pero' stavolta il primo campo rappresenta l'id della richiesta
compilata.
Insomma mi sta venendo un vero casino. Nessuno che lo ha gia' organizzato mi
direbbe come si e' comportato e come ha organizzato il lavoro di
memorizzazione e compilazione delle stampe ?
Cioe' le stampe vengono generate da modelli di word con dentro dei tag tipo
"CLI_Cognome_1" , io in pratica leggo dalla tabella di memorizzazione stampe
facendo una query per "IdRichiesta" cosi' ho solo le variabili da sostituire
nel mio documento e poi leggo il nome della variabile e lo sostituisco con
il valore.
Bho.... mi pare che stia facendo un vero casino, e' che in sto periodo non
ho molto tempo per ragionare, mi sento + una macchina da scrivere che un
programmatorino :p
-Gigio@work-

: (
mi sto perdendo sempre + nella compilazione di questi modelli !!!
Ma scusate un attimo, voi come fate a compilare un documento di word che
puo' essere un semplice messaggio come un contratto con formattazioni ecc ?

 puo' essere un semplice messaggio come un contratto con formattazioni ecc ?
personalmente, non lo faccio :-P
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 personalmente, non lo faccio :-P
TI ODIO !!!  ^_^


Premettendo che non ho capito una fava di quello che hai scritto, mi sento 
solo di dirti di accendere il registratore di macro, creare la macro per 
realizzare il messaggino, oppure il contrattino, oppure il fax, e poi fare i 
copia-incolla in vb 'dietro' ad un select case o a qualche altra struttura 
di IF.
Poi le parti variabili le componi con i campi del tuo recordset.
Ciao
Alberto
-- 
E tutto mi sembrava andasse bene... 

 Poi le parti variabili le componi con i campi del tuo recordset.
no quella parte e' ok, la parte che mi manca e' proprio quella di "gestione"
delle richieste e di "compilazione" richieste,  ora mi son incazzato, mi son
preso un paio d'orette per buttare giu' uno schemino che senno' a codare
senza sapere cosa fare non son capace ! cmq gia' lo sto organizzando meglio.
Tnk per l'interessamento

 E' questo il bello, precisamente non so nemmeno io cosa fare ^_^
Confesso che non ho letto tutto il post, ma in considerazione che si vuole
utilizzare ad ogni costo, nel programma che sto costruendo, dei documenti
word con 
ASP.NET
,
presumo che tenterò quanto segue:
1- modelli in file.dot
2- macro 
2.1- nel new del documento verifica se è presente un valore in una tabella
o in un file xml, se si > legge il valore, lo cancella e passa
identificativo ad una procedura che costruisce un recordset per popolare i
vari campi
2.2- salva con nome il documento
Ave
giuseppeD
---
Raccolta firme: Vogliamo i documenti UE tradotti in Romano
-- 


 2.2- salva con nome il documento
Per la stampa volevo fare una cosa simile ma + generica. Tipo lancio una
pagina con una macro a cui passo "il file xml" dove leggere i dati e come
sencondo parametro il modello word da prendere in considerazione.
Pensi sia fattibile questa generalizzazione ?
Uso questo accrocchio perche' volevo far creare all'utente i modelli. In
pratica l'utente medio apre solo word e salva in doc. quindi gli dico di
taggare una variabile con "§" davanti e dietro e sto sicuro che ci riescono
(dopo avergli spegato per 3 ore come si fa il simbolo : §). In questo modo
non mi toccano il file principale con la macro.

 non mi toccano il file principale con la macro.
Penso,
un modello è un documento che si ripete per tutta la durata dell'utilizzo,
quindi va costruito con cura, da un responsabile o da un addetto.
Presumo che una disposizione rigida del percorso dove risiedono i
documenti master, sia una buona prerogativa.
Far rendere flessibile a più le impostazioni di lettura, non mi sembra una
buona esecuzione.
Un minimo di analisi e delle procedure di impostazioni, presumo, è il
minimo per un buon risultato.
Ave
giuseppeD
---
CCR


 con qualche Rem.
cut
Beh gigiastro ti dico la mia personale esperienza
Io mi son trovato con la necissità di dover stampare un sacco di dati da un
programmillo di raccolta ed organizzazione dati (in sostanza una mailinglist
un po evoluta)
E per specifica di progetto mi dovevo affidare a Word....bleah!
se i dati erano pochi...la soluzione bookmark andava abbastanza bene
Appena diventavano 150/200 e più lettere...pof  si sedeva tutto!
Allora pensa che ti ripensa
Word...tutte le versioni..ha il mailmerge
Allora mi son fatto un modello...con tutti i "graficumi" del caso....c'ho
tirato dentro i dati che necessitavano...formattati come volevano etc etc...
poi ho salvato il modello....logicamente ho detto come fonte dati.....file
txt...salvi come dot e tutto è fatto!
A questo punto...il tuo lavoro è solo di filtrare i dati e costruire al volo
un file di testo da far digerire a Word....che utilizzando il file di testo
come fonte dati...sarà enormemente più veloce!
Il file di testo va fatto un po di attenzione e c'ho perso un po di
tempo...sopratutto se un campo è vuoto mi si incasinava tutto...alla fine si
è trovata la giusta combinazione!
poi per invocare il mailmerge
.....
Set MYdocs = CreateObject("Word.Application")
Set Lettera = CreateObject("Word.Document")
....
MYdocs.Visible = True
MYdocs.Documents.Open MODELLOLETTERA
Set Lettera = MYdocs.ActiveDocument
......
Set MyMerge = MYdocs.ActiveDocument.MailMerge
....
MyMerge.OpenDataSource FileDatasource, 5, False, True, False, False, "", "",
False, "", "", "", "", ""
MyMerge.Execute
e Lettera a che mi serve?
beh se vuoi dare invece di bookmark
inserisci una cosa del tipo
'Lettera.Bookmarks("INDIRIZZO").Select
'Lettera.Content.InsertAfter "VIA DEI QUERCIOLI 25"
.....per fare le stampe di servizio invece.....sai roba tipo riepiloghi
liste...dettaglio selezioni....Selezioni per Città etc etc
dovendo usare Word....
ho speso un po in Malox...e a forza di macro e doc....
mi son generato un rtf che poi ho caricato in WOrd.....da dire che l'rtf di
Wordpad è diversissimo da Word....quello di Word è compatibile solo con se
stesso!
Però in mezzo al macello di tag "strani" son riuscito a mettere perfino
tabelle, header e footer...compreso il conto pagine automatico!
Anche li...l'unica strada che ho capito....farsi un doc minimale e salvarlo
in rtf da word...usare ultraedit e spippolare col macello generato!
anche li una volta memorizzato il file rtf
Set myW = CreateObject("Word.Application")
Set Rapporto = CreateObject("Word.Document")
Set Rapporto = myW.Documents.Open(FileRapporto)
myW.Visible = True
FileSalvaRapporto = App.Path & "\mailmerge\stampe\" & "RapportoGenerale" &
DATAperfile & ".doc"
myW.ChangeFileOpenDirectory App.Path & "\mailmerge\stampe\"
Rapporto.SaveAs FileSalvaRapporto, wdFormatDocument
http://www.villaceleste.it/temp/imagegigio1.jpg
tutto questo "lavorìo" per tenere il più possibile la compatibilità...tra i
vari office
e infatti appena fatto il tutto....
in piena legge di Murphy
http://support.microsoft.com/default.aspx?scid=kb;it;257757
Ciao!
Vado a letto!
-- 
Il Wodkino Nazionale è a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 Quotefix e altro:
http://www.martek.it/go.asp?portamia=4
Usr: ICLVB Pw: amici

Tnk's a tutti !
Oggi appena ho 5min provo il mailmerge "esterno" sperando funzioni bene.
Grazie e alla prossima gigiata ^_^
-- 
-Gigio@work-

 ha scritto nel messaggio 
news:386gspF...@individual.net...


 Grazie e alla prossima gigiata ^_^
Provato e per alcune cose e' veloce il mailmerge...
...peccato che... si deve pastrocchiare con il file dati perche' e'
sequenziale... quindi o si va di Next e Prev o senno' si crea un
recordooooooooone lungo ( per pigrizia ho fatto cosi ^_^;)
cmq per moduletti rapidi e per gli amanti wordiani e' comodo veramente.
Peccato che per lanciare un file, fare il merge e salvare ci serva minimo un
p6 20'000THz e un quarto d'ora libero !
ghgh
-- 
[Gigio2k]
http://www.g2kweb.it
[ it-alt.comp.hardware.modding ] - 
http://www.g2kweb.it/ichm

 ghgh
MAH!
Per me c'hai qualcosa nel pc!
Nel senso che hai messo il gasolio invece che la super!
PC di sviluppo
p3 550 Win2k office 2002
....installato sotto win98se office 2000....e una volta tirato su word
(potenza del createobject sigh....tempi variabili do 20 a 30 secondi)...il
mailmerge è veramente rapido!
non credere che sotto XP vada più veloce
a richiamare word non sfrutti tanto la CPU ma l'HD e la ram!
Se hai un  p5000 biturbo ma un disco cesso o poca ram....
Eh eh eh
ci son sbattuto contro anche io!
generare il file di testo è rognoso!
sopratutto se ci sono campi vuoti!
mi sento buono....
nel DOT imposta # come delimitatore campi
fatti la query sul db e quindi nel Rset hai solo la "roba" da stampare
.......
NomeFile = "ElencoPerWord[" & CStr(Day(Date)) & "-" & CStr(Month(Date)) &
"-" & CStr(Year(Date))
NomeFile = NomeFile & "-" & CStr(Time) & "].mpt"
Open (App.Path & "\MailMerge\" & NomeFile) For Output As nFile
'Scrive header con nomi campi
RECriga =
"Titolo#Nome#Cognome#Indirizzo#Città#Provincia#CAP#Regione#CAformula#CAperso
na"
Print #nFile, RECriga
'scritta intestazione
.....
io ho messo i campi in un treeview con la casella di spunta...se l'utonto
vuole...dalla ricerca fatta elimina dei nominativi da NON stampare....
ah ...ho usato DAO perchè il db è access!
logicamente MyRecF è il recordset scandito per riempire il treeview
....
RECriga = ""
MaxRighe = LWr.ListItems.Count
For Riga = 1 To MaxRighe
Set Itemx = LWr.ListItems(Riga)
....
If Itemx.Checked Then
        'va stampato
        'RIGA -1 Perchè il recordset inizia dalla posizione 0!
        MyRecF.AbsolutePosition = Riga - 1
        'Pulisce la variabile che conterrà una riga
        RECriga = ""
        '============================================
        'Parsing valori
        '============================================
        dummy = (MyRecF("Titolo") & "")
        If Len(Trim(dummy)) > 0 Then
            RECriga = """" & RECriga & dummy & """#"
        Else
            RECriga = RECriga & C_FILECHARNULL
        End If
        .....
..... così per tutti i campi....per gestire il campo vuoto/nullo....
...(ultimo campo)....
       '#CApersona
       dummy = (MyRecF("CA") & "")
       If Len(Trim(dummy)) > 0 Then
            RECriga = RECriga & """" & dummy & """"
        Else
            RECriga = RECriga & """"""
        End If
        RECriga = RECriga
        'scrive nel file
        Print #nFile, RECriga
....
...(qui ho messo una progress...che appare per pochissimo perchè è
velocissimo)
Next
Close #nFile
...etc etc etc....
ah!..efinito in un modulo....
'Carattere usato per spazio nullo nel file della stampante
Public C_FILECHARNULL As String
'Valore nullo per il campo per il wordmerge
C_FILECHARNULL = """""#"
p.s.
...se lo usi tutto questo ti costa una citazione piccolissima fra i credits!
:-)
Ciao!


 credits! :-)
Su questo no, ma se vuoi ti inserisco a gratis fra i clienti dell' ALTRO
gestionale... hai presente ? ... ^_-


 ALTRO gestionale... hai presente ? ... ^_-
Basta! mi ritengo offeso...da un lamerozzo una risposta del genere l'avrei
accettata!
....data la pochezza del lamer!
Da te no!
sigh!
va a far del bene ai conoscenti!
Eh si che un
"thanks to wodka" ti rovina la piazza e ti porta via un sacco di clienti
eh!!!
azzo hai visto mai che cercando wodka su google salti fuori il mio indirizzo
e che dall'abruzzo vengano a farsi fare un sw da me! weh
si....rischioso!!!!...molto!
MAH!
sarà la neve che ti ha congelato la gratitudine!
Okok
c'è una lezione in tutto ciò...mò la imparo eh!
Poi il primo che mi viene a dire che son cinico...evvabbè
si impara da tutto!
PLONK

 PLONK
Enno', mo voglio le pubbliche scuse + un bacio in pubblico !!!
LO PRETENDO ^____^


 LO PRETENDO ^____^
NO!
...mi tocco le balle ...e la gestione cimiteriale te la lascio tutta tua!
Tra le altre cose non augurare queste cose perchè non sai la situazione
particolare
che ognuno si porta dietro!
Ti dico solo che è quantomeno inopportuna scherzare con me in questo momento
di queste cose!
...non so se capisci!
-- 
Il Wodkino Nazionale è a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 Demo classe vb.NET :
WodkaThumb 
www.villaceleste.it
  click su "spippolando e
Programmando"

 > LO PRETENDO ^____^
che mi dici ? :ppp

> che mi dici ? :ppp
Che dovresti aver più rispetto per uno ....
che gli è morto il mignolo sinistro...dal freddo!


 > LO PRETENDO ^____^
Eddai eddai, dai basciiiiiiiiiinoooooooo !!!!  :bq:
PS: mi spiace !