Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Abbiamo messo alla prova il drone Antigravity A1 capace di riprese in 8K a 360° che permette un reframe in post-produzione ad eliche ferme. Il concetto è molto valido, permette al pilota di concentrarsi sul volo e le manovre in tutta sicurezza e decidere con tutta tranquillità come gestire le riprese. La qualità dei video, tuttavia, ha bisogno di uno step in più per essere competitiva
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Dopo oltre 4 anni si rinnova la serie Sony Alpha 7 con la quinta generazione, che porta in dote veramente tante novità a partire dai 30fps e dal nuovo sensore partially stacked da 33Mpixel. L'abbiamo provata per un breve periodo, ecco come è andata dopo averla messa alle strette.
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme e Aston Martin Aramco F1 Team si sono (ri)unite dando alla vita un flagship con chip Snapdragon 8 Elite Gen 5 e design esclusivo ispirato alle monoposto di Formula 1. La Dream Edition introduce la nuova colorazione Lime Essence abbinata al tradizionale Aston Martin Racing Green, decorazioni intercambiabili personalizzate e una confezione a tema F1, intorno a uno smartphone dall'ottima dotazione tecnica con batteria da 7000mAh ricaricabile a 120W e isola fotografica intercambiabile
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-06-2009, 16:45   #1
SharPet
Senior Member
 
L'Avatar di SharPet
 
Iscritto dal: Jul 2002
Città: Garlasco (PV)
Messaggi: 2097
[Access] Macro ImpostaValore

In una maschera di un db Access 2007 ho una casella di riepilogo basata su una query di selezione, e che quindi mostra tutti i record che hanno impostato il campo "stato" su X

Mi serve fare una macro (o qualcosa) che cliccando 2 volte su uno dei record visualizzati possa far cambiare lo stato di questo record da X a Y e che contemporaneamente immetta nel campo DataY la data odierna

E' possibile? ....cercando online ho solo sentito parlare di una macro "impostaValore" ma sul mio access non la vedo...

Come si fa?
__________________
Sempron 3100+ 256kb...
SharPet è offline   Rispondi citando il messaggio o parte di esso
Old 13-06-2009, 01:33   #2
john_revelator
Senior Member
 
L'Avatar di john_revelator
 
Iscritto dal: Jul 2007
Messaggi: 1092
Ti ho scritto questo codice testandolo su access versione xp ma credo vada bene anche sul 2007. Nella query che usi per popolare la listbox recupera anche l'id che identifica ogni singolo record, visto che tale identificativo ti servirà in fase di update.


Codice:
Private Sub lstNomi_DblClick(Cancel As Integer)
Dim i, identificativo As Long
Dim strSQL As String
For i = 0 To Me.lstNomi.ListCount - 1
    If Me.lstNomi.Selected(i) = True Then
        identificativo = lstNomi.Column(0, i)
        strSQL = "update tabella set stato = 'Y',data = date() where id = " & identificativo
        DoCmd.SetWarnings False
        DoCmd.RunSQL strSQL
        DoCmd.SetWarnings True
    End If
Me.Refresh
Next
End Sub
Colgo l'occasione per chiedere se una volta eseguita la query, se si sono disabilitati i warning, esiste un modo per sapere se la query è andata a buon fine ed eventualmente quanti record sono stati modificati.
john_revelator è offline   Rispondi citando il messaggio o parte di esso
Old 13-06-2009, 02:22   #3
john_revelator
Senior Member
 
L'Avatar di john_revelator
 
Iscritto dal: Jul 2007
Messaggi: 1092
Mi rispondo da solo. Usando db.execute che a quanto leggo è preferibile rispetto a docmd.runsql è possibile recuperare il numero di righe "affette" dalla query.
Io invece tendo a usarli indistintamente badando solo al fatto che la query va comunque a buon fine. Bisogna che mi disabitui.


Codice:
Private Sub lstNomi_DblClick(Cancel As Integer)
On Error GoTo errHandler
Dim i, identificativo As Long
Dim strSQL As String
Dim db As DAO.Database
Set db = CurrentDb
For i = 0 To Me.lstNomi.ListCount - 1
    If Me.lstNomi.Selected(i) = True Then
        identificativo = lstNomi.Column(0, i)
        strSQL = "update tabella set stato = 'y',data = date() where id = " & identificativo
        DoCmd.SetWarnings False
        db.Execute strSQL, dbFailOnError
        DoCmd.SetWarnings True
    End If
Next
Me.Refresh
MsgBox "Righe aggiornate: " & db.RecordsAffected

errHandler:
    If Err.Number <> 0 Then
        MsgBox Err.Number & ": " & Err.Description, vbExclamation, "Errore esecuzione query"
        Exit Sub
    End If

End Sub
edit. In realtà mi sono reso conto, provando su una selezione multipla, che il conteggio era sempre pari a uno. Visto che ovviamente la query viene eseguita dentro il ciclo for sul singolo record. Quindi servirebbe inizializzare un contatore a zero e incrementarlo dopo ogni query.

Vado a dormire che è meglio.

Ultima modifica di john_revelator : 13-06-2009 alle 02:37.
john_revelator è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2009, 09:53   #4
SharPet
Senior Member
 
L'Avatar di SharPet
 
Iscritto dal: Jul 2002
Città: Garlasco (PV)
Messaggi: 2097
Ok, ma probabilmente ho qualche lacuna e non so come far funzionare il tutto

Come devo modificare il codice se devo aggiornare il campo che si chiama "IDstatoF" che sta all'interno della tabella "Contratti".
La casella di riepilogo (basata sulla query di selezione dello stato si chiama "LavorazioneDaInserire") e mi visualizza i campi cognome, nome, ragione_sociale (che stanno xò nella tabella Anagrafica).
Come faccio a far funzionare tutto sapendo che a quel nominativo è associato un IDcontratto (della tabella Contratti) a cui corrisponderà di conseguenza anche l'IDstatoF?
__________________
Sempron 3100+ 256kb...
SharPet è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2009, 15:23   #5
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Rispondo qui a tuo pvt.

Anzitutto la struttura del DB, dove c'è un po' di confusione. Corrisponde a questa ?

Anagrafica
> IDcliente ( PK )
> cognome
> nome
> ragione_sociale

Contratti
> IDcontratto
> IDcliente ( FK su Anagrafica.IDcliente )
> IDstatoF ( X o Y )
> DataY ( ? )

1 cliente --> molti contratti.
Quindi il campo DataY è in Contratti e serve a memorizzare la data in cui l'utente, facendo doppio-click su quella listbox, ha modificato IDstatoF, ok ?

Poi, la listbox come la popoli ? Posta il codice Sql della query.
E' una listbox multi-colonna ? IDcontratto è presente nella listbox ?

Da quanto ho capito quello che chiedi è una semplice UPDATE su Contratti, da lanciare al doppio-click dell'utente su un item della listbox, niente di arduo. Intanto direi che john_revelator ha già postato un esempio di codice opportuno, da riadattare al tuo caso...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 18-06-2009, 10:19   #6
SharPet
Senior Member
 
L'Avatar di SharPet
 
Iscritto dal: Jul 2002
Città: Garlasco (PV)
Messaggi: 2097
Si, la struttura è quella

Nella listbox non c'era l'idcontratto ma forse è meglio aggiungerla, sia poi per semplicità sia x evitare problemi nel caso di + contratti per cliente

l'attuale listbox è:

SELECT LavorazioneInApprovazione.cognome, LavorazioneInApprovazione.nome, LavorazioneInApprovazione.ragione_sociale, LavorazioneInApprovazione.IDcontratto
FROM LavorazioneInApprovazione
ORDER BY LavorazioneInApprovazione.cognome;

poi volevo chiedere...ma se lo stato di default lo metto ad esempio a "1" e voglio farlo passare automaticamente a "2" quando completo un altro campo è possibile? nel senso che una volta che scrivo un valore in un campo della tabella Contratti es "numero_pratica" automaticamente "IDstatoF" passa da "1" a "2"
__________________
Sempron 3100+ 256kb...
SharPet è offline   Rispondi citando il messaggio o parte di esso
Old 18-06-2009, 15:12   #7
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da SharPet Guarda i messaggi
Si, la struttura è quella

Nella listbox non c'era l'idcontratto ma forse è meglio aggiungerla, sia poi per semplicità sia x evitare problemi nel caso di + contratti per cliente

l'attuale listbox è:

SELECT LavorazioneInApprovazione.cognome, LavorazioneInApprovazione.nome, LavorazioneInApprovazione.ragione_sociale, LavorazioneInApprovazione.IDcontratto
FROM LavorazioneInApprovazione
ORDER BY LavorazioneInApprovazione.cognome;
Quindi Anagrafica adesso si chiama LavorazioneInApprovazione ?
Devi essere più preciso, sennò non finiamo più.

Diamo una sistemata alla query per popolare la ListBox. Così non va. Inoltre LavorazioneInApprovazione non ha un IDcontratto perciò l'ultimo campo verrebbe interpretato da Access come parametro esterno...

Semmai questa :
Codice:
SELECT LavorazioneInApprovazione.cognome, LavorazioneInApprovazione.nome, LavorazioneInApprovazione.ragione_sociale, Contratti.IDcontratto
FROM LavorazioneInApprovazione, Contratti
WHERE LavorazioneInApprovazione.IDcliente = Contratti.IDcliente
ORDER BY LavorazioneInApprovazione.cognome;
Ok, la salvo e poi creo la ListBox ( Lista1 ) associata alla query.
A questo punto ho una lista a 4 colonne. L'indice in base 0 della colonna IDcontratto è quindi 3.

> Doppio click su Lista1 :
Codice:
Private Sub Elenco1_DblClick(Cancel As Integer)

    Dim idContratto As Long
    idContratto = Elenco1.Column(3)
    Dim strSql As String
    strSql = "UPDATE Contratti SET IDstatoF = 'Y', DataY = #" & Now & "# " & _
             "WHERE IDcontratto = " & idContratto
    DoCmd.SetWarnings False
    DoCmd.RunSQL strSql
    DoCmd.SetWarnings True

End Sub
E hai finito.

Quote:
Originariamente inviato da SharPet Guarda i messaggi
poi volevo chiedere...ma se lo stato di default lo metto ad esempio a "1" e voglio farlo passare automaticamente a "2" quando completo un altro campo è possibile? nel senso che una volta che scrivo un valore in un campo della tabella Contratti es "numero_pratica" automaticamente "IDstatoF" passa da "1" a "2"
Sa tanto di Trigger, e Access non li supporta, perciò dovrai andare con VBA...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2009, 10:04   #8
SharPet
Senior Member
 
L'Avatar di SharPet
 
Iscritto dal: Jul 2002
Città: Garlasco (PV)
Messaggi: 2097
lavorazioneinapprovazione è la query che ho fatto per selezionare tutti i record che hanno IDstato impostato a "1", in pratica ho una maschera con 3 caselle di riepilogo e ognuno è basata su una query che seleziona solo i record con rispettivamente IDstato= 1 , idstato=2 e idstato=3

Cmq adesso provo un po' e vedo se riesco a far qualcosa
__________________
Sempron 3100+ 256kb...
SharPet è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2009, 13:31   #9
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da SharPet Guarda i messaggi
lavorazioneinapprovazione è la query che ho fatto per selezionare tutti i record che hanno IDstato impostato a "1", in pratica ho una maschera con 3 caselle di riepilogo e ognuno è basata su una query che seleziona solo i record con rispettivamente IDstato= 1 , idstato=2 e idstato=3
Ah, quindi fai una query su un'altra query...
Ma non era più semplice fare tutto in una query sola ?

> Query che popola la ListBox1 :
Codice:
SELECT Anagrafica.cognome, Anagrafica.nome, Anagrafica.ragione_sociale, Contratti.IDcontratto
FROM Anagrafica, Contratti
WHERE Anagrafica.IDcliente=Contratti.IDcliente
AND Contratti.IDstatoF = 1
ORDER BY Anagrafica.cognome;
> Query che popola la ListBox2 :
Codice:
SELECT Anagrafica.cognome, Anagrafica.nome, Anagrafica.ragione_sociale, Contratti.IDcontratto
FROM Anagrafica, Contratti
WHERE Anagrafica.IDcliente=Contratti.IDcliente
AND Contratti.IDstatoF = 2
ORDER BY Anagrafica.cognome;
> Query che popola la ListBox3 :
Codice:
SELECT Anagrafica.cognome, Anagrafica.nome, Anagrafica.ragione_sociale, Contratti.IDcontratto
FROM Anagrafica, Contratti
WHERE Anagrafica.IDcliente=Contratti.IDcliente
AND Contratti.IDstatoF = 3
ORDER BY Anagrafica.cognome;
Per la gestione del doppio-click, il codice ce l'hai già...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2009, 13:35   #10
SharPet
Senior Member
 
L'Avatar di SharPet
 
Iscritto dal: Jul 2002
Città: Garlasco (PV)
Messaggi: 2097
eh si...infatti inizio a capire adesso come funziona
__________________
Sempron 3100+ 256kb...
SharPet è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2009, 14:00   #11
SharPet
Senior Member
 
L'Avatar di SharPet
 
Iscritto dal: Jul 2002
Città: Garlasco (PV)
Messaggi: 2097
Ho fatto come hai detto e preso la routine dalla risposta precedente ma mi dice errore di runtime 94; utilizzo non valido di Null

e sulla riga segnata me la evidenzia nel debug

Option Compare Database
Private Sub Elenco2_DblClick(Cancel As Integer)
Dim idCon As Long
idCon = Elenco2.Column(3) <----
Dim strSql As String
strSql = "UPDATE Contratti SET IDstatoF = '3', DataApprovazione = #" & Now & "# " & _
"WHERE IDcontratto = " & idCon
DoCmd.SetWarnings False
DoCmd.RunSQL strSql
DoCmd.SetWarnings True


End Sub
__________________
Sempron 3100+ 256kb...
SharPet è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2009, 14:19   #12
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da SharPet Guarda i messaggi
Ho fatto come hai detto e preso la routine dalla risposta precedente ma mi dice errore di runtime 94; utilizzo non valido di Null

e sulla riga segnata me la evidenzia nel debug

Option Compare Database
Private Sub Elenco2_DblClick(Cancel As Integer)
Dim idCon As Long
idCon = Elenco2.Column(3) <----
Dim strSql As String
strSql = "UPDATE Contratti SET IDstatoF = '3', DataApprovazione = #" & Now & "# " & _
"WHERE IDcontratto = " & idCon
DoCmd.SetWarnings False
DoCmd.RunSQL strSql
DoCmd.SetWarnings True


End Sub
Ma Elenco2 ha o no 4 colonne ? Sulla 4a colonna ( la column 3 in base 0 ) ci deve essere un idcontratto, non deve essere un campo null.
Inoltre l'Update che usi così non va. Nei campi numerici gli apici singoli non vanno :

Codice:
    strSql = "UPDATE Contratti SET IDstatoF = 3, DataApprovazione = #" & Now & "# " & _
             "WHERE IDcontratto = " & idCon
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2009, 19:02   #13
SharPet
Senior Member
 
L'Avatar di SharPet
 
Iscritto dal: Jul 2002
Città: Garlasco (PV)
Messaggi: 2097
che figata funziona tutto!

come modifico il codice per far si che dopo aver fatto doppio click (e quindi aggiornato IDstato e dataApprovazione) la maschera (che si chiama Lavorazione) si aggiorni?
__________________
Sempron 3100+ 256kb...
SharPet è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2009, 20:07   #14
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da SharPet Guarda i messaggi
che figata funziona tutto!

come modifico il codice per far si che dopo aver fatto doppio click (e quindi aggiornato IDstato e dataApprovazione) la maschera (che si chiama Lavorazione) si aggiorni?
Finalmente !
Puoi aggiornare ogni singola lista semplicemente con .Requery.
Es.:
Codice:
Elenco1.Requery
O anche a livello di Form :

Codice:
Me.Requery
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare Antigravity A1: drone futuristico per riprese a ...
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
Addio definitivo alla GeForce GTX 1080: ...
Numeri record per gli iPhone 17: Apple s...
L'Italia del 2025 raccontata da Google: ...
Piaggio lancia Porter NPE, il pick-up el...
Xiaomi L1 a 153€: il proiettore smart 10...
Dopo Amazon, anche il data center di Gro...
Scoppia il caso Meta AI: l'Europa apre u...
Torna in sconto dopo mesi il super table...
Ricarica elettrica senza cavi: in Svizze...
iPhone SE (2016) entra ufficialmente nel...
The God Slayer: Pathea svela il nuovo op...
Spotify Wrapped 2025: il nuovo Wrapped P...
Offerte OPPO per Natale 2025: i migliori...
ROG Matrix RTX 5090: la GPU gaming pi&ug...
AMD, Cisco e HUMAIN: una joint venture p...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:47.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v