Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Database Con Vb Script Su Wincc Flex 2005 - Come leggere la riga successiva di un database


Messaggi consigliati

Inserito:

Salve a tutti, mi servirebbe il seguente aiutino...

utilizzo un touchscreen con su WinCC Flex 2005.

Ho creato un pulsante che mi richiama uno script grazie al quale voglio caricare dei dati da un database in formato .mdb. Ho creato il collegamento al DB ma voglio caricare la riga successiva ogni volta che premo il pulsante. Che istruzione devo usare?

Purtroppo il cliente aspetta... maledetta fretta!!!

Grazie mille, Michele


Inserita:

Devi crearti un recordset per memorizzare i dati prelevati con la query dal DB e poi usi i vari metodi MoveFirst, MoveNext, etc per spostarti all'interno del recordset.

Guarda qui per avere un esempio:

Elencare record tabelle Access

Non so però dirti se WinCC Flex supporta pienamente tutto questo, comunque prova.

Inserita:

Grazie per l'indicazione, mi è stata molto utile, perchè grazie a questa ho fatto un piccolo passo in avanti; clicco sul pulsante che richiama lo scipt e invece che mostrarmi i dati della prima riga mi mostra quelli della seconda riga. Quindi sembrerebbe che il comando funzioni. Il problema è che mi blocco su come posso richiamare i record successivi.

Io ho fatto così:

Dim conn

Dim source

Dim comSQL

Dim resSQL

Dim upSQL

'Apre la connessione

Set conn=CreateObject("ADODB.Connection")

source="DBQ=" & ("C:\DatiProduzione.mdb")

conn.open "DRIVER={Microsoft Access Driver (*.mdb)}; " & source

Set resSQL=CreateObject("ADODB.RecordSet")

comSQL="SELECT Commessa FROM PianificazioneCommesse WHERE Estinta=0;"

resSQL.Open comSQL, conn

resSQL.MoveNext

'Trasferimento delle informazioni di produzione al controllore se ci sono commesse ancora da produrre

SmartTags("NCommessa")=CStr(resSQL("Commessa"))

resSQL.close

conn.close

Si deduce quindi che MoveNext è dopo l'apertura del DB. Vi sembra corretto?

Inserita: (modificato)

Appenna dopo che hai fatto la query usi il metodo MoveFirst per posizionarti sul primo record, poi se si utilizza MoveNext ci si può spostare in avanti; ogni volta che si riapre la connessione riparti sempre dall'inizio.

Dovresti usare una variabile interna da usare come indice per tenere memoria del record a cui stai puntando: la prima volta che ti connetti e ti posizioni con MoveFirst sul primo record la setti uguale ad 1; nel pulsante che dice di avanzare al record successivo la incrementi di 1 e rifai tutto ti riconnetti ti rimetti sul primo record e poi fai un loop per avanzare di tante posizioni quante sono indicate dal tuo indice locale.

Prova a guardare questo esempio fornito da Siemens su come usare WinCC flexible e SQL, usa esattamente lo stesso metodo, solo che qui utilizza una tabellina in modo da visualizzare più righe contemporaneamente.

Accesso SQL DB con WinCC flexible

Modificato: da pescatori
Inserita:

Grazie Pescatori della tip, ma purtroppo dopo averci passato + di 1 giorno a provare a realizzare quello che mi hai consigliato ci ho rinunciato,a favore di una soluzione meno complicata, anche se non mi soddisfa pienamente. Non so per quale motivo mi dava continui errori, non ho capito se di sintassi o altro. comunque imposto un flag ogni volta che acquisisco un set di dati e, arrivato alla fine della tabella li resetto tutti, ricominciando dall'inizio. Mi va bene comunque.

Grazie ancora

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...