Posizionare oggetto in base a quote contenute in una tabella

di il
16 risposte

Posizionare oggetto in base a quote contenute in una tabella

Ciao a tutti, sto cercando consigli..

potete indicarmi se il metodo che penso di utilizzare per raggiungere il mio obiettivo va bene oppure se c'è un modo migliore (semplicità ed efficienza).

- ho un oggetto di tipo linea che deve cambiare posizione e dimensione in base al valore di una textBox (1;2;3;4)

- ho una tabella con contenute tutte le quote delle linee (inclinazione;altezza;larghezza;da margine superiore; sinistra), quindi 4 record in questo caso

- dopo la modifica del valore nella textBox apro il recordset(tabella quote) in vba filtrando solo il record corrispondente al valore selezionato nella textBox (con SQL)

- estraggo il valore di ogni quota e l'assegno alla proprietà corrispondente della linea

graziee

16 Risposte

  • Re: Posizionare oggetto in base a quote contenute in una tabella

    In linea generale direi che va bene... diciamo che se quelle quote sono Editabili la tabella ha senso, se sono FISSE, puoi anche valutare di isnerirle nel codice...
    
    Function SetPosition(Value As integer)
       With OggettoLinea
          Select Case Value
             Case 1
                .Left=x01
                .Top=y01
                .Width=x11
                .Height=y11
             
             Case 2
                .Left=x02
                .Top=y02
                .Width=x12
                .Height=y12
    
             Case 3
                .Left=x03
                .Top=y03
                .Width=x13
                .Height=y13
          End Select
       End With
    End Function
  • Re: Posizionare oggetto in base a quote contenute in una tabella

    Grazie Alex,

    Si, ho bisogno della tabella per poter modificare le quote o aggiungere records..

    ne approfitto..
    dato che la tabella avrà un numero molto limitato di record (al massimo una decina) con circa 100 campi corrispondenti alle quote per più oggetti linea sullo stesso record ma verranno estratti solo 5 campi alla volta(quote per una sola linea)

    è veramente conveniente scomodare un recordset oppure potrei cavarmela efficientemente con DlookUp()?
  • Re: Posizionare oggetto in base a quote contenute in una tabella

    Tabella con 100 campi? Che poi te ne serviranno solo 5? Non conosciamo il significato di questi 100 campi, ma qualcosa mi dice che converrebbe normalizzare diversamente.
  • Re: Posizionare oggetto in base a quote contenute in una tabella

    OsvaldoLaviosa ha scritto:


    Tabella con 100 campi? Che poi te ne serviranno solo 5? Non conosciamo il significato di questi 100 campi, ma qualcosa mi dice che converrebbe normalizzare diversamente.
    l'ho pensata così:

    ho 5 prodotti (record) sui quali devo rilevare le dimensioni (circa 20 misure) e ogni misura ha 5 quote, quindi 5 * 20 campi.

    in sostanza cliccando su una textBox (dove andrà inserita la misura rilevata) vado a vedere il tipo di prodotto selezionato in una comboBox e poi assegno alla linea le quote corrispondenti a quella misura.
  • Re: Posizionare oggetto in base a quote contenute in una tabella

    wbd ha scritto:


    ho 5 prodotti (record) sui quali devo rilevare le dimensioni (circa 20 misure) e ogni misura ha 5 quote, quindi 5 * 20 campi.
    Raccontata così io vedrei la struttura tabelle:
    Prodotti uno-a-molti DimensioniProdotti
    DimensioniProdotti uno-a-molti Quote

    P.S.: io devo essere sincero sincero, non ho capito di cosa parla il tuo database. Inizialmente hai parlato di "linee"...e io le ho interpretate come "disegno geometrico": è così o significa altro?
    Poi...temo che la discussione stia prendendo un'altra piega dal titolo principale. Se occorre appurare/approfondire la questione "normalizzazione", è necessario aprire un nuovo thread (discussione).
  • Re: Posizionare oggetto in base a quote contenute in una tabella

    Gli oggetti linea hanno la funzione di indicare esattamente dove prendere la misura sul prodotto (blocco in laterizio) quando si clicca sulla textBox corrispondente alla misura selezionata.

    i 5 prodotti corrisponderanno a 5 foto diverse dove le quote per ogni misura sono diverse, quindi (ammesso che lo abbia compreso bene) il tuo esempio di relazioni non credo sia conveniente.

    se pensi che invece sia conveniente pensare ad un'altra struttura dei dati aprirò un'altra discussione.

    comunque il DlookUp() diventa pesante su tanti record e non per tanti campi giusto?
  • Re: Posizionare oggetto in base a quote contenute in una tabella

    wbd ha scritto:


    Gli oggetti linea hanno la funzione di indicare esattamente dove prendere la misura sul prodotto (blocco in laterizio) quando si clicca sulla textBox corrispondente alla misura selezionata.
    Usi un linguaggio tecnico del tuo campo professionale che io non comprendo.

    Se posso dare una mano anch'io, preferisco la seguente descrizione dettagliata:
    - di cosa parla il database
    - nomi propri di tutte le tabelle che entrano in gioco
    - nomi propri di tutti i campi delle tabelle con indicazione della chiave primaria
    - le relazioni
    - ri-spiega quello che vuoi fare usando i nomi propri
    Per i punti 2-3-4, invece della descrizione letteraria, puoi allegare una immagine della Finestra Relazioni.
  • Re: Posizionare oggetto in base a quote contenute in una tabella

    wbd ha scritto:


    OsvaldoLaviosa ha scritto:


    Tabella con 100 campi? Che poi te ne serviranno solo 5? Non conosciamo il significato di questi 100 campi, ma qualcosa mi dice che converrebbe normalizzare diversamente.
    l'ho pensata così:

    ho 5 prodotti (record) sui quali devo rilevare le dimensioni (circa 20 misure) e ogni misura ha 5 quote, quindi 5 * 20 campi.

    in sostanza cliccando su una textBox (dove andrà inserita la misura rilevata) vado a vedere il tipo di prodotto selezionato in una comboBox e poi assegno alla linea le quote corrispondenti a quella misura.
    Suggerirei una Relazione 1-M ogni Record avrai le tue 5 Quote.
    Io non userei i Dlookup, ma chiaramente è una possibilità.
  • Re: Posizionare oggetto in base a quote contenute in una tabella

    OsvaldoLaviosa ha scritto:



    Se posso dare una mano anch'io, preferisco la seguente descrizione dettagliata:
    - di cosa parla il database
    - nomi propri di tutte le tabelle che entrano in gioco
    - nomi propri di tutti i campi delle tabelle con indicazione della chiave primaria
    - le relazioni
    - ri-spiega quello che vuoi fare usando i nomi propri
    Per i punti 2-3-4, invece della descrizione letteraria, puoi allegare una immagine della Finestra Relazioni.
    allora,

    - si parla di controllo dimensioni su un mattone: spessore; lunghezza; altezza; e altre...

    - lo scopo dell'applicativo è di guidare l'operatore durante il rilevamento delle dimensioni

    - le misure da rilevare sono:
    - spessore1; spessore2; spessore3; spessore4
    - lunghezza1; lunghezza2; lunghezza3; lunghezza4
    - altezza1; altezza2; altezza3; altezza4
    - altraMisura1; altraMisura2 ecc ecc
    - ecc ecc....

    - le linee mostrano su una fotografia del mattone dove prendere la misura con il metro. Ogni misura sarà mostrata con una linea sopra alla fotografia del mattone.

    - ogni linea(misura) avrà le sue proprietà per posizionarla: inclinazione; larghezza; altezza; da margine superiore; sinistra

    - ho una tabella [quote_misure] con l'insieme delle quote di tutte le linee(campi) per ogni tipo di prodotto(records): spessore1Width; spessore1Height; spessore1Top; spessore1Left; ....lunghezza1Width; ...e così via per ogni misura. Chiave primaria [tipoBlocco]

    - ci sono, per il momento, 5 tipi di blocco (5 record di [quote_misure]), quindi 5 fotografie e 5 set di quote in [quote_misure]

    - ho una form [dimensioni] dove esiste una textBox per ogni misura da riportare

    - quando si clicca sulla textBox di inserimento della misura la linea viene dimensionata e posizionata sulla foto ad indicare l'esatta misura da prendere (a prova di imbecille)

    - quindi quando clicco sulla textBox dovrò valutare il tipo di prodotto che sto misurando (prendo il dato da una comboBox dove in precedenza ho scelto il prodotto), estrarre le 5 quote per la linea che dovrà indicare la misura corrispondente alla textBox e poi assegnarle alle proprietà della linea

    pensavo di usare l'evento click di ogni textBox in questo modo (versione con DlookUp())
    
    dim nomeCampoMisura as String
    dim tipo as integer 
    
    tipo = me.comboBoxProdotto.column(1)
    
    nomeCampoMisura = me.activecontrol.name & "Left" 		' il nome delle textBox corrisponde al nome della misura
    
    me!linea.left = Dlookup(nomeCampoMisura, "[quote_misure]", "[quote_misure]![tipoBlocco] = tipo")
    
    nomeCampoMisura = me.activecontrol.name & "Top" 	
    
    me!linea.Top= Dlookup(nomeCampoMisura, "[quote_misure]", "[quote_misure]![tipoBlocco] = tipo")
    
    nomeCampoMisura = me.activecontrol.name & "Width" 	
    
    me!linea.Width= Dlookup(nomeCampoMisura, "[quote_misure]", "[quote_misure]![tipoBlocco] = tipo")
    
    nomeCampoMisura = me.activecontrol.name & "Height" 	
    
    me!linea.Height = Dlookup(nomeCampoMisura, "[quote_misure]", "[quote_misure]![tipoBlocco] = tipo")
    
    il codice l'ho buttato giù al volo qui sul forum quindi potrebbe contenere errori di sistassi ma il concetto si dovrebbe capire
  • Re: Posizionare oggetto in base a quote contenute in una tabella

    wbd ha scritto:


    - le linee mostrano su una fotografia del mattone dove prendere la misura con il metro. Ogni misura sarà mostrata con una linea sopra alla fotografia del mattone.
    - ogni linea(misura) avrà le sue proprietà per posizionarla: inclinazione; larghezza; altezza; da margine superiore; sinistra
    Ma questo tu lo realizzi con Access? Credo di no. Hai un software specifico che simula! Boh!

    wbd ha scritto:


    - si parla di controllo dimensioni su un mattone: spessore; lunghezza; altezza; e altre...

    - lo scopo dell'applicativo è di guidare l'operatore durante il rilevamento delle dimensioni

    - le misure da rilevare sono:
    - spessore1; spessore2; spessore3; spessore4
    - lunghezza1; lunghezza2; lunghezza3; lunghezza4
    - altezza1; altezza2; altezza3; altezza4
    - altraMisura1; altraMisura2 ecc ecc
    - ecc ecc....
    Perdona le mie ignoranze in materia. Provo a esprimermi a parole mie. Io conosco solo mattoni a forma di "parallelepipedo", di cui sarei in grado di misurare solo lunghezza/altezza/spessore. Le altre misure cosa sono? Mi vuoi forse dire che i mattoni hanno forme molto strane e variabili che occorre indicare ulteriormente?

    Pare che ti sia spiegato molto bene su come funziona tutto il tuo lavoro (passo passo), ma non vedo ancora le tabelle (solo quote_misure) con i campi e le relazioni.
    Io mi sono fatto una mia idea progettuale...per esempio:
    Mattoni
    IDMattone (PK)
    Descrizione

    TipiMisurazioni
    TipoMisurazione (PK)(qui hai una lista di valori tipo: lunghezza, larghessa, spessore...tanti altri se è vero che i mattoni non sono tutti di forma parallelepipedo)

    Misurazioni
    IDMisurazione (PK)
    TipoMisurazione (FK)
    Dimensione (numerico)
    IDMattone (FK)

    Relazioni:
    Mattoni.IDMattone uno-a-molti Misurazioni.IDMattone
    TipiMisurazioni.TipoMisurazione uno-a-molti Misurazioni.TipoMisurazione

    Questo è solo un abbozzo approssimativo. Correggimi dove sbaglio. Tra l'altro non ho capito l'utilità di "inclinazione" e evidentemente di molto altro...strettamente ai fini Access…!!!???
    Sono fuori strada? Aiutami a comprendere meglio.

    P.S.: Scusa, giravo e giravo e non capivo proprio nulla. Credo che questa

    @Alex ha scritto:


    Suggerirei una Relazione 1-M ogni Record avrai le tue 5 Quote.
    sia tra le cose più sensate (se non l'unica) finora dette. Quindi ti serve una tabella LineeMisurate con i 5 campi su detti, più i campi chiave necessari.
  • Re: Posizionare oggetto in base a quote contenute in una tabella

    Le misure per il controllo qualità sul blocco sono 4 per ogni dimensione (4 angoli) poi occorre rilevare le diagonali per verificare gli scostamenti(squadratura) e altre cosette

    penso di fare tutto da access, immagine del blocco e un oggetto linea che viene riposizionato ogni volta che si clicca su una textBox

    Non ho indicato le relazioni perchè la struttura dati come l'ho pensata(probabilmente sbagliata) è piuttosto semplice, ad ogni modo le relazioni sono queste:

    Prodotti
    IdMattone (PK)
    tipoMattone

    quote_misure
    IdSetQuote (PK)
    tipoMattone (FK)
    spessore1LineSlant
    spessore1Height
    spessore1Width
    spessore1Top
    spessore1Left
    spessore2LineSlant
    spessore2Height
    spessore2Width
    spessore2Top
    spessore2Left
    spessore3LineSlant
    ....
    ....
    lunghezza1LineSlant
    lunghezza1Height
    lunghezza1Width
    lunghezza1Top
    lunghezza1Left
    lunghezza2LineSlant
    ....
    ....
    ....
    e così via per ogni misura da rilevare.

    la relazione sarebbe: (è ora che studi un po' meglio la teoria dei DB relazionali)

    quote_misure.tipoMattone uno-a-molti Prodotti.tipoMattone

    La proprietà inclinazione (LineSlant) devo settarla perchè l'inclinazione della linea è diversa per alcune misure (linea sulla foto).

    il problema (se è un problema) non è dove salvare le misure(il valore rilevato) ma stavo cercando solo il metodo più semplice per spostare e dimensionare un oggetto linea prendendo le quote da una tabella.

    volevo allegare un esempio ma non mi è permesso allegare gli .accdb (??) quindi allego 2 immagini solo per chiarire il risultato
    Allegati:
    27478_ba1645f257b6ed007b9703c936af1ee8.jpg
    27478_ba1645f257b6ed007b9703c936af1ee8.jpg

    27478_1f0547222cb781cb1a485db44dd0fc5e.jpg
    27478_1f0547222cb781cb1a485db44dd0fc5e.jpg
  • Re: Posizionare oggetto in base a quote contenute in una tabella

    wbd ha scritto:


    la relazione sarebbe: (è ora che studi un po' meglio la teoria dei DB relazionali)

    quote_misure.tipoMattone uno-a-molti Prodotti.tipoMattone
    In tabella quote_misure devi avere un campo IDMattone (FK). Poi la relazione è tutt'al più:
    Prodotti.IDMattone uno-a-molti quote_misure.IDMattone.


    A me non quadrano varie cose:
    1. Il mattone che hai mostrato si chiama (che ne so) RossoForato.
    2. I campi che vanno da [spessore1LineSlant] fino alla fine tu li compili sempre tutti?
    3. La foto che lo rappresenta sarà sempre e soltanto la stessa? E se uno fotografa lo stesso mattone RossoForato da un altra angolazione e con scala maggiore/minore (ma nessuno lo sa), le misure saranno sempre le stesse?
    4. Forse vado oltre i tuoi scopi, ma oggi vado io a misurare RossoForato. Domani va Tizio e misura altro, Dopodomani Caio misura 2 quote come le mie ma con valori diversi, più altre quote...Non ho capito lo scopo di questo database. Cioè la tabella [quote_misure] serve a dare una descrizione oggettiva o soggettiva/casuale/circostanziale?
    5. A che serve lo "spessore" di una linea? Se una linea ha uno spessore, non si fa prima a dire che hai un rettangolo o parallelogramma con 2 linee che la rappresentano?

    Mi sto perdendo anch'io appresso a te. Indubbiamente studia per bene la NORMALIZZAZIONE e la teoria dei database relazionali.
  • Re: Posizionare oggetto in base a quote contenute in una tabella

    In tabella quote_misure devi avere un campo IDMattone (FK). Poi la relazione è tutt'al più:
    Prodotti.IDMattone uno-a-molti quote_misure.IDMattone.
    si, intendevo proprio Prodotti.IDMattone uno-a-molti quote_misure.IDMattone ma ho scritto il contrario
    2. I campi che vanno da [spessore1LineSlant] fino alla fine tu li compili sempre tutti?
    forse ora ho capito dove non mi sono spiegato bene..

    in questa discussione non stiamo parlando dei dati raccolti (tramite le textBox) delle varie misure effettuate sul blocco, che verranno archiviati in una tabella dedicata, e qui non ci sono problemi.

    stiamo parlando invece di uno strumento che guidi gli operatori ad inserire i dati corretti e nella posizione corretta...

    la tabella [quote_misure] contiene soltanto le quote della linea che andrà ad indicare all'operatore come prendere esattamente la misura sul blocco.

    quindi la tabella [quote_misure] verrà compilata da me solo una volta, quando eventualmente verrà aggiunto un altro tipo di blocco alla produzione allora verrà creato un altro record con tutte le quote della linea per ogni misura da rilevare.
    3. La foto che lo rappresenta sarà sempre e soltanto la stessa? E se uno fotografa lo stesso mattone RossoForato da un altra angolazione e con scala maggiore/minore (ma nessuno lo sa), le misure saranno sempre le stesse?
    la foto del mattone cambia solo per il tipo di blocco, dove le misure vanno prese in un altro modo
    4. Forse vado oltre i tuoi scopi, ma oggi vado io a misurare RossoForato. Domani va Tizio e misura altro, Dopodomani Caio misura 2 quote come le mie ma con valori diversi, più altre quote...Non ho capito lo scopo di questo database. Cioè la tabella [quote_misure] serve a dare una descrizione oggettiva o soggettiva/casuale/circostanziale?
    lo scopo di questo applicativo è proprio quello di evitare l'inserimento di misure nel posto sbagliato... quindi quando arriva l'operatore nuovo che non conosce i prodotti avrà a disposizione la foto del blocco con indicata (con la linea rossa) la misura da prendere. La tabella [quote_misure] contiene solo le quote della linea rossa per ogni misura richiesta.
    5. A che serve lo "spessore" di una linea? Se una linea ha uno spessore, non si fa prima a dire che hai un rettangolo o parallelogramma con 2 linee che la rappresentano?
    credo di aver chiarito questa domanda rispondendo alle altre, per "spessore" si intende lo spessore del blocco, non della linea rossa che andrà a mostrare sulla foto dove prendere la misura.
    Allegati:
    27478_344a942ee592064a5253c9b982ea30c9.jpg
    27478_344a942ee592064a5253c9b982ea30c9.jpg
  • Re: Posizionare oggetto in base a quote contenute in una tabella

    Se un utente più esperto e meno tonto di me volesse intervenire, ne sarei molto lieto. Io continuo con le mie domande "cafoni - terra terra".
    1. Puoi fare 2-3 esempi di mattoni diversi, di come compileresti quella maschera/sottomaschera che hai allegato in immagine?
    2.

    wbd ha scritto:


    lo scopo di questo applicativo è proprio quello di evitare l'inserimento di misure nel posto sbagliato... quindi quando arriva l'operatore nuovo che non conosce i prodotti avrà a disposizione la foto del blocco con indicata (con la linea rossa) la misura da prendere. La tabella [quote_misure] contiene solo le quote della linea rossa per ogni misura richiesta.
    Vediamo se ho capito. La sottomaschera [quote_misure] mostra la foto del mattone con SOLO UNA LINEA ROSSA. Tale linea rossa è ciò che può bastare a rappresentare univocamente il mattone in termini di "misure" legate alle "quote" (sempre relativamente alla linea). Tale linea rossa ha una serie di "valori-parametri" (inclinazione, altezza, larghezza, da margine superiore, sinistra) che la descrivono. Giusto? Ho capito bene?
Devi accedere o registrarti per scrivere nel forum
16 risposte