Colonial Inserito: 1 aprile 2010 Segnala Share Inserito: 1 aprile 2010 Salve a tuttiSto lavorando su di una supervisione Movicon, dove a suo tempo avevo fatto scrivere uno script da un collega, che estraeva dei data da un database ricetta e li appoggiava su delle variabili; Ora devo rivedere questo script, ma ho delle perplessita' su di alcune istruzioni di cui non so come e dove trovarne la descrizione, non so neppure se appartengono a VBA oppure al linguaggio dei database; di seguito il segmento in questione; Dim Nome() As StringDim Posizione() As IntegerPublic Sub SynopticLoading() CARICA_COMPONENTI_RICETTA_SXEnd SubPrivate Sub CARICA_COMPONENTI_RICETTA_SX Dim cnn As ADODB.Connection Dim rs As ADODB.Recordset Dim i As Integer ReDim Preserve Nome(0) ReDim Preserve Posizione(0) Set cnn = New ADODB.Connection cnn.ConnectionString = GetDataLoggerRecipe("Component").GetADOConn cnn.Open Set rs = New ADODB.Recordset query = "SELECT * FROM Component" i = 0 rs.Open query,cnn,adOpenDynamic,adLockOptimistic If Not rs.EOF Then While Not rs.EOF Nome(i) = rs("ComponentString").Value Posizione(i) = rs("ComponentCode").Value i = i + 1 rs.MoveNext ReDim Preserve Nome(i) ReDim Preserve Posizione(i) Wend End If rs.Close Set rs = Nothing cnn.Close Set cnn = NothingEnd Sub'INIZIO COMPONENTI RICETTA Public Sub OnVar1Changed(value As Variant) For i = 0 To UBound(Nome) If Nome(i)= Var1 Then Exit For Next i CodeVar1 = Posizione(i) End SubQuello che mi interessa e' "Public Sub OnVar1Changed(value As Variant)" dove Var1 e' una variabile della supervisione.Grazie anticipatamente a chi avra' la pazienza di rispondermi. Link al commento Condividi su altri siti More sharing options...
pescatori Inserita: 1 aprile 2010 Segnala Share Inserita: 1 aprile 2010 Dovresti spiegare meglio, cosa intendi con "rivedere lo script": non funziona oppure devi modificarne il funzionamento? In questo caso cosa vorresti ottenere?La subroutine CARICA_COMPONENTI_RICETTA, non fà altro che recuperare da un DB un set di dati. Hai 2 vettori Nome e Posizione, il primo contiene le descrizioni dei componenti ed il secondo il codice di ciascun componenente, a quanto sembra.La seconda subroutine viene eseguita quando si ha un cambiamento del valore di Var1. Abbiamo un ciclo FOR per fare una scansione degli elementi del vettore Nome contenente le stringhe di descrizione. ad ogni iterazione viene fatto un confronto tra l'elemento ì-esimo del vettore e Var1: se sono uguali, esco dal ciclo di scansione e vado a scrivere nella variabile CodeVar1 l'elemento corrispondente i-esimo del vettore Posizione, che contiene i codici componenti.Esempio, se trovo che è il 3 elemento del vettore Nome ad essere uguale a Var1, dentro CodeVar1 vado a scrivere il terzo elemento del vettore Posizione.Quello che non mi sembra giusto in questa subroutine, è che nel caso in cui non trovo nessun elemento in Nome corrispondente a Var1, comunque una volta che termina il ciclo FOR di scansione. dentro CodeVar1 verrà scritto il valore dell'ultimo elemento del vettore Posizione.Esempio, se ho un vettore Nome di 5 elementi (gli indici vanno da 0 a 4), e nessuno di questi elementi coincide con Var1, alla fine mi ritroverò comunque che dentro CodeVar1 vado a scrivere il valore in Posizione(4); devi sapere tu se è giusta questa gestione o si tratta di un errore. Link al commento Condividi su altri siti More sharing options...
Colonial Inserita: 1 aprile 2010 Autore Segnala Share Inserita: 1 aprile 2010 Ti ringrazioIn effetti stavo cercando di capire come questa routine funzionava per effettuare alcune modifiche; Quello che non trovavo e' appunto la funzione OnVarChanged che non capivo bene che facesse e da dove provenisse; probabilemnte stavo cercando nel posto sbagliato, in effetti sui manuali movicon ho trovato qualcoda: ONTEXTCHANGED, che appunto lavora sulle stringhe, io cercavo sulle variabili "numeriche"; comunque mi hai spiegato lo script in maniera molto esauriente e te ne ringrazio.Ciao Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora