Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. Visual Studio 6.0
Sequenze sub vb6
martedì 14 novembre 2006 - 13.07
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
isotopo75
Profilo
| Newbie
44
messaggi | Data Invio:
mar 14 nov 2006 - 13:07
ciao a tutti,
ho un piccolo dubbio amletico...
Io creato un form in vb6 sul quale devo caricare i dati anagrafici presi da un database, supponiamo una lista di aziende clienti.
Allora un realizzato un combobox che viene riempito in fase di activate del form.
Selezionando un'azienda dalla lista del combo vengono riempiti alcuni textbox sottostanti con i dati anagrafici dell'azienda stessa.
Fin qui tutto funziona.
Inoltre, i dati devono poter essere modificati dall'utente. Allora ho inserito un commmandbutton "Modifica" in modo che alla pressione si possano modificare i dati presenti nei textbox.
Se però non è stata selezionata alcuna azienda e si preme lo stesso il tasto modifica, viene visualizzato un messaggio in una label con scritto "Selezionare un'azienda!" e si esce dalla sub con la funzione Exit sub.
A questo punto... cosa viene caricato? Cioè, al momento in cui si ha un'uscita intermedia dalla sub il VB cosa fa? Esegue il load form, l'activate form o cosa?
Insomma ho bisogno di sapere qual'è la sub o la function successiva ad un'uscita intermedia.
Grazie a tutti,
Iso75
sanbiz
Profilo
| Senior Member
208
messaggi | Data Invio:
mar 14 nov 2006 - 14:01
> Cioè, al momento in cui
>si ha un'uscita intermedia dalla sub il VB cosa fa? Esegue il
>load form, l'activate form o cosa?
L'istruzione exit sub non fa altro che, come hai già visto, uscire dalla routine in cui ti trovi.
>Insomma ho bisogno di sapere qual'è la sub o la function successiva
>ad un'uscita intermedia.
Non ho ben capito che cosa vuoi fare esattamente o cosa ti aspetti.
Dipende da come hai organizzato la chiamata.
La exit sub esce semplicemente dalla routine nient'altro.
Facciamo un esempio molto semplice:
Private Sub miaSub_Chiamante()
' Punto 1
.....
.....
' Punto 2 (Chiamo una sub)
call miaSub
' Punto 3
....
....
End Sub
Private sub miaSub()
' Se non ho selezionato nulla dalla combo esco
if miaconbo.text="" then
exit sub
end if
End Sub
Devi tener presente il flusso di esecuzione del tuo programma; nel nostro esempio la sub "miaSub" viene chiamata dalla sub "miaSub_Chiamante" (punto 2).
Sia che la sub "miaSub" completi l'intero ciclo, sia che ne esca anticipatamente (exit sub) in ogni caso il controllo tornerà alla miaSubChiamante esattamente dopo il punto 2 eseguendo il punto 3
E' ovvio che se la chiamata alla miaSub fosse fatta nella Load della form o nella sua Activate il processo proseguirebbe da lì, ma questo ha nessuna importanza.
--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/
isotopo75
Profilo
| Newbie
44
messaggi | Data Invio:
mar 14 nov 2006 - 14:41
Ciao,
grazie per la risposta rapida
Forse non ho spiegato bene il mio dilemma pero'... ora ci riprovo.
Se io sono dentro una sub e chiamo un'altra sub come nel tuo esempio, allora ok... so che ritorno esattamente in quel punto.
Segui per un attimo questo processo, pero':
Mi trovo nella fase di activate form. qui viene caricata tramite una "call private sub" un form con le info dell'azienda e si popola la combo. Il processo ora è finito... vb aspetta che io faccia qualcosa.
Se io cambio la selezione nel combo, allora viene ricaricata la private sub con i nuovi dati e
si modificano i dati dei textbox. Il processo di nuovo è finito, non sono dentro nessuna sub!
Se io clicco sul tasto modifica parte una nuova sub, uscendo dalla quale cosa succede? Dove mi trovavo prima della chiamata? Non ero dentro nessuna sub perchè non c'erano processi attivi... o sbaglio?
grazie mille
iso75.
sanbiz
Profilo
| Senior Member
208
messaggi | Data Invio:
mar 14 nov 2006 - 15:17
>Mi trovo nella fase di activate form. qui viene caricata tramite
>una "call private sub" un form con le info dell'azienda e si
>popola la combo. Il processo ora è finito... vb aspetta che io
>faccia qualcosa.
Scusami ma continuo a non capire.
Tu hai un form (form1) che in form_activate chiama una sub (miaSub) nella quale viene caricato un altro form (form2) il quale contiene i dati dell'azienda?
Ma come lo chiami in modale (form2.show(1))? o form2.visible =true?
>Se io cambio la selezione nel combo, allora viene ricaricata
>la private sub con i nuovi dati e
>si modificano i dati dei textbox. Il processo di nuovo è finito,
>non sono dentro nessuna sub!
Ma dove si trova questa combo? Sul form1 o sul form2?
Ed il tuo pulsante?
Cerca di illustrare con più precisione il tuo processo, magari dando dei nomi agli oggetti, proprio come ho fatto io ed indicando le chiamate più sensibili (ad esempio quella call alla tua sub)
--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/
isotopo75
Profilo
| Newbie
44
messaggi | Data Invio:
mar 14 nov 2006 - 15:54
ok... provo di nuovo
Ho 1 solo form, ad esempio frm_azienda
su questo form inserisco:
1 combobox dal nome combo1
4 textbox dal nome text1,text2,text3 e text4
1 commandbutton con nome "vai"
clicco due volte sul form e mi sia apre il codice
...
qui ho subito la sub form_load
In questa non scrivo nulla
creo la sub form_activate
in questa inserisco la seguente chiamata:
call popola_combo()
' punto 2
end sub 'Qui termina la sub del form activate
ora scrivo la sub popola_combo
private sub popola_combo()
apro la connessione al db
eseguo una query
metto i dati in un recordset che chiamo my_rs
ora eseguo, sempre dentro questa sub, il popolamento del combo:
while not my_rs.eof
Combo1.AddItem (my_rs.Fields("nome_azienda"))
my_rs.MoveNext
Wend
end sub
Ora esco da questa sub e ritorno al punto 2 del form activate... giusto?
A questo punto ho una combo che contiene i nomi delle aziende e posso scorrere per selezionarne una dalla lista.
Ora scrivo un'altra sub per compilare i 4 textbox e questa viene eseguita SOLO quando clicco il tasto "vai"
private sub command1_click
eseguo una seconda query che prende il nome dell'azienda e legge i dati della sua anagrafica
metto i dati in un altro recordset... ad esempio my_rs2
scrivo i dati nei textbox
text1.text=my_rs2.Fields("rag_sociale")
text2.text=my_rs2.Fields("via")
text3.text=my_rs2.Fields("citta")
text4.text=my_rs2.Fields("provincia")
In questo modo nei textbox ho i dati relativi all'azienda selezionata nel combobox
end sub
A questo punto ESCO da questa sub... DOVE MI TROVO?
cosa fa ORA vb6? In che punto del codice si trova?
In particolare... viene o no rieseguita la form_activate()?
Grazie,
Iso75.
sanbiz
Profilo
| Senior Member
208
messaggi | Data Invio:
mar 14 nov 2006 - 16:11
>private sub command1_click
>
>eseguo una seconda query che prende il nome dell'azienda e legge
>i dati della sua anagrafica
>
>metto i dati in un altro recordset... ad esempio my_rs2
>
>scrivo i dati nei textbox
>
>A questo punto ESCO da questa sub... DOVE MI TROVO?
Diciamo che non ti trovi in nessun posto in particolare o meglio, vb è in attesa che tu faccia qualche cosa.
Se premi il tasto command1 si scatena l'evento click dello stesso che in realtà è una semplice sub. Alla fine di questa, sia che tu esca in modo corretto o forzando, ti troverai esattamente nella posizione successiva alla chiamata. Nel tuo caso il command1_click finisce lì, ma se guartdi bene prima del click si era scatenato il mousedown e per ultimo il mouseup. Nel frattempo vi sono una serie di eventi (e quindi sub) in corrispondenza del movimento del mouse, della pressione dei tasti sulla tastira ecc. ecc.
>In particolare... viene o no rieseguita la form_activate()?
La form_activate è un particolare evento che si genera tutte le volte che la form viene riattivata (ottiene il focus).
Non è il tuo caso dato che il tuo programma non abbandona mail la form1
Ti cosniglio di utilizzare i breakpoint per poter debuggare il tuo sorgente e capire esattamente quello che accade.
--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !