Ho un sistema di tracciabilità del lavoro, e c'è una query che restituisce i risultati di tutti i lavori che sono in ritardo. Ho un modulo che visualizza ciascuno di questi lavori uno alla volta e ha due pulsanti (il lavoro è stato completato e il lavoro non è stato completato). Non completato mostra semplicemente il prossimo record. Non riesco a trovare un modo per accedere al record corrente per aggiornarne il contenuto se viene premuto il pulsante "È stato completato", il più vicino che posso ottenere è il numero lungo che rappresenta la posizione dei record nel modulo.Come aggiornare direttamente un record in un database da un numero di modulo (Access 2007)
Il VBA per ottenere l'indice del record nel modulo è il seguente.
Sub Jobcompleted(frm As Form)
Dim curr_rec_num As Long
curr_rec_num = frm.CurrentRecord
End Sub
Questo è il mio primo colpo a VBA, e dopo un'ora di ricerche non riesco a trovare nulla per risolvere il mio problema. Sto andando in questo modo completamente sbagliato? Lavorare in Microsoft Access 2007
Ulteriori informazioni Tutte le tabelle sono normalizzati
Tabella veicolo: Contiene vehicle_id (PK), così come Rego e il modello ecc
tabella di lavoro: Contiene job_id (PK), vehicle_id (fk) e altre informazioni su ciò che deve accadere, nonché la prossima data di occured, giorni tra ogni occorrenza del lavoro (tutti i lavori ripetuti) e altre informazioni
Tabella cronologia lavori: contiene job_history_id (pk), job_id (fk), data di completamento e commenti
Quando si preme il pulsante di completamento del lavoro, dovrebbe creare una nuova voce nella tabella della cronologia lavoro con la data corrente, eventuali commenti e l'ID del processo
Questo è lo script che sto cercando di ottenere
lavoroPrivate Sub Command29_Click()
Dim strSQL1 As String
Dim strSQL2 As String
Set Rs = CurrentRs
Set db = CurrentDb
strSQL1 = "INSERT INTO completed_jobs(JOB_ID, DATE_COMPLETED, COMMENTS) VALUES " & Rs!job.ID & ", " & Date
db.Execute strSQL1, dbFailOnError
strSQL2 = "UPDATE job SET JOB_NEXT_OCCURANCE = JOB_NEXT_OCCURANCE+JOB_RECURRANCE_RATE WHERE job.ID = Rs!job.ID"
db.Execute strSQL2, dbFailOnError
End Sub
Nota: la riga Set Rs = CurrentRs
è completamente errata, credo che sia ciò che devo capire? Questo viene chiamato pulsante-premere
Sto postando un'immagine che mostra il modulo (non continuo).
@HansUp, ho capito quello che stai dicendo, ma io non penso che sia abbastanza applicabile (non ho fornire informazioni sufficienti prima volta intorno per voi capire credo)
@sarh Credo che questo Recordset che si stiamo parlando di ciò di cui ho bisogno, tuttavia non riesco a capire come usarlo, qualche suggerimento?
@Matt Sono sicuro al 90% che sto utilizzando un modulo associato (come ho detto, nuovo per Access, ho esaminato tutto ciò che le persone hanno suggerito e l'apprendimento mentre procedo). C'è ovviamente un ID per il lavoro (solo che non è mostrato, non è necessario essere visibile), ma come potrei accedervi per eseguire un'operazione su di esso? SQL che posso fare, l'integrazione con Access/VBA Sono un
"Sto andando in questo modo completamente sbagliato?" Sospetto che tu possa essere, fatto correttamente, l'accesso è facile. La tua forma è una forma continua? Perché non puoi accedere ai dati? Il tuo recordset è complicato, quindi non è aggiornabile? Hai progettato le tue tabelle per includere un ID univoco? Hai iniziato il tuo lavoro leggendo i database relazionali? Hai esaminato uno dei modelli di accesso? – Fionnuala
BTW se un'altra persona fa valere la tua domanda, avrai abbastanza reputazione per pubblicare un'immagine del tuo modulo, il che potrebbe essere utile, quindi ancora una volta non lo è :) – Fionnuala
Venerò per il possibile caricamento dell'immagine, inoltre sembra che si utilizza un modulo associato e pertanto dovrebbe essere possibile includere un campo con il numero univoco del lavoro (spero che ne abbia uno) e quindi è possibile fare riferimento a questo campo di testo nell'aggiornamento SQL. –