Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
ASUS Expertbook PM3: il notebook robusto per le aziende
ASUS Expertbook PM3: il notebook robusto per le aziende
Pensato per le necessità del pubblico d'azienda, ASUS Expertbook PM3 abbina uno chassis particolrmente robusto ad un pannello da 16 pollici di diagonale che avantaggia la produttività personale. Sotto la scocca troviamo un processore AMD Ryzen AI 7 350, che grazie alla certificazione Copilot+ PC permette di sfruttare al meglio l'accelerazione degli ambiti di intelligenza artificiale
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Abbiamo provato per diversi giorni una new entry del mercato italiano, la Gowow Ori, una moto elettrica da off-road, omologata anche per la strada, che sfrutta una pendrive USB per cambiare radicalmente le sue prestazioni
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-12-2008, 23:53   #1
serbring
Senior Member
 
L'Avatar di serbring
 
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
[visual basic-access]Sapere se un form è stato caricato in memoria

Sapete come posso sapere da una routine se un form è stato caricato in memoria, cioè se ha eseguito l'evento load? Ho visto che esiste la proprietà onload, ma non ho capito come và utizzata. Sono un neofita del VBA.
__________________
ho concluso felicemente con: masterGR, piantax, aragorn85, battalion75, lukas785, cagnulein, CaFFeiNe, josty,kabira85 e tanti altri
serbring è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 09:10   #2
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Semplice :

Codice:
    If CurrentProject.AllForms(nomeForm).IsLoaded = True Then
        MsgBox nomeForm & " Caricata"
    Else
        MsgBox nomeForm & " Non Caricata"
    End If
facendo attenzione che, se si nomina una Form "nomeForm", il VBA di Access applica all'oggetto il nome "Form_nomeForm".
Alla routine va passato il nome secco, senza il Form_, ossia il nome visibile nella finestra "Maschere"...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 12:28   #3
serbring
Senior Member
 
L'Avatar di serbring
 
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
ti ringrazio...
Ma la funzione mi ritorna il valore vero ancor prima che sia stato eseguito l'evento load. Com'è possibile?
Cmq andando nello specifico ti illustro il mio vero problema visto che questa proprietà non me lo risolve.
In pratica, ho creato un pivotchart che mi visualizza una serie di istogrammi. Vorrei che ogni volta che viene modificato il grafico, la formattazione del chart rimanga costante. Ho creato il codice sotto elencato ma mi dà sempre l'errore di run-time '1004': paramentro non valido", nella riga evidenziata in grassetto. Grafici accelerazioni è il nome del form nel quale viene generato un evento. Cioè la sub form_viewchange viene generato quando deve essere ridisegnato il form "grafici accelerazioni"
Ho notato che dopo la prima visualizzazione non mi viene ritornato alcun errore e per questo pensavo che il problema sia quello di sapere se la maschera è stata caricata o meno.

Codice:

Private Sub Form_ViewChange(ByVal Reason As Long)
    Dim ochart As ChChart
    Dim mycol(13) As Long
    Dim num As Integer
    If CurrentProject.AllForms("grafici accelerazioni").IsLoaded = True Then
    Set ochart = Forms("grafici accelerazioni").ChartSpace.Charts(0)
	mycol(1) = RGB(0, 128, 128)
	mycol(2) = RGB(0, 128, 0)
    	mycol(3) = RGB(255, 0, 0)
	mycol(4) = RGB(255, 204, 0)
	mycol(5) = RGB(128, 0, 128)
	mycol(6) = RGB(255, 153, 0)
    	mycol(7) = RGB(153, 204, 255)
    	mycol(8) = RGB(255, 255, 204)
    	mycol(9) = RGB(0, 0, 128)
   	mycol(10) = RGB(204, 153, 255)
    	mycol(11) = RGB(128, 128, 128)
    	mycol(12) = RGB(200, 100, 100)
    	mycol(13) = RGB(255, 50, 50)
    	num = ochart.SeriesCollection.Item(0).DataLabelsCollection.Count
    	For i = 0 To ochart.SeriesCollection.Count - 1
        	s = ochart.SeriesCollection(i).Name
        	num = ochart.SeriesCollection.Item(i).DataLabelsCollection.Count
        	If num = 0 Then
            		ochart.SeriesCollection(i).Interior.Color = mycol(i)
             		With ochart.SeriesCollection(i).DataLabelsCollection.Add
	                	.HasValue = True
	        	        .Font.Size = 8
        	        	.Font.Bold = True
	        	        .Font.Color = ochart.SeriesCollection(i).Interior.Color
                		.NumberFormat = Format("#0.00")
	    		        .Position = chLabelPositionOutside 
            		End With
        	End If
	Next
   End If
End Sub
questa è l'unica routine che tengo nel form.
__________________
ho concluso felicemente con: masterGR, piantax, aragorn85, battalion75, lukas785, cagnulein, CaFFeiNe, josty,kabira85 e tanti altri
serbring è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 15:03   #4
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da serbring Guarda i messaggi
...
Ho notato che dopo la prima visualizzazione non mi viene ritornato alcun errore e per questo pensavo che il problema sia quello di sapere se la maschera è stata caricata o meno.
La tua prima richiesta :
"sapere da una routine se un form è stato caricato in memoria"
lasciava intendere che fosse esterna al Form stesso. Ad esempio una Public Sub o Function.
Da qui la mia risposta, che era corretta in quel caso.

Nello specifico, dato che sai che quel codice funziona in tutti i casi, tranne in quello del primo lancio della Form, non è più necessario controllarne il Load, ma potrebbe essere sufficiente intercettare l'errore sulla riga che hai evidenziato. Così :

Codice:
On Error Resume Next
Set ochart = Forms("grafici accelerazioni").ChartSpace.Charts(0)
In alternativa :

Codice:
On Error GoTo ERRORE
dove ERRORE: è un'etichetta ( senza alcun codice associato ) che puoi inserire subito prima dell'End Sub.

Prova.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 15:42   #5
serbring
Senior Member
 
L'Avatar di serbring
 
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
La tua prima richiesta :
"sapere da una routine se un form è stato caricato in memoria"
lasciava intendere che fosse esterna al Form stesso. Ad esempio una Public Sub o Function.
Da qui la mia risposta, che era corretta in quel caso.
scusami se magari ci siamo fraintesi. Non conosco il visual basic e così mi son spiegato male.
Cmq ti ringrazio tantissimo facendo come mi hai detto te và benissimo
__________________
ho concluso felicemente con: masterGR, piantax, aragorn85, battalion75, lukas785, cagnulein, CaFFeiNe, josty,kabira85 e tanti altri
serbring è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 15:46   #6
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da serbring Guarda i messaggi
scusami se magari ci siamo fraintesi. Non conosco il visual basic e così mi son spiegato male.
Cmq ti ringrazio tantissimo facendo come mi hai detto te và benissimo
No hay problema !
Felice di aver risolto.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 10-12-2008, 16:15   #7
serbring
Senior Member
 
L'Avatar di serbring
 
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
No hay problema !
Felice di aver risolto.
scusa avrei una domanda da farti, sperando che tu la sappia ed'è sempre inerente a quella routine lì. In pratica vorrei che le etichette valori abbiano lo stesso colore della serie di dati. Io l'ho fatto creandomi un vettore di colori e poi scorrendoli impongo che sia la serie che le etichette abbiano il colore imposto da me. Però ogni volta che cambio la visualizzazione del grafico, mi cambia la anche il colore della serie di dati, la quale renderebbe scomoda la visualizzazione da terze persone. Quindi mi piacerebbe lasciare in automatico la scelta dei colori della serie di dati ed imporre alle etichette il valore scelto da access. Ho provato quindi a togliere questa riga,

ochart.SeriesCollection(i).Interior.Color = mycol(i)
ed imponendo solo
ochar.SeriesCollection(i).datalabelcollections.font.color=ochart.SeriesCollection(i).Interior.Color

il problema è che se non impongo io un colore ochart.SeriesCollection(i).Interior.Color è sempre =-1, anche dopo l'evento AfterRender della form. Dove può esserci l'errore?
__________________
ho concluso felicemente con: masterGR, piantax, aragorn85, battalion75, lukas785, cagnulein, CaFFeiNe, josty,kabira85 e tanti altri

Ultima modifica di serbring : 10-12-2008 alle 16:17.
serbring è offline   Rispondi citando il messaggio o parte di esso
Old 11-12-2008, 09:44   #8
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da serbring Guarda i messaggi
In pratica vorrei che le etichette valori abbiano lo stesso colore della serie di dati.
Non dovrebbe essere così difficile, comunque non riesco a trovare nella mia libreria VBA l'oggetto "ChChart".
Quando scrivi :
Dim ochart As ChChart
a quale oggetto di libreria fai riferimento ?
Se puoi fammi una lista dei riferimenti attivi nel tuo progetto.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 11-12-2008, 11:22   #9
serbring
Senior Member
 
L'Avatar di serbring
 
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Non dovrebbe essere così difficile, comunque non riesco a trovare nella mia libreria VBA l'oggetto "ChChart".
Quando scrivi :
Dim ochart As ChChart
a quale oggetto di libreria fai riferimento ?
Se puoi fammi una lista dei riferimenti attivi nel tuo progetto.
l'oggetto chchart fà riferimento alla libreriria ocw10.dll (microsoft office web components). la trovi in c:\programmi\file comuni\microsoft shared\web components\10. Grazie
__________________
ho concluso felicemente con: masterGR, piantax, aragorn85, battalion75, lukas785, cagnulein, CaFFeiNe, josty,kabira85 e tanti altri
serbring è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2008, 08:56   #10
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
La mia prima ipotesi è che quel controllo non "senta" gli eventi, o almeno, non quelli correlati ad un cambio di stato o di behavior grafico...

Dal codice che hai postato vedo che ti riferisci ad un oggetto già inserito sulla Form in fase di progettazione :

Codice:
  Set ochart = Forms("grafici accelerazioni").ChartSpace.Charts(0)
Ora, dovresti andare nelle proprietà di quel Chart, e controllare innanzitutto queste ( nel mio caso ho un oggetto ChartSpace1 che deriva dalla classe OWC11.ChartSpace.11 dato che uso Access 2003 ) :

EnableEvents = SI
AllowLayoutEvents = SI
AllowRenderEvents = SI
AllowPointRenderEvents = SI

Ripeto, è una prima ipotesi, dato che non ho modo di vedere il tuo progetto ( si farebbe prima se potessi vederlo, magari inviandolo in pvt... ), ma ho visto che alcune di queste proprietà sono su NO di default.
Prova...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 14-12-2008, 10:24   #11
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Niente da fare purtroppo. Ho cercato più volte di far girare quel codice, ma si rifiuta, non trovando ovviamente la libreria Microsoft Office XP Web Components... Se riesci a creare un esempio funzionante in Access 2003 ( con relativo Web Component / OWC 11 ) fammi sapere.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 14-12-2008, 11:41   #12
serbring
Senior Member
 
L'Avatar di serbring
 
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Niente da fare purtroppo. Ho cercato più volte di far girare quel codice, ma si rifiuta, non trovando ovviamente la libreria Microsoft Office XP Web Components... Se riesci a creare un esempio funzionante in Access 2003 ( con relativo Web Component / OWC 11 ) fammi sapere.
a me funziona bene. Che errore ti dà?
__________________
ho concluso felicemente con: masterGR, piantax, aragorn85, battalion75, lukas785, cagnulein, CaFFeiNe, josty,kabira85 e tanti altri
serbring è offline   Rispondi citando il messaggio o parte di esso
Old 14-12-2008, 12:12   #13
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da serbring Guarda i messaggi
a me funziona bene. Che errore ti dà?
Non funziona proprio, perchè non ho l'oggetto ChartSpace di Office Xp.
Uso Office 2003. Pensavo Access me lo upgradasse in auto, ma nisba.
Cmq, se funziona bene, hai risolto. No ?
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 14-12-2008, 12:38   #14
serbring
Senior Member
 
L'Avatar di serbring
 
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Non funziona proprio, perchè non ho l'oggetto ChartSpace di Office Xp.
Uso Office 2003. Pensavo Access me lo upgradasse in auto, ma nisba.
Cmq, se funziona bene, hai risolto. No ?
funziona bene nel senso che mi esegue il tutto...cmq tranquillo grazie per l'impegno. Se lo sai come posso fare per avere un tipo dato di tipo ora che abbia un field size maggiore di 23.59 e come posso fare con il comando format ad impostare una formattazione di tipo ora, tenendo conto che il campo di origine è un tipo di dato h 24. Potrei tenere i campi separati, ma non mi và bene perchè devo fare il grafico e visualizzare le etichette valori. Grazie mille
__________________
ho concluso felicemente con: masterGR, piantax, aragorn85, battalion75, lukas785, cagnulein, CaFFeiNe, josty,kabira85 e tanti altri
serbring è offline   Rispondi citando il messaggio o parte di esso
Old 14-12-2008, 15:07   #15
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da serbring Guarda i messaggi
come posso fare per avere un tipo dato di tipo ora che abbia un field size maggiore di 23.59 e come posso fare con il comando format ad impostare una formattazione di tipo ora, tenendo conto che il campo di origine è un tipo di dato h 24.
1. La prima me la devi spiegare, perchè non ho chiaro cosa intendi per "tipo con field size > 23.59"...

2. Per estrarre la parte oraria da una data :

Codice:
    'Esempio :
    
    Dim D As Date
    D = Now
    
    Dim formatD As Variant
    
    formatD = Format(D, "hh:mm:ss")
    MsgBox formatD
    
    formatD = Format(D, "hh:mm")
    MsgBox formatD
    
    formatD = Format(D, "hh")
    MsgBox formatD
    ' oppure    
    formatD = Hour(D)
    MsgBox formatD
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 14-12-2008, 22:40   #16
serbring
Senior Member
 
L'Avatar di serbring
 
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
1. La prima me la devi spiegare, perchè non ho chiaro cosa intendi per "tipo con field size > 23.59"...

2. Per estrarre la parte oraria da una data :

Codice:
    'Esempio :
    
    Dim D As Date
    D = Now
    
    Dim formatD As Variant
    
    formatD = Format(D, "hh:mm:ss")
    MsgBox formatD
    
    formatD = Format(D, "hh:mm")
    MsgBox formatD
    
    formatD = Format(D, "hh")
    MsgBox formatD
    ' oppure    
    formatD = Hour(D)
    MsgBox formatD
in pratica visto che il campo di tipo ora non deve contenere un orario ma una durata posso avere una durata che è maggiore di 24 ore. Ma il tipo dato di access arriva fino a 23.59. Per lui 24 è 00.00 ma del giorno successivo. Il problema potrei bypassarlo mettendo un campo numerico, Sapendo che per access 1 ora=1/24 numerico. Però se metto 1.5 lui mi prende 12 del giorno seguente e se vado a fare il grafico vedo la scala che va da 0, 1,2,.....22,23,0,1,2....23,00 e così via. Spero di essere stato chiaro
__________________
ho concluso felicemente con: masterGR, piantax, aragorn85, battalion75, lukas785, cagnulein, CaFFeiNe, josty,kabira85 e tanti altri
serbring è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2008, 00:09   #17
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da serbring Guarda i messaggi
in pratica visto che il campo di tipo ora non deve contenere un orario ma una durata posso avere una durata che è maggiore di 24 ore. Ma il tipo dato di access arriva fino a 23.59. Per lui 24 è 00.00 ma del giorno successivo.
Beh, ma questo è normale.
Non è prerogativa di Access, è proprio che stai usando un tipo errato per il campo che vuoi creare. Un campo data/ora esprime un numero "puntiforme", ossia l'istante rappresentato da quella data, non una durata.
Se hai 2 date di cui vuoi calcolare l'intervallo trascorso in Ore, dovrai, in fase di Insert nel DB, creare un campo aggiuntivo numerico che conterrà questa differenza...
Differenza che in VB calcoli molto semplicemente con la funzione DateDiff...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2008, 00:33   #18
serbring
Senior Member
 
L'Avatar di serbring
 
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Beh, ma questo è normale.
Non è prerogativa di Access, è proprio che stai usando un tipo errato per il campo che vuoi creare. Un campo data/ora esprime un numero "puntiforme", ossia l'istante rappresentato da quella data, non una durata.
Se hai 2 date di cui vuoi calcolare l'intervallo trascorso in Ore, dovrai, in fase di Insert nel DB, creare un campo aggiuntivo numerico che conterrà questa differenza...
Differenza che in VB calcoli molto semplicemente con la funzione DateDiff...

ma a me non serve una differenza. Devo mettere io questa durata che è stata precedentemente calcolata da una routine matlab.
__________________
ho concluso felicemente con: masterGR, piantax, aragorn85, battalion75, lukas785, cagnulein, CaFFeiNe, josty,kabira85 e tanti altri
serbring è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2008, 11:38   #19
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da serbring Guarda i messaggi
ma a me non serve una differenza. Devo mettere io questa durata che è stata precedentemente calcolata da una routine matlab.
Allora temo proprio non si possa fare.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 15-12-2008, 18:05   #20
serbring
Senior Member
 
L'Avatar di serbring
 
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Allora temo proprio non si possa fare.
ok grazie mille per la tua disponibilità....
__________________
ho concluso felicemente con: masterGR, piantax, aragorn85, battalion75, lukas785, cagnulein, CaFFeiNe, josty,kabira85 e tanti altri
serbring è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design   Recensione OnePlus 15: potenza da vendere e batt...
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media AMD Ryzen 5 7500X3D: la nuova CPU da gaming con ...
Gemini 3 Pro disponibile ora: è i...
Super sconti robot aspirapolvere: ECOVAC...
DOOM: The Dark Ages si espande con Ripat...
EA SPORTS annuncia il futuro della serie...
Tutte le TV già in offerta defini...
Meta non ha un monopolio nel settore dei...
L'amministrazione Trump presta 1 miliard...
Continua la rivoluzione interna in Intel...
Lenovo Legion 5i, gaming senza compromes...
iPhone 17 Pro a sorpresa: il nuovo mostr...
SwitchBot, arriva il Presence Sensor a...
AirPods 4 in super offerta su Amazon: il...
Offerte Bose folli su Amazon: QuietComfo...
Apple apre le porte agli assistenti di t...
Il nuovo cameraphone di Xiaomi arriver&a...
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: 10:51.


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