eurostar_italia (Normal User)
Rookie
Messaggi: 33
Iscritto: 01/08/2011
|
vb6 - esecuzione loop con tasto command
Salve a tutti,
nuovo quesito in arrivo.
sto creando un piccolo programmino in vb,che importa i dati da un foglio excel,legge le relative righe (finchè sono piene,con un ciclo do loop) e inserisce i valori in delle variabili.tutto questo sul form 1 a questo punto passa i valori a delle txtbox sul form2.
l'obiettivo finale è stampare queste txt box.
ora vorrei iniziare il ciclo di lettura righe e di passaggio dati al form2 ma prima di continuare con la lettura delle altre righe,vorrei che l'utente prema un tasto command della form2.
secondo voi è possibile ?
aggiungo il codice che ho scritto
Codice sorgente - presumibilmente VB.NET |
Private Sub Command1_Click() Set statoexcel = New Excel.Application statoexcel.Visible = False nomefile = statoexcel.GetOpenFilename End Sub Private Sub Command2_Click() Set statoworkbook = statoexcel.Workbooks.Open(nomefile) Set statosheet = statoworkbook.Worksheets(1) If IsNumeric(statosheet.Cells(4, 1)) = True Then treno = statosheet.Cells(4, 1) MsgBox ("Caricato treno : " & treno) i = 4 Do While statosheet.Cells(i, 1) <> "" nominativo = statosheet.Cells(i, 4) destinazione = statosheet.Cells(i, 2) pnr = statosheet.Cells(i, 3) marca = statosheet.Cells(i, 5) targa = statosheet.Cells(i, 7) treno = statosheet.Cells(i, 1) tipo = statosheet.Cells(i, 6) data = statosheet.Cells(2, 3) If tipo = 0 Then Form2.txt_veicolo = "auto" Else: Form2.txt_veicolo = "moto" End If Form2.txt_nominativo = nominativo Form2.txt_destinazione = destinazione Form2.txt_marca = marca Form2.txt_pnr = pnr Form2.txt_targa = targa Form2.txt_treno = treno Form2.txt_data = data Form2.Show i = i + 1 Loop Else MsgBox "errore,non è un numero valido" End If End Sub
|
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
E' meglio usare un controllo ListView e riempirlo con tutte le righe di dati.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
Milmor94 (Normal User)
Rookie
Messaggi: 43
Iscritto: 10/07/2011
|
Il codice sembra buono ma ho notato piccoli errori:
1) Dove hai dichiarato le variabili che utilizzi (es. treno, marca, pnr...)??
Se te ne sei dimenticato devi inserire all'inizio:
Codice sorgente - presumibilmente VB.NET |
Dim treno as string, dim marca as string, dim pnr as string
|
dichiarando OGNI singola variabile
2) Tieni presente che nel codice che hai scritto la Form2 è sempre la stessa e i dati vengono caricati sempre su essa. Nel ciclo che hai inserito DoLoop i dati relativi alle 4 righe di excel vengono continuamente rinnovati... Non è che ti ritrovi nella Form 2 solamente i dati della quarta righa di excel???
Credo che questo sia il tuo problema... Allora hai diverse soluzioni:
- elimini il ciclo e metti semplicemente 4 button;
- inizializzi una nuova Form2 all'interno del ciclo, dopo DO (es. Dim FormOutput as new Form2) e anzichè usare "Form2.txt_...." utilizzi "FormOutput.txt_..." Ultima modifica effettuata da Milmor94 il 01/08/2011 alle 14:05 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
In questo modo
Postato originariamente da Milmor94:
Codice sorgente - presumibilmente Visual Basic 6 |
Dim treno, marca, pnr as string
|
|
le prime due variabili sono Variant e la terza è String.
Per dichiararle tutte di tipo String devi scrivere
Codice sorgente - presumibilmente VB.NET |
Dim treno As String, marca As String, pnr As String
|
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
Milmor94 (Normal User)
Rookie
Messaggi: 43
Iscritto: 10/07/2011
|
Anche Variant allora funziona però... Io in VB.NET uso sempre questo metodo... Magari VB è leggermente diverso... E in questo linguaggio non programmo da molto... Scusate
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Postato originariamente da Milmor94:
Anche Variant allora funziona però... |
Sicuramente, perché la variabile diventa di tipo Variant sottotipo String.
Io in VB.NET uso sempre questo metodo... Magari VB è leggermente diverso... E in questo linguaggio non programmo da molto... Scusate |
In VB6 non è come in VB.NET, appunto per questo c'è una sezione apposita.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
eurostar_italia (Normal User)
Rookie
Messaggi: 33
Iscritto: 01/08/2011
|
la dichiarazione delle variabili l'ho fatta nella parte generale (magari il termine non è appropriato) e non l'ho copiata xche non volevo incasinare tutto.
come avrete capito non sono espertissimo,però ho pensato di fargli leggere le righe del foglio excel con un ciclo in modo da potergli dire di farlo "finchè sono piene" .
ovviamente passandole alla form2,se tra un loop e l'altro non inserisco un command che mi permette di dare la conferma alla prosecuzione del ciclo,rimarrò solo con l'ultima riga del foglio excel visualizzata.
inizializzare una nuova form,mi crea il problema che se l'utente (dei miei colleghi un pò duri) vedono sparire ogni volta la form impazziscono.
la prima soluzione la preferivo...anche perchè questi dati vanno stampati e questo pulsante mi permetteva di dare il via alla stampa.
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Postato originariamente da eurostar_italia:
rimarrò solo con l'ultima riga del foglio excel visualizzata.
|
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
Milmor94 (Normal User)
Rookie
Messaggi: 43
Iscritto: 10/07/2011
|
Usa il metodo più semplice: nella Form2 crei 4 Controlli Frame e all'interno di ognuno tutte le textbox (o le listbox come suggerisce nessuno). Elimini il ciclo e associ ogni textbox a excel;
in poche parole ripeti 4 volte lo stesso codice:
Form2.txt_Nominativo1 = statosheet.Cells(1, 4)
Form2.txt_Nominativo2 = statosheet.Cells(2, 4)
Form2.txt_Nominativo3 = statosheet.Cells(3, 4)
Form2.txt_Nominativo4 = statosheet.Cells(4, 4)
Form2.txt_Destinazione1 = statosheet.Cells(1, 2)
Form2.txt_Destinazione2 = statosheet.Cells(2, 2)
Form2.txt_Destinazione3 = statosheet.Cells(3, 2)
Form2.txt_Destinazione4 = statosheet.Cells(4, 2)
...E così via...
Credo che sia il metodo migliore: risparmi tempo e non ti complichi troppo il lavoro
Ultima modifica effettuata da Milmor94 il 01/08/2011 alle 20:02 |
|