|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
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 |
|
|
|
|
|
#2 |
|
Senior Member
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
Alla routine va passato il nome secco, senza il Form_, ossia il nome visibile nella finestra "Maschere"... |
|
|
|
|
|
#3 |
|
Senior Member
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
__________________
ho concluso felicemente con: masterGR, piantax, aragorn85, battalion75, lukas785, cagnulein, CaFFeiNe, josty,kabira85 e tanti altri |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
"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)
Codice:
On Error GoTo ERRORE Prova. |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
|
Quote:
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 |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
|
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. |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Quando scrivi : Dim ochart As ChChart a quale oggetto di libreria fai riferimento ? Se puoi fammi una lista dei riferimenti attivi nel tuo progetto. |
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
|
Quote:
__________________
ho concluso felicemente con: masterGR, piantax, aragorn85, battalion75, lukas785, cagnulein, CaFFeiNe, josty,kabira85 e tanti altri |
|
|
|
|
|
|
#10 |
|
Senior Member
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)
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... |
|
|
|
|
|
#11 |
|
Senior Member
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.
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
|
Quote:
__________________
ho concluso felicemente con: masterGR, piantax, aragorn85, battalion75, lukas785, cagnulein, CaFFeiNe, josty,kabira85 e tanti altri |
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
|
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 |
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
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
|
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
|
Quote:
__________________
ho concluso felicemente con: masterGR, piantax, aragorn85, battalion75, lukas785, cagnulein, CaFFeiNe, josty,kabira85 e tanti altri |
|
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
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... |
|
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
|
Quote:
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 |
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
|
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Sep 2003
Città: Modena
Messaggi: 4125
|
ok grazie mille per la tua disponibilità....
__________________
ho concluso felicemente con: masterGR, piantax, aragorn85, battalion75, lukas785, cagnulein, CaFFeiNe, josty,kabira85 e tanti altri |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:07.




















