Ciao a tutti,
premetto che è la prima volta che scrivo su questo forum, spero di trovare l'aiuto che sto cercando visto e considerato che come cercavo cadevo sempre su conversazioni di html.it![]()
In breve, è la primissima volta che uso VB quindi ho dovuto arrangiarmi parecchio per realizzare un programma che collega al computer tramite porta COM un lettore di badge,
vi spiego in breve come funziona:
una volta passata una tessera si rileva il codice dell'utente possessore della tessera
(se non presente in db si presenta la scheda di aggiunta di un nuovo utente)
quindi si presenta la scelta del mezzo da prelevare digitando un numero su tastierino numerico
(la ricezione dei caratteri è inizialmente disattivata ma poi attivata solo se l'utente della tessera è riconosciuto, per poi essere ridisattivata dopo la pressione)
una volta premuto il tasto corrispondente al mezzo si fa aprire una serratura e si aggiorna il db con i dati e gli orari
( attivando un relè presente sul lettore badge)
quando questo utente sarà ritornato dal suo viaggio e passerà la tessera nel lettore si dovrà aggiornare il database mettendo che il mezzo è nuovamente disponibile e gli orari e la data di ritorno
Il Problema, questo benedettissimo relè mi funziona soltanto quando chiamo la funzione dentro la funzione aggiungiPartenza, se invece la richiamo dentro aggiungiRitorno mi restituisce errore.... ho provato a collegare a un bottone la funzione apriSerratura e funziona sempre!
Non sò più dove battere la testa!!
Ho inserito di seguito il codice delle funzioni apriSerratura, aggiungiPartenza, aggiungiRitorno... se servissero altre funzioni o parti di queste ditemelo pure che le posto senza problemi!
* ho modificato il percorso del file per non far riconoscere il nome del mio cliente ^^codice:Function apriSerratura() 'MsgBox ("confermare") ' per aprire il relè va dato doppio perchè "bistabile"... MSComm1.Output = "*/R21" Sleep 1000 MSComm1.Output = "*/R21" End Function Function aggiungiPartenza(mezzo As String) Dim dataOra As Date Dim orarioOra As Date orarioOra = TimeValue(Now) dataOra = DateValue(Now) stringa = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" stringa = stringa & "E:............Database.mdb" Set connessione = New adodb.Connection Set recordset = New adodb.recordset connessione.Open stringa recordset.Open "viaggi", connessione, 3, 3 recordset.AddNew recordset("codice") = codice.Text recordset("mezzo") = mezzo recordset("dataPartenza") = dataOra recordset("orarioPartenza") = orarioOra recordset("dataRitorno") = "no" recordset("orarioRitorno") = "no" recordset.Update ' ora si prova a updare i vari campi 'update del personale Set recordset2 = New adodb.recordset recordset2.Open "SELECT * FROM personale WHERE codice = '" & codice.Text & "'", connessione, 3, 3 Do Until recordset2.EOF recordset2!fuori = "si" recordset2.Update recordset2.MoveNext Loop recordset2.Close 'update dei mezzi Set recordset3 = New adodb.recordset recordset3.Open "SELECT * FROM mezzi WHERE idMezzo = '" & mezzo & "'", connessione, 3, 3 Do Until recordset3.EOF recordset3!fuori = "si" recordset3.Update recordset3.MoveNext Loop recordset3.Close Dim nomeUtente As String nomeUtente = Replace$(titolo.Caption, "Ciao ", "") Sleep 3000 'MsgBox (nomeUtente & " stai partendo con:" & mezzo & " il " & dataOra & " alle " & orarioOra) Call resetta Set connessione = Nothing Set recordset = Nothing Set recordset2 = Nothing Set recordset3 = Nothing Call apriSerratura End Function Function aggiungiRitorno() Dim dataOra As Date Dim orarioOra As Date Dim mezzo As String orarioOra = TimeValue(Now) dataOra = DateValue(Now) stringa = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" stringa = stringa & "E:............Database.mdb" Set connessione = New adodb.Connection Set recordset = New adodb.recordset ' mi prendo il viaggio di questo personale che è tornato e vedo che mezzo è, poi aggiorno il mezzo connessione.Open stringa recordset.Open "SELECT * FROM viaggi WHERE codice = '" & codice.Text & "' AND dataRitorno = 'no' ", connessione, 3, 3 Do Until recordset.EOF mezzo = recordset("mezzo") ' mezzo lo prendo e gli altri due li aggiorno recordset!dataRitorno = dataOra recordset!orarioRitorno = orarioOra recordset.MoveNext Loop recordset.Close ' aggiorno il mezzo dicendo che è rientrato Set recordset4 = New adodb.recordset recordset4.Open "SELECT * FROM mezzi WHERE idMezzo = '" & mezzo & "'", connessione, 3, 3 Do Until recordset4.EOF recordset4!fuori = "no" recordset4.MoveNext Loop recordset4.Close ' aggiorno il personale dicendo che è rientrato Set recordset3 = New adodb.recordset recordset3.Open "SELECT * FROM personale WHERE codice = '" & codice.Text & "'", connessione, 3, 3 Do Until recordset3.EOF recordset3!fuori = "no" recordset3.MoveNext Loop recordset3.Close Dim nomeUtente As String nomeUtente = Replace$(titolo.Caption, "Ciao ", "") Sleep 3000 'MsgBox (nomeUtente & " sei tornato con:" & mezzo & " il " & dataOra & " alle " & orarioOra) Call resetta Set connessione = Nothing Set recordset = Nothing Set recordset4 = Nothing Set recordset3 = Nothing Call apriSerratura End Function
* ho inserito la versione di VB nel titolo

Rispondi quotando