Tabella inserimento dati

di il
17 risposte

Tabella inserimento dati

Come posso ricreare una tabella come in foto per l'immissione dei dati, usando un solo campo per le taglie?

17 Risposte

  • Re: Tabella inserimento dati

    Non puoi… ;-)

    Diciamo che quella è una queey a campi incrociati quindi readonly.

    Per fare una maschera di inserimento devi gestire tutto da codice in modalità NON ASSOCIATO e perdere la flessibilità di access…

  • Re: Tabella inserimento dati

    Un metodo un poco fantasioso : utilizza un campo Testo con cifre(caratteri) posizionali riferiti alle varie taglia (occorre rispettare una formattazione rigida).

    Esempio (i trattini sono volendo superflui) :

    “01-03-05-06-02-01”  (Sono le q.tà riferite alle taglie 48-50-52-54-56-58 della polo)

    Unisci i valori tramite concatenazione di stringe e li separi con lo split (in questo caso ti serve utilizzare un carattere separatore).

    Per potersi fare, volendo si può fare, certo devi lavorare parecchio di codice e poi voglio vedere che fatica fai per estrarre le q.tà tramite le query (si può fare con una funzione VBA ma personalmente non lo farei).

    Vedi tu …

  • Re: Tabella inserimento dati

    23/09/2023 - max.riservo ha scritto:


    Esempio (i trattini sono volendo superflui) :

    “01-03-05-06-02-01”  (Sono le q.tà riferite alle taglie 48-50-52-54-56-58 della polo)

    Unisci i valori tramite concatenazione di stringe e li separi con lo split (in questo caso ti serve utilizzare un carattere separatore).

    Ciao,

    e un Array a due dimensioni ? 

  • Re: Tabella inserimento dati

    23/09/2023 - fratac ha scritto:


    Come posso ricreare una tabella come in foto per l'immissione dei dati, usando un solo campo per le taglie?

    Una griglia di testo. Al click su conferma inserisci i valori delle celle ai rispettivi campi e record.

  • Re: Tabella inserimento dati

    23/09/2023 - By65Franco ha scritto:

    e un Array a due dimensioni ? 

    Usi un carattere come separatore di colonna e un altro carattere come separatore di riga …

    Per concatenare non cambia nulla (a parte gestire i caratteri separatori di riga e colonna),  per separare devi usare la split per ricavare le righe e poi su ogni riga riapplchi lo split per ricavare le colonne … e poi magari metti i valori in un array bidimensionale.

    Se come approccio già lo ritenevo poco pratico volendo anche gestire riga/colonna ritengo, sebbene fattibile, che sia un approccio da evitare, poi ognuno con i propri dati/DB ci fa quel che sa (o crede di sapere).

  • Re: Tabella inserimento dati

    23/09/2023 - max.riservo ha scritto:


    Se come approccio già lo ritenevo poco pratico volendo anche gestire riga/colonna ritengo, sebbene fattibile, che sia un approccio da evitare, poi ognuno con i propri dati/DB ci fa quel che sa (o crede di sapere).

    Si, concordo

  • Re: Tabella inserimento dati

    23/09/2023 - fratac ha scritto:


    Come posso ricreare una tabella come in foto per l'immissione dei dati, usando un solo campo per le taglie?

    Ciao,

    creare una tabella temporanea per come vuoi rappresentare i dati e poi quando salvi riporti tutto nella tabella effettiva ?

    Ma personalmente rivedrei la struttura delle tabelle se puoi… 

  • Re: Tabella inserimento dati

    Grazie a tutti per le risposte.

    Il database è ancora nella mia testa, quindi tutte le soluzioni sono attuabili.
    L'esigenza era quella di gestire in modo elegante le differenze di denominazione delle taglie, sia per uomo/donna tipo (50-52) o (xs-s-m), quelle internazionali, quelli facenti parte agli accessori, alle scarpe ed alle cinture.
    Ma questo problema è più semplice gestirlo cambiando semplicemente il testo delle label in fase di inserimento/visualizzazione, in base alle esigenze del momento e basato su una tabella di anagrafica delle taglie.

    A dir la verità avevo pensato ad ognuna delle soluzioni proposte, ma sono tutte troppo complicate da realizzare, sia dal punto di vista del codice della struttura, sia dal punto di vista logico e di gestione.
    Inoltre se qualcosa dovesse andare storto con qualche bug che mi va a creare dati incoerenti, sarebbe impossibile riuscire a metterci una toppa.

    A dir la verità con access 98 avevo realizzato un piccolo gestionale, ma avevo creato una tabella dove ad ogni taglia corrispondeva un campo.

    E ho l'impressione che la via più semplice e gestibile sia questa.

    Alla fine ho solo circa 14 campi da gestire. Nulla che vada ad inficiare le prestazioni di access e avrei tra le mani un database con una struttura “banale”.

    23/09/2023 - @Alex ha scritto:


    Non puoi… ;-)

    Diciamo che quella è una queey a campi incrociati quindi readonly.

    Per fare una maschera di inserimento devi gestire tutto da codice in modalità NON ASSOCIATO e perdere la flessibilità di access…

    Esatto, o meglio sarebbe una struttura tipo excel. A dir la verità avevo pensato di appoggiarmi ad excel, ma da access non potrei comunque modificare i dati del foglio, e se lo importo mi creerebbe comunque tutti i campi delle taglie. Tanto vale che lo faccio direttamente, creando una tabella con tutte le taglie, come avevo fatto nel database realizzato con access 98.
    Nella mia mente bacata, mi era balenata l'idea di fare tutto manualmente e quindi ad ogni cella di una taglia, corrispondeva l'aggiunta di un nuovo record in una tabella dove avevo solo i campi ID, id articolo, colore, taglia e quantità.
    Quindi archiviazione classica.
    Ma già è un morir di pizzichi gestire il salvataggio, nel caso di modifiche alle taglie e quantità, sarebbe diventato veramente ostico riuscire a recuperare i dati.
    Mi ero un po' gasato ripensando ai tuoi esempi di gestione spiaggia ed un altro che non ricordo, realizzati con le classi. Ma non è applicabile.
    Senza considerare che avrei una caterva di record solo per gestire un centinaio di prodotti.
    In passato ho usato un gestionale interfaccia Delphi, motore firebird che applicava una tecnica del genere.
    Tutto bello, fino a quando non bisognava fare i lanci di produzione per articoli, colore, quantità, cliente e produttore.
    Il sistema si bloccava per ore intere, inchiodando tutti i pc collegati, anche per estrapolare il lancio di un paio di articoli.

    23/09/2023 - max.riservo ha scritto:


    Un metodo un poco fantasioso : utilizza un campo Testo con cifre(caratteri) posizionali riferiti alle varie taglia (occorre rispettare una formattazione rigida).

    Esempio (i trattini sono volendo superflui) :

    “01-03-05-06-02-01”  (Sono le q.tà riferite alle taglie 48-50-52-54-56-58 della polo)

    Unisci i valori tramite concatenazione di stringe e li separi con lo split (in questo caso ti serve utilizzare un carattere separatore).

    Per potersi fare, volendo si può fare, certo devi lavorare parecchio di codice e poi voglio vedere che fatica fai per estrarre le q.tà tramite le query (si può fare con una funzione VBA ma personalmente non lo farei).

    Vedi tu …

    Avevo pensato anche a questo, addirittura appoggiandomi ad un file TXT. Ma la cosa non mi toglie tutto lo sbattimento del codice e dai problemi descritti nella risposta ad Alex.

    23/09/2023 - By65Franco ha scritto:


    Ciao,

    e un Array a due dimensioni ? 

    Pensato anche a questo. Mi sembra che è stata la seconda possibile soluzione.
    Tra parentesi sarebbe quella più logica e semplice da usare. Caricare tutto in un array e poi creare i singoli record. Ma avrei aggiunto semplicemente un ciclo al codice che avrei dovuto scrivere per gestire manualmente la creazione dei record corrispondenti ad ogni singola cella.

    23/09/2023 - sihsandrea ha scritto:


    Una griglia di testo. Al click su conferma inserisci i valori delle celle ai rispettivi campi e record.

    Per evitare l'uso di una matrice, avevo pensato anche a questo.  Preso da un attimo di euforia tra parentesi avevo pure pensato di salvarlo in un file di testo. Ora a mente fredda non capisco a che cosa mi sarebbe servito il salvataggio.

    23/09/2023 - max.riservo ha scritto:


    Se come approccio già lo ritenevo poco pratico volendo anche gestire riga/colonna ritengo, sebbene fattibile, che sia un approccio da evitare, poi ognuno con i propri dati/DB ci fa quel che sa (o crede di sapere).

    Concordo. Ma ero entrato in fissa che creare 14 campi con le rispettive taglie non era performante, elegante, inefficiente e soprattutto poco “professionale”.

    23/09/2023 - By65Franco ha scritto:


    creare una tabella temporanea per come vuoi rappresentare i dati e poi quando salvi riporti tutto nella tabella effettiva ?

    Avevo pensato pure a questo. Addirittura creando i campi temporanei, dove ad ogni taglia corrispondeva un campo, per poi salvarli nella tabella principale in modo progressivo, con solo due campi. Taglia e quantità.
    Poi ho capito che forse era oradi posare il fiasco, visto che avrei creato una tabella esattamente uguale a quella che andrò ad usare, far fare mille giri ai dati, per poi cancellarla.

    Grazie a tutti. Penso che l'unica soluzione sia creare la tabella con tutti i campi corrispondenti alle taglie.

    Per un attimo ci avevo sperato che potesse esistere una soluzione “Semplice” o magari qualche componente di access o activex che non conoscevo.

    Ma si sa. Chi visse sperando…..

  • Re: Tabella inserimento dati

    24/09/2023 - fratac ha scritto:


    Ma si sa. Chi visse sperando…..

    Beh… detto in questo modo cambia tutto … adesso ho capito cosa intendevi per la realizzazione della tabella / immissione dati con tale schema.

    Secondo me devi solo cambiare lo schema … invece di realizzarlo in orizzontale lo fai esattamente con le stesse informazioni in Verticale e tutto si semplifica 

    A questo punto avrai un articolo con una scheda (in verticale) più lunga di una altro articolo… questo poco importa… potrai tenerlo ordinato per taglia e potrai sempre averlo su almeno 3 colonne  o tutte le colonne che vuoi per taglie Uomo / Donna / Bambino / etc…

    Prova a pensarlo sviluppato in verticale anzichè in orizzontale…. esempio:


    In questo caso sono le righe che variano (avrai una scheda con più o meno taglie)…. e in orizzontale sarà sempre semplice implementarlo anche in futuro aggiungendo eventuali nuove colonne per nuove informazioni.

  • Re: Tabella inserimento dati

    24/09/2023 - By65Franco ha scritto:


    In questo caso sono le righe che variano (avrai una scheda con più o meno taglie)…. e in orizzontale sarà sempre semplice implementarlo anche in futuro aggiungendo eventuali nuove colonne per nuove informazioni.

    Avevo pensato anche a questo.
    A parte il fatto che, mentalmente, mi riesce male pensare al contrario, il problema poi sorgerebbe per le varianti colore, che mi diventerebbero dei campi. Ed in quel caso potrebbero essere decine e decine per ogni articolo.
    Nello schema che ho postato ho erroneamente immesso il tipo di articolo.

    Nella realtà l'articolo sarebbe l'intestazione della tabella e nella riga delle quantità dovrebbero essere presenti le varainti colore.

  • Re: Tabella inserimento dati

    24/09/2023 - fratac ha scritto:


    il problema poi sorgerebbe per le varianti colore, che mi diventerebbero dei campi.

    Direi di no Fratac….

    da una parte hai la Tabella articoli con  relazione Uno-Molti con una Tabella Colori 

    a questo punto per ogni colore di quel articolo avrai una relazione Uno-Molti con la Tabella Taglie …. che sarà organizzata per Marchio (visto che solitamente secondo la marca le taglie non corrispondono di solito)

    A questo punto potresti immaginare di avere :

    • Tabella MARCA
      • Relazionata alla Tabella TAGLIE (ogni Marca può avere la sua tabella di Taglie)
    • Tabella COLORI
      • relazionata alla tabella MARCA 
        • ogni colore che appartiene ad una Marca specifica ha le sue Taglie
    • Tabella ARTICOLI
      • Relazionata alla Tabella COLORI che a sua volta è relazionata con la Marca, alle TAGLIE

    Pertanto la quantità dell'articolo sarà data dalla somma delle quantità assegnate per Marca/Colori/Taglie

    ….più o meno una cosa di questo tipo ?  

    che dici?

  • Re: Tabella inserimento dati

    24/09/2023 - By65Franco ha scritto:


    24/09/2023 - fratac ha scritto:


    il problema poi sorgerebbe per le varianti colore, che mi diventerebbero dei campi.

    Direi di no Fratac….

    da una parte hai la Tabella articoli con  relazione Uno-Molti con una Tabella Colori 

    a questo punto per ogni colore di quel articolo avrai una relazione Uno-Molti con la Tabella Taglie …. che sarà organizzata per Marchio (visto che solitamente secondo la marca le taglie non corrispondono di solito)

    A questo punto potresti immaginare di avere :

    • Tabella MARCA
      • Relazionata alla Tabella TAGLIE (ogni Marca può avere la sua tabella di Taglie)
    • Tabella COLORI
      • relazionata alla tabella MARCA 
        • ogni colore che appartiene ad una Marca specifica ha le sue Taglie
    • Tabella ARTICOLI
      • Relazionata alla Tabella COLORI che a sua volta è relazionata con la Marca, alle TAGLIE

    Pertanto la quantità dell'articolo sarà data dalla somma delle quantità assegnate per Marca/Colori/Taglie

    ….più o meno una cosa di questo tipo ?  

    che dici?

    il problema non sarebbe strutturale. Il problema scaturisce tutto dalla visualizzazione per l'operatore in fase di inserimento. Non potrei comunque strutturare a livello visivo una tabella simile a quella che viene comunemente usata attualmente e simile a quella di un foglio di calcolo di excel.

  • Re: Tabella inserimento dati

    24/09/2023 - fratac ha scritto:


    il problema non sarebbe strutturale. Il problema scaturisce tutto dalla visualizzazione per l'operatore in fase di inserimento. Non potrei comunque strutturare a livello visivo una tabella simile a quella che viene comunemente usata attualmente e simile a quella di un foglio di calcolo di excel.

    Si Fratac, lo puoi fare 

    Richiede un pò di pazienza e tempo.

    sulla base delle colonne e delle righe di cui hai bisogno disponi delle textBox nella Form… poniamo tu abbia bisogno di 5 colonne e 10 righe :

         
         
         
         
         
         
         
         
         
         

    (magari inserisci delle colonne e delle righe in più per far fronte ad ulteriori informazioni che con il passar del tempo potresti aver bisogno)

    Una volta disposte le textBox, creando uno scenario simile ad un foglio excel, sia in alto che a sinistra metterai delle Label che serviranno per intestare le colonne e le righe.
    Ora devi popolarle, con i dati del tuo recordset, le textBox e lo farai del tutto dinamicamente. 
    Stabilisci delle semplici e poche regole, per esempio sfruttando non il nome delle TextBox ma la Tag che imposterai per ognuna e che rappresenteranno le coordinate di queste cosidette “celle”.

    (più facile a farlo che a spiegarlo ;-) …)

    Quindi:

    • per esempio puoi impostare nei Tag (come in excel) che la prima Tag conterrà il valore $A$1 … quindi indica la cella della prima colonna nella prima riga…. e così via dicendo per tutte le altre. 
    • ogni qualvolta che richiami la form con un nuovo recordset, imposti le textBox a Enabled = false e via via metterai il True abilitando solo quelle che occorro.
      • creare una function o una sub per ciclare tutti i controlli con il Tag, per esempio, che iniziano con il carattere $ e disabiliti tali controlli.
      • dal recordset avrai delle fields che dovranno popolare queste celle
        • decidere quale colonna riempire con talune fields e scorri verso il basso con un contatore per individuare la riga della colonna dove riportare i dati. E così via per tutte le altre Fields
        • ogni volta che sposti il valore di una fields in una cella , imposti Enabled = True per renderla editabile
      • si potrebbe, per semplificare il codice, impostare le fields come origine dati della textBox
        • in questo caso creare una sub per ripulire le text box eliminando l'origine dati
          • ciclare tutti i controlli con la Tag che inizia con il carattere $, si ripulisce la proprietà origine dati e si imposta la proprietà Enabled = false
    • Se hai impostato nelle varie celle l'origine dati della field del tuo recordset, lo stesso risulterà già aggiornato nel momento che lo modifichi…
      •  altrimenti, se hai impostato il valore della Field del recordset nelle varie TexbBox come detto sopra,  con le coordinate delle celle, i valori impostati nei Tag, o nei Tag stessi o in un array salverai le coordinate e il nome delle Fields… in questo modo quando devi aggiornare le Fields del Recordset , dovrai solo ciclare i Tag che hanno come carattere iniziale il $ e con uno splip che userà il carattere $ come separatore, ricavi il nome della Field da aggiornare nel recordset.

    Sono ipotesi da verificare… non so se mi sono spiegato bene, ripeto… più facile a farsi che a spiegarlo.  ;-)

    Il lavoro è tedioso in fase di costruzione, ma una volta impostate tutte le textBox e magari ne metti il doppio rispetto a quelle che in fase progettuale pensi che occorrono, tutto il resto risulterà veloce e dinamico, così come imposti una origine dati in un foglio excel.

    Insomma, una cosa di questo tipo… 

  • Re: Tabella inserimento dati

    24/09/2023 - By65Franco ha scritto:


    Il lavoro è tedioso in fase di costruzione, ma una volta impostate tutte le textBox e magari ne metti il doppio rispetto a quelle che in fase progettuale pensi che occorrono, tutto il resto risulterà veloce e dinamico, così come imposti una origine dati in un foglio excel.

    Infatti è più o meno a quello a cui si riferiva alex nella prima risposta.
    Però poi rimane il problema che dovrò gestire tutto manualmente e che ogni text box corrisponde ad un nuovo record ma che possiede lo stesso id per la variante colore e lo stesso id per l'articolo. Inizia ad essere un lavoro un po' troppo confusionario. E che sicuramente potrebbe generare record non correlati tra di loro, id non corrispondenti e vari bug.

    Quindi non è tanto il metodo usato, ma il lavoro (inutile) per fare una cosa (inutile) che si ottiene con pochi campi e che gestirebbe tutto access.

    Comunque quella di usare i tag, (a cui non avevo pensato tra le varie soluzioni)  penso che la terrò in considerazione per la visualizzazione delle label delle taglie.

    La mia attuale idea è quella di avere tutti i campi necessari, impostare la legenda delle taglie a livello di anagrafica articolo, per poi di volta in volta visualizzare il nome delle taglie in base alla scelta presente nell'anagrafica dell'articolo, estratte da una tabella anagrafica delle taglie.
    Quindi impostando i tag per singola textbox, non farò altro che sostituire il valore di default con la taglia corrispondente in tutte le text che possiedono un determinato tag.

Devi accedere o registrarti per scrivere nel forum
17 risposte