Newsgroup: it.comp.lang.visual-basic
Titolo: Stesso codice in form diversi: non funziona

Ciao,
come già detto in un altro post, devo modificare un sw per la gestione
dei servizi effettuati con ambulanze; ogni ambulanza è caratterizzata
da un numero macchina (260...267); quando si termina il servizio, si
registra il servizio stesso su una bolla; il bollettario è composto da
25 bolle ed ogni macchina ha il suo; quindi può essere che la macchina
263 è alla bolla 4530 e la macchina 264 alla bolla 9560.
Ogni bollettario, come detto è composto da 25 bolle; quindi inizia, ad
esempio dalla 1001 e finisce alla 1025;
il sw si comporta in questo modo: ho creato un form per ogni macchina,
al caricamento del form viene effettuata una query sql in cui
specifico il numero macchina; vengono quindi caricati (dal db) i km
percorsi e l'ultima bolla inserita, incrementata di uno.
Se l'ultima bolla è la *25, *50, *75 *00, ovviamente non carica nulla
perché non è possibile sapere il numero bolla successivo (carica solo
i km di quella macchina).
la routine è questa: 
Private Sub COk_Click()
 
    FControllo.Show 1
 
    If checkm Then
 
        If CCompilatore = "" Then
            FMancaCompilatore.Show 1
            Exit Sub
        End If
 
        If CDalleOre1 = "" Or CAlleOre1 = "" Or CDalleOre2 = "" Or
CAlleOre2 = "" Then            FMancaOra.Show 1
            Exit Sub
        Else
            If Val(CDalleOre1) < 0 Or Val(CDalleOre1) > 23 Or
Val(CAlleOre1) < 0 Or Val(CAlleOre1) > 23 Then
FErroreOra.Show 1
                Exit Sub
            End If
        End If
 
        If CNumeroBolla = "" Then
            FErroreBolla.Show 1
        Else
            If Not (RecSet1.EOF And RecSet1.BOF) Then
                If (CNumeroBolla = RecSet1![NUMEROBOLLA] + 2) Then
 
                    StrSQL = "SELECT * FROM STATISTICHE WHERE
NUMEROMACCHINA = '" & CNumeroMacchina & "' ORDER BY NUMEROBOLLA DESC"
 
                    Set RecSet2 = DBase.OpenRecordset(StrSQL)
 
                    StrSQL = "SELECT * FROM STATISTICHE ORDER BY ID"
                    Set RecSet1 = DBase.OpenRecordset(StrSQL)
                    RecSet1.AddNew
                    RecSet1![Data] = CData
                    RecSet1![ORAUSCITA] = CDalleOre1 & ":" &
CDalleOre2                    RecSet1![ORARIENTRO] = CAlleOre1 & ":"
& CAlleOre2                    RecSet1![NUMEROMACCHINA] =
CNumeroMacchina
                    RecSet1![NUMEROBOLLA] = (CNumeroBolla - 1)
                    RecSet1![Da] = " "
                    RecSet1![A] = " "
                    RecSet1![118] = IIf((C118.Value = "1"), True,
False)                    RecSet1![PRIVATI] = IIf((CPRIVATI.Value =
"1"), True, False)                    RecSet1![CONVENZIONEOSPEDALE] =
IIf((CCONVENZIONEOSPEDALI.Value = "1"), True, False)
  RecSet1![ALTRECONVENZIONI] = IIf((CALTRECONVENZIONI.Value = "1"),
True, False)                    RecSet1![DIALISI] =
IIf((CDIALISI.Value = "1"), True, False)
RecSet1![SERVIZISPORTIVI] = IIf((CSERVIZISPORTIVI.Value = "1"), True,
False)                    RecSet1![RAPPRESENTANZE] =
IIf((CRAPPRESENTANZE.Value = "1"), True, False)
RecSet1![ALTRO] = IIf((CALTRO.Value = "1"), True, False)
      RecSet1![KMUSCITA] = RecSet2![KMRIENTRO]
                    RecSet1![KMRIENTRO] = CKmUscita
                    RecSet1![KMPERCORSI] = CKmUscita -
RecSet2![KMRIENTRO]                    RecSet1![COMPILATORE] =
CCompilatore
                    RecSet1![AUTISTA] = " "
                    RecSet1![CAPOSERVIZIO] = " "
                    RecSet1![MILITEAUSILIARIA] = " "
                    RecSet1![ALLIEVOA] = " "
                    RecSet1.Update
                End If
            End If
 
            StrSQL = "SELECT * FROM STATISTICHE ORDER BY ID"
            Set RecSet1 = DBase.OpenRecordset(StrSQL)
            RecSet1.AddNew
            RecSet1![Data] = CData
            RecSet1![ORAUSCITA] = CDalleOre1 & ":" & CDalleOre2
            RecSet1![ORARIENTRO] = CAlleOre1 & ":" & CAlleOre2
            RecSet1![NUMEROMACCHINA] = CNumeroMacchina
            RecSet1![NUMEROBOLLA] = CNumeroBolla
            RecSet1![Da] = CDa
            RecSet1![A] = CA
            RecSet1![118] = IIf((C118.Value = "1"), True, False)
            RecSet1![PRIVATI] = IIf((CPRIVATI.Value = "1"), True,
False)            RecSet1![CONVENZIONEOSPEDALE] =
IIf((CCONVENZIONEOSPEDALI.Value = "1"), True, False)
RecSet1![ALTRECONVENZIONI] = IIf((CALTRECONVENZIONI.Value = "1"),
True, False)            RecSet1![DIALISI] = IIf((CDIALISI.Value =
"1"), True, False)            RecSet1![SERVIZISPORTIVI] =
IIf((CSERVIZISPORTIVI.Value = "1"), True, False)
RecSet1![RAPPRESENTANZE] = IIf((CRAPPRESENTANZE.Value = "1"), True,
False)            RecSet1![ALTRO] = IIf((CALTRO.Value = "1"), True,
False)
            RecSet1![KMUSCITA] = CKmUscita
            RecSet1![KMRIENTRO] = CKmRientro
            RecSet1![KMPERCORSI] = CKmPercorsi
            RecSet1![COMPILATORE] = CCompilatore
            RecSet1![AUTISTA] = CAutista
            RecSet1![CAPOSERVIZIO] = CCapoServizio
            RecSet1![MILITEAUSILIARIA] = CMiliteAusiliaria
            RecSet1![ALLIEVOA] = CAllievoAllieva
            RecSet1.Update
 
            CNew_Click
            End If
       End If
    Exit Sub    
End Sub
Questa è quella che funziona;
quella che non funziona è quella con il numero macchina specificato
nella WHERE della query SQL.Mi carica l'ultima bolla-1...non capisco
 
-- 
I'm using an evaluation license of nemo since 110 days.
You should really try it!
http://www.malcom-mac.com/nemo

 il sw si comporta in questo modo: ho creato un form per ogni macchina,
E se domani comprano un'altra macchina tu devi aggiungere un'altro form?
greg

  form?
in teoria si, ma al 99% i numeri macchina restano gli stessi;
altrimenti come potrei fare?
Sono niubbo...lo so :-)


 altrimenti come potrei fare?
...
Form unico, a cui passi (proprieta', variabile globale....) il numero della 
macchina che ti serve, poi ti costruisci la stringa sql

 numero della macchina che ti serve, poi ti costruisci la stringa sql
Sono agli inizi...e non saprei nemmeno da che parte iniziare :-(
 
-- 
I'm using an evaluation license of nemo since 111 days.


 Sono agli inizi...e non saprei nemmeno da che parte iniziare :-(
...
Non credere che chi ti scrive in questo momento sia "sta cima"
Per farla facile, dato che se non sbaglio l'unica difficolta' e' quella di 
fare la Select con il numero di macchina che ti interessa, anziche fare un 
form per ogni macchina (con la sua stringa preformata), potresti iniziare 
dichiarano una variabile globale su un modulo .bas (se non ne hai uno nel 
tuo progetto, puoi aggiungerlo semplicemente cliccando sulla destra, dove 
c'e' l'elenco dei vari form che hai, andare su Inserici - Modulo - Nuovo, 
insomma, come aggiungi un Form)
Nella sezione dichiarazioni, dichiari una variabile publica (visibile cioe' 
all'intero progetto)
Public NumeroMacchina as Long
 e la usi per costruirti la stringa SQL
Immagino che ora farai una cosa del genere:
If  Numero = 200 then frm200.Show
If Numero = 201 then frm201.Show
e via di seguito, dove l'unica differenza tra i vari form e' data dalla 
stringa SQL che apre il recordset.. ci sono vicino?
Se invece utilizzi una variabile globale, la puoi usare in tutto il 
progetto, quindi, per riprendere l'esempio sopra (ma non e' il modo 
migliore),
NumeroMacchina = Numero
frm00.show
nel frm00
Select (tutto come prima) where id = [NumeroMacchina]

 wrote:
..cut...
più o meno ho capito come lavorare.
Il file .bas già c'è;
ora funziona in questo modo;
form dove, tra le altre cose, c'è un commandbutton per ogni macchina;
cliccandolo si apre il form di quella macchina! ;-)
Naturalmente, GRAZIE!
