Newsgroup: it.comp.appl.access
Titolo: Metodo Circle->BUG?

Uso Access2k SP3.
Ho appena costruito una piccola applicazione che, tra le altre cose, traccia
un certo schema su un report. Purtroppo mi combina un pasticcio quando
arrivo a disegnare dei cerchi di raggio 11500 (circa). Il bello è che per
raggi più piccoli o più grandi, pare non esserci alcun problema.
Se qualcuno avesse la bontà di provare questa procedura:
- aprire un nuovo report in visualizzazione struttura
- nascondere tutte le intestazioni e i piè di pagina
- impostare a Zero tutti i margini
- impostare la pagina in orizzontale
- impostare la larghezza del report a 28 cm
- aprire il modulo del report e incollare questo codice:
Option Compare Database
Option Explicit
 Const AltezzaReport = 11328
Private Sub Corpo_Print(Cancel As Integer, PrintCount As Integer)
    Dim rpt As Report
    Set rpt = Me
    rpt.Scale (-1400, 975)-(1400, -975)
    rpt.Circle (0, -300), 300, RGB(0, 0, 0) '<-NERO
    rpt.Circle (0, -11300), 11300, RGB(0, 0, 255) '<-BLU
    rpt.Circle (0, -11500), 11500, RGB(255, 0, 0) '<-ROSSO
End Sub
Private Sub Report_Open(Cancel As Integer)
    Me.Section(0).height = AltezzaReport
End Sub
- aprire il report in anteprima
A me disegna i tre cerchi ma il nero e il blu hanno all'incirca lo stesso
diametro (notare che, da codice, hanno rispettivamente raggio 300 e 11300).
Il cerchio rosso invece appare molto più piccolo degli altri due nonostante
abbia raggio 11500.
Succede anche a voi? Come posso ovviare l'inconveniente?
Grazie.
Ciao
Silvio

 ha scritto nel messaggio
news:brk8av$486vn$1...@ID-171909.news.uni-berlin.de...

Ciao Silvio
ho provato il tuo codice.......a me di cerchi ne visualizza solo uno in
basso a sx....  :)
Uso A2k sp2
Per i margini del report la mia stampante non accetta misure inferiori a
2.96 per alto,sx,basso a dx 13.97 sono misure in millimetri.
Ciao Daniele

 2.96 per alto,sx,basso a dx 13.97 sono misure in millimetri.
Grazie per aver provato (e risposto).
Sě, anche la mia stampante non accetta i margini nulli ma inserendo Zero si
setta al valore minimo (nel mio caso=5.08 mm). In ogni caso combina qualcosa
di anomalo. Se hai voglia, potresti provare a variare la larghezza del
report? Ho notato che anche piccole variazioni (1 cm) stravolgono totalmente
l'immagine finale.
Rimane il fatto che non so proprio come raggirare il problema. Ho pensato di
crearmi una Sub che disegna gli archi utilizzando solo il metodo Line (che,
per ora, non mi da nessun problema) spezzando l'arco in parti piccolissime.
Grazie ancora.
Ciao
Silvio

ST ha scritto:



Acc2000 SP3 
In anteprima vedo tre cerchi di misure diverse. La stampante predefinita č
una HP Laserjet 4000N. Orientamento Orizzontale. Margine Sup. 4.66 Inf.
5.08 Sin. 5.08 Dest. 5.75. Stampato il report si ottiene: rosso diam. 12
mm., bleů 51 mm , nero 60mm. I cerchi sono nella zona centrale del foglio.
--
rgrds
SC
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Ciao SC
Ho  Access2000 sp3 ...però la situazione resta la stessa
la mia stampante è una epson stilus photo 750 ...non sarà mancanza di
qualche riferimento?
Ciao Daniele

cidi ha scritto:


Non credo. Hai settato la pagina in orizzontale e larghezza report 28 cm.?
La stranezza è che basta variare di pochissimo la larghezza report ed i
cerchi cambiano dimensione e posizione.


 mm., bleů 51 mm , nero 60mm. I cerchi sono nella zona centrale del foglio.
Grazie.
I diametri ottenuti sono assolutamente inconcepibili. Inoltre anche le
posizioni dei cerchi sono assurde: dovrebbero essere tre cerchi tangenti nel
punto piů alto (coordinate 0,0). Insomma, in poche parole, sono rovinato.
Avevo basato tutta la mia applicazione su questi schemi e adesso non riesco
a farglieli disegnare. Eppure in passato avevo avuto delle notevoli
soddisfazioni con i disegnini di Access. Se nessun altro mi regala qualche
idea, penso che proverň la strada degli archi disegnati come polilinee
spezzate (molto fini) sperando che poi, all'ultimo, anche il metodo Line non
mi faccia scherzi.
Grazie.
Ciao.
Silvio


Come dicevo prima ho settato la pagina orizzontale e la larghezza del report
è data dal margine sx a 3 ed il dx a 14 mm per esigenze di stampante. Ho
fatto numerose prove cambiando di volta in volta di qualche millimetro i
margini non succede niente. Vedo sempre un cerchio.
Ciao Daniele

 Ciao Daniele
La stampante influisce solo per via dei margini. Effettivamente, variando
anche di poco la larghezza del report, tutto cambia. Posso sicuramente
sbagliare, ma non credo che manchi alcun riferimento: abbiamo settato la
larghezza e l'altezza del report, con il comando Scale abbiamo impostato la
tavola di lavoro...che sappia io, non manca niente.
Scusa cidi, ma non ho capito se ti escono i tre cerchi o solo uno.
Grazie
Ciao
Silvio

 Ciao Daniele
In ogni caso, rimane il fatto che qualcosa NON funziona in Access: i cerchi
dovrebbero essere tangenti nel punto in alto quindi, almeno un pezzetto di
tutti e tre dovresti vederlo.
Grazie
Ciao
Silvio

 ha scritto nel messaggio
news:brkrc4$kl2$1...@news.newsland.it...

Ciao SC
Premetto che non sono un grande esperto di access ma siccome anch'io ho a
che fare con i metodi circle, line, pset, ecc. vorrei darti qualche
indicazione in base alla mia esperienza. Ho provato il tuo codice e non
capisco perchè usi coordinate negative...forse è da qui che sorge il BUG?
Mahhh. In effetti capita che cerchi con raggio maggiore siano disegnati più
piccoli di altri con raggio minore.
Io opero così:
Se devo inserire dei disegni in un report, utilizzo un SottoReport che ha
Corpo.Height=Report.Width  per mantenere la proporzionalità
Tenendo presente che (0 , 0) corisponde all'angolo superiore sinistro del
report in genere io imposto sull'evento Su stampa del sottoreport
Report.Scale    (0 , 0) - (Report.Width , Corpo.Height).
Ciao
DavideN

 Report.Scale    (0 , 0) - (Report.Width , Corpo.Height).
Grazie per aver risposto.
In effetti uso coordinate negative ma perché per me...sono positive. I dati
che disegno sono inseriti in quel modo: mi è molto comodo avere (come nel
mio caso) un vero e proprio "piano cartesiano" con il punto (0,0) nel centro
e, per esempio, il punto (100,50) nel quadrante in alto a destra. Altrimenti
dovrei sommare (o sottrarre o cambiare di segno) uno ad uno, tutti i miei
dati per trovarmeli nella porzione di foglio che mi interessa. E' un po'
difficile spiegare cosa fa l'applicazione, ma immagina che io debba
diagrammare una tabella di dati in formato (X,Y) positivi e/o negativi. Il
problema è sorto quando è nata l'esigenza di "unire" alcuni punti non con
linee ma con archi di cerchio.
Certamente, credo che la tua idea di "normalizzare" la tavolozza (portandola
tutta in positivo) possa risolvere la cosa dal momento che (ormai mi pare
assodato) è un bug e con i bug, probabilmente, meno si arzigogola, meglio è.
Ottima la tua idea di usare un report "quadrato" così si evitano anche certi
problemi sempre con i cerchi che Access si ostina a fare rotondi anche
quando, per proporzionalità, dovrebbero essere ellissi. Sicuramente la
proverò anche se ho bisogno di diagrammi rettangolari (formato A4). Non sono
però riuscito a capire che vantaggio ci sia ad usare il SottoReport. Se
avessi ancora voglia di delucidarmi, te ne sarei molto grato.
Grazie.
Ciao
Silvio

 ha scritto nel messaggio
news:brktbr$4crad$1...@ID-171909.news.uni-berlin.de...

Ciao Silvio
Solo uno
il solito scalognato :-)))
Ciao Daniele

 Ciao Daniele
Non ti abbattere...vedo che qui le stranezze non mancano. Pensavo che
aumentando l'area dello Scale ti potessero comparire...l'ho provato qui da
me e, impostando
rpt.Scale (-2800, 1900)-(2800, -1900)
vedo anch'io un solo cerchio (dovrei vedere i soliti 3 cerchi ma piů
piccoli). BOOOH!!! Io ci rinuncio.
Ciao
Grazie ancora
Silvio

 ha scritto nel messaggio
news:brmd7l$5028s$1...@ID-171909.news.uni-berlin.de...

Ciao Silvio
dopo molte prove ho raggiunto qualche risultato con questi parametri:
Vedo: un cerchio completo nero diametro un cm circa un pochino piů  in basso
della mezzeria del foglio. vicino ai margini sx e basso due semicerchi,
quasi sovrapposti, di colore rosso e blu molto piů grandi 4-5 cm.
Dim rpt As Report
    Set rpt = Me
    rpt.Scale (-1000, 975)-(1000, -975)
    rpt.Circle (0, -150), 150, RGB(0, 0, 0) '<-NERO
    rpt.Circle (0, -1130), 1130, RGB(0, 0, 255) '<-BLU
    rpt.Circle (0, -1150), 1150, RGB(255, 0, 0) '<-ROSSO
cmq anche per me finisce qua... :-)
Ciao Daniele

 cmq anche per me finisce qua... :-)
Ciao Daniele
In ogni caso mi pare di capire che i diametri sono comunque tutti sballati.
Grazie per tutte le prove. Procederň sulla strada della curva composta da
linee.
Ciao


Ciao, finito di lavorare...ho riprovato di nuovo il tuo codice, ma non ho
trovato soluzioni.
Ti mando il risultato di alcune mie prove anche se non risolve il bug ma
dovrebbe sistemare il problema di proporzionalità dei cerchi
 Private Sub Corpo_Print(Cancel As Integer, PrintCount As Integer)
'Si sceglie in quante unità suddividere la larghezza del report e l'altezza
del Corpo:
    Report.ScaleHeight = 2000
    Report.ScaleWidth = 3000
    'Si impostano le coordinate di riferimento per i successivi metodi
grafici
    Report.CurrentX = Report.ScaleWidth / 2
    Report.CurrentY = Report.ScaleHeight / 2
    Dim X0, Y0 As Variant
    X0 = Report.CurrentX
    Y0 = Report.CurrentY
'Disegno l'asse X e Y
Report.Line (X0 - 1500, Y0)-(X0 + 1500, Y0)
Report.Line (X0, Y0 - 1000)-(X0, Y0 + 1000)
    'Questo ti serve per mantenere la proporzionalità dei cerchi se hai
impostato scale diverse per l'asse X e Y:
    Report.ScaleHeight = 2000
    Report.ScaleWidth = 2000 * (Report.Width / Report.Height)
         'Ricorda che utilizzando il metodo line vengono spostati i
riferimenti CurrentX e current Y quindi meglio impostarli di nuovo
    Report.CurrentX = Report.ScaleWidth / 2
    Report.CurrentY = Report.ScaleHeight / 2
    X0 = Report.CurrentX
    Y0 = Report.CurrentY
    'Esempi di cerchi
    Report.Circle (X0, Y0 - 300), 300, 0
    Report.Circle (X0, Y0 + 300), 300, 0
    Report.Circle (X0, Y0 - 3000), 3000, 0
    Report.Circle (X0, Y0 - 3100), 3100, 0
    Report.Circle (X0, Y0 - 3200), 3200, 0
    Report.Circle (X0, Y0 - 3300), 3300, 0
    ' E da qui inizia l'errore...forse i "riferimenti" per disegnare il
cerchio "escono dall'area di lavoro"
    Report.Circle (X0, Y0 - 3400), 3400, 500
 End Sub
Questo è un altro pò di codice se per caso stai facendo studi di funzione:
 Private Sub Corpo_Print(Cancel As Integer, PrintCount As Integer)
    'Se sceglie in quante unità suddividere la larghezza del report e
l'altezza del Corpo:
    Report.ScaleHeight = 2000
    Report.ScaleWidth = 3000
    'Si impostano le coordinate di riferimento per i successivi metodi
grafici
    Report.CurrentX = Report.ScaleWidth / 2
    Report.CurrentY = Report.ScaleHeight / 2
    Dim X0, Y0 As Variant
    X0 = Report.CurrentX
    Y0 = Report.CurrentY
    'Disegno l'asse X e l'asse Y
    Report.Line (X0 - 1500, Y0)-(X0 + 1500, Y0)
    Report.Line (X0, Y0 - 1000)-(X0, Y0 + 1000)
    Report.DrawWidth = 20
    Dim i As Variant
    For i = -1500 To 1500 Step 1
        Dim valoreY As Variant
        valoreY = i ^ 2 / 200 - 500 ' ESEMPIO DI FUNZIONE
        If valoreY > Y0 + Report.ScaleHeight Or valoreY < Y0 -
Report.ScaleHeight Then
        Else
        Report.PSet (X0 - i, Y0 + (valoreY * Report.ScaleHeight /
Report.ScaleWidth))
        End If
    Next i
    Report.DrawWidth = 1
 End Sub
Ciao
Davide

 ha scritto nel messaggio
news:VtHDb.2468$0w.1...@news2.tin.it...

Grazie davvero!!! Purtroppo non posso provare il tuo codice fino a giovedì
(sono ancora al lavoro per una pratica da consegnare domani sera...) ma
senz'altro lo guarderò e proverò con attenzione. In ogni caso, mi pare di
capire che per i miei cerchi non c'è nulla da fare... Non credo (ma
ovviamente, posso sbagliare) che ci sia un problema di riferimenti che
"escono dall'area di lavoro" perché, nelle mie prove avevo fatto esperimenti
con cerchi molto più grandi e tutto pareva funzionare. Sembrava che ci fosse
un "buco" intorno al raggio 11300 dove i cerchi andavano in crisi.
Grazie ancora.
Ciao
Silvio

 ha scritto nel messaggio
news:brnp0c$548am$1...@ID-171909.news.uni-berlin.de...

Ciao Davide (Niven J. ? ) :)
Ho provato io il tuo codice integrato con i cerchi di Silvio e ho ottenuto
una visualizzazione più completa anche se manca ancora qualcosa.
Credo che Silvio, più bravo ed esperto di me, otterrà quello che vuole ,
almeno lo spero. :-)
Ciao Daniele

 Credo che Silvio, più bravo ed esperto di me, otterrà quello che vuole ,
Bhè, bhè, non esageriamo!!! Voi piuttosto, e in particolare DavideN (che si
è presentato con un "Premetto che non sono un grande esperto di access" e
poi ci spara giù delle funzioncine piene di idee e spunti) mi avete aiutato
tantissimo!!!
Ho tardato un po' (causa vacanze) ma, in un nuovo thread, ho inviato la mia
soluzione. Accetto sempre volentieri critiche e suggerimenti.
Ciao e grazie ancora.
Silvio