Ciao a tutti, nuovo problema in vista ???, lo so, lo so! ma non mandatemi a quel paese. ;D
Ho iniziato ad affrontare la registrazione dei dati negli appositi file, per fare ciò devo fare apparire una form che mi permetta di cambiare il mese in cui andrò a fatturare il lavoro catalogato, niente di più facile, si tratta di una form piccolina con solo una combo (la scelta del mese) ed un bottone (Ok!).
Dove sta il problema, direte voi, il problema è che, naturalmente per fare funzionare la form ho descritto una nuova classe e dalla scelta del mese varia anche il nome del file che andro ad aprire o creare a secondo del caso; quello che non funziona è che il codice non attende che si sia scelto il mese e poi confermato premendo ok sulla form e succede che il "nome file" viene creato sbagliato e ancor peggio l'anteprima di stampa della bolla si attiva abbastanza celermente e va a ricoprire la succitata form.
La Flow chart (se mi è concesso il termine) del pezzo di programma incriminato è la seguente:
|
|
|
Public Sub ButtonStampaNorm_Click()
|
|
Chiamta a procedura SALVA_HEADER() (Registrazione prima parte dati)
|
|
Chiamata SalvaHeader.Show
Form SalvaHeader.form
Classe SalvaHeader.class (scelta del mese e conferma scelta con settaggio della variabile che identifica il mese)
|
|
Creazione del nome del file da aprire o creare
Elaborazioni varie
Registrazione dei dati
|
|
Chiamta a procedura STAMPA_NORMALE() con visualizzazione dell'anteprima ed eventuale stampa.
|
|
Dovrei fare in modo che il programma non avvanzi finché non viene compiuta la scelta nel form, ma come? Ho provato a visualizzare il form senza aver descritto la classe, ma non riesco poi a controllare i due oggetti.
Cosa mi suggerite?
Vi ringrazio per i vostri interventi.
Ciaooooo :ciao: :ciao:
Vero GianLuigi
Ti inserisco la parte del codice interessata:
SalvaHeader.ShowModal
Anno$ = Year(Now)
Anno$ = Right$(Anno$, 2)
CodCliente = FNormale.serv$[FNormale.NumCliente, 4]
Print SalvaHeader.MeseText
FileName = "DDT" & CodCliente & "@" & SalvaHeader.MeseText & Anno$ & ".dbl"
Print FileName
il codice della classe SalvaHeader:
''################################################################### Menu per la scelta del mese di fatturazione #####
Public MeseText As String = Null '##### Numero del mese in formato stringa #####
Private PuntMese As Integer '##### Puntatore al numero del mese corrente #####
Public SwFormClosed As Boolean = False '##### Switch di conferma di scelta effettuata #####
Public Sub _New()
ASSEGNAZIONI()
End
Public Sub ASSEGNAZIONI()
PuntMese = FMain.mMese$
ComboMesi.List = FMain.mese
ComboMesi.Current.Text = FMain.mese[PuntMese]
End
Public Sub ComboMesi_Click()
'#################################################################### Scelta del mese di fatturazione da ComboBox #####
Dim var$ As String '##### Variabile di comodo per riferimento alla matrice CodCapo$ #####
Dim i As Integer = 0 '##### Contatore per ciclo DO sulla matrice CodCapo$ #####
var$ = ComboMesi.Current.Text
Do
i = i + 1
Loop Until var$ = FMain.mese[i]
MeseText = i
If Len(MeseText) < 2 Then MeseText = "0" & MeseText
End
Public Sub ButtonOk_Click()
'################################################################### Conferma del mese scelto per la fatturazione #####
PuntMese = FMain.mMese$
If MeseText = Null
MeseText = PuntMese
If Len(MeseText) < 2 Then MeseText = "0" & MeseText
Endif
SwFormClosed = True
Print MeseText
SalvaHeader.Close
End
ed il responso della console sui tre print che ho inserito per vedere come reagiva la variabile interessata:
Come vedi nei due listati, il primo print ad essere eseguito è quello della classe SalvaHeader.class, nel report della Console come puoi vedere compare il numero 10 ciò vuol dire che la variabile è settata (in questo caso con il valore di default), continuando con lo sviluppo del codice si arriva al secondo print, come puoi vedere nel primo listato, che è inserito nella classe FNormale.class, questo secondo print non fa altro che interrogare la stessa variabile di prima, ma come vedi il secondo responso della console è una stringa vuota, ciò vuol dire che la variabile non è passata ed infatti il terzo print stampa il nome che dovrebbe essere dato al file da creare o da aprire, ma quest'ultimo è sbagliato, infatti dovrebbe essere DDTcon@1017.dbl.
La variabile MeseText è comunque una dichiarata come string e Public, ragion per cui dovrebbe passare e già nel formato adeguato alla elaborazione successiva, ecco il perche della domanda precedente, spiegandomi un po' meglio (li ero effettivamente un po' criptico), quando si apre un form in modale le variabili dichiarate Public passano normalmente o ci sono delle diversità?
Mamma che pizza che vi ho scritto! :o :o
Ciaooooo :ciao: