Oppure

Loading
31/07/11 23:04
eurostar_italia

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


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


aaa
01/08/11 6:21
nessuno
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à.
01/08/11 10:29
Milmor94
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:
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 01/08/11 12:05
aaa
01/08/11 11:00
nessuno
In questo modo

Postato originariamente da Milmor94:
Dim treno, marca, pnr as string



le prime due variabili sono Variant e la terza è String.

Per dichiararle tutte di tipo String devi scrivere

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à.
01/08/11 12:02
Milmor94
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 :(
aaa
01/08/11 12:14
nessuno
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à.
01/08/11 16:24
eurostar_italia
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.
aaa
01/08/11 16:45
nessuno
Postato originariamente da eurostar_italia:
rimarrò solo con l'ultima riga del foglio excel visualizzata.


Appunto per questo devi usare un controllo che ti permette di visualizzarle tutte, così come se fossero in Excel.

Un controllo ListView sarebbe sufficiente.

msdn.microsoft.com/en-us/library/…(v=VS.60).aspx
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à.