"errore" combobx in sottomaschera

di il
16 risposte

"errore" combobx in sottomaschera

Ciao a tutti!,

questa volta ho un problema con la casella in combinata nelle sottomaschere. mi spiego: ho creato delle maschere nelle quali ho inserito una combobx, e qui tutto funziona (vedo i valori da scegliere, mi aggiorna i campi dopo la scelta, possono aggiungere o modificare dati ecc).
se però metto queste maschere all'interno di sottomaschere (al fine di avere una finestra unica da cui scelgo le diverse opzioni del programma) appena avvio la "maschera principale" mi compare una finestra pop-up che chiede i valori che dovrei inserire nelle combobx, come se non trovasse queste ultime. e questo accade per tutte le combobx in sottomaschera.

mi sapreste spiegare il perchè/dove sbaglio?

grazie della risposta

16 Risposte

  • Re: "errore" combobx in sottomaschera

    La descrizione mi appare troppo generica. Bisognerebbe capire se ha senso quello che hai fatto nell'intero contesto. Descrivi tutto dettagliatamente:
    - nomi maschere principali
    - nomi sottomaschere
    - nomi campi e quali sono combobox
  • Re: "errore" combobx in sottomaschera

    Ok. allora con la maggior parte di esse ho risolto ponendo la combobox nella maschera principale. il problema ora resta con questi:
    >Tabella: articoli
    -BARCODE (testo, indicizzato, duplicati non ammessi)
    -articolo(testo)
    -quantità
    -fornitori

    >Maschera: articoli
    -barcode (combobox, origine dati: nessuna; origine riga: Tab.articoli, 1 colonna, 3cm, dopo aggiornamento me.requery)
    -articolo
    -quantità
    -fornitori
    >>Maschera: origine dati: query "interna", barcode al primo posto >> criteri: combobox_barcode.

    questa maschera da sola funziona: vedo i valori da poter scegliere nella combobx, dopo la scelta gli altri campi si aggiornano a dovere.


    poi ho la maschera "AVVIO" nella quale viene raccolto tutto il programma: le ricerche sugli articoli, sugli ordini sui fornitori ecc.... ma questaè solo una maschera vuota nella quale ho inserito diverse pagine e, in una di queste, la sottomaschera articoli.
    da qui, la maschera "articoli" non funziona più: quando faccio partire la maschera "AVVIO" mi compare un popo-up chiedendomi il valore da inserire nella combobox. lo stesso se ci scrivo dentro qualcosa e faccio invio sulla combobox stessa, ovvero dopo l'aggiornamento della medesima mi ricompare un messaggio popo-up che mi chiedee che valore inserire.

    RELAZIONI:
    la tabella articoli è in relazione 1-a-molti con:

    >Tabella: ordini
    -id_ordine
    -barcode
    -fornitore
    -quantità_ordinata
    -spesa totale
    -data ordine

    le altre tabelle non sono relazionate a questa. non ci sono query
  • Re: "errore" combobx in sottomaschera

    denial ha scritto:


    >Tabella: articoli
    -BARCODE (testo, indicizzato, duplicati non ammessi)
    -articolo(testo)
    -quantità
    -fornitori

    >Maschera: articoli
    -barcode (combobox, origine dati: nessuna; origine riga: Tab.articoli, 1 colonna, 3cm, dopo aggiornamento me.requery)
    -articolo
    -quantità
    -fornitori
    Non capisco perchè nella maschera [barcode] è una casella combinata.
    Il campo [quantità] non va messo nella tabella Articoli.

    Vedo il campo [fornitore] (mi raccomando scrivi al plurale i nome-tabella e al singolare nome-campo) sia in Articoli, sia in Ordini. Potresti chiarire questo aspetto?
  • Re: "errore" combobx in sottomaschera

    Il campo [quantità] è in tab.articoli perchè fa riferimento alla quantità di quell'articolo presente in magazzino. nella tab.ordini è presente il campo [quantità ordinata].

    per quanto riguarda [barcode] come casella combinata....sei stato di nuovo un'ispirazione: non serviva! non avevo pensato che bastava una casella di testo con me.requery; stavo procendendo in modo stereotipato.

    tab.Ordini: condivide molte voci con tab.articoli --> fornitori è presente per sapere a chi ho fatto l'ordine. appena inserito il barcode mi si compilano in automatico i valori comuni con tab.articoli.
    ne voglio tenere traccia in una tabella per poi registrare gli ordini completi:
    1 ordine --> molti id_ordine
    1 id_ordine --> 1 articolo

    Ad ogni modo, perchè nella sottomaschera mi veniva fuori quell'errore?
  • Re: "errore" combobx in sottomaschera

    denial ha scritto:


    il campo [quantità] è in tab.articoli perchè fa riferimento alla quantità di quell'articolo presente in magazzino. nella tab.ordini è presente il campo [quantità ordinata].
    Errato. Una tabella che si chiama Articoli, deve avere solo campi strettamente legati al nome della tabella stessa. Quantità non lo è.
    Io ti ho seguito in un precedente thread (ma non devi dare per scontato che tutti gli utenti lo sappiano) e la struttura che avevi messo in piedi non mi convinceva. Ecco che i nodi vengono al pettine.

    denial ha scritto:


    Ad ogni modo, perchè nella sottomaschera mi veniva fuori quell'errore?
    I problemi sono a monte, a livello di struttura tabelle. La domanda non ha senso di essere posta e la sottomaschera da errore.

    Dai una descrizione completa di tutto: nomi tabelle, nomi campo, relazioni.
    Descrivi pure un paio di esempi tipici che avvengono nella tua azienda per cercare di incanalare correttamente tutti i campi e quello che vorresti fare. Procedi per piccoli passi.
    Un ulteriore consiglio che ti dò. Prova a dare un'occhiata all'intero database di esempio della Northwind. Mi sembra pertinente al tuo problema.
  • Re: "errore" combobx in sottomaschera

    PS: stesso problema anche con la casella di testo. però almeno ora ho capito il perchè: non è associata a nulla.

    il problema mio è questo: [barcode] è univoco.
    il database rappresenta il magazzino: magazzino vuoto = database vuoto.
    arriva la prima consegna di merci e la registro nel database.
    arriva la seconda consegna di merci e devo registrare alcuni articoli nuovi nel database (barcode diverso dai precedenti, ergo nessun problema) ma altri saranno già presenti e ne dovrò solo cambiare la quantità presente.

    se io associo la combobox/casella-testo alla tab.Articoli mi viene segnalato errore, perchè tento di inserire un codebar che esiste già.
    quindi ho fatto due maschere: una per prodotti nuovi, una per prodotti esistenti.
    la casella di testo per BARCODE in prodotti esistenti come origine controllo non ha niente, così ci scrivo il barcode, mi compila tutti i campi dell'articolo e io ne modifico la quantità (con codice VB solo sul campo quantità).

    però questo trucchetto nella sottomaschera non funziona.
  • Re: "errore" combobx in sottomaschera

    denial ha scritto:


    il problema mio è questo: [barcode] è univoco.
    OK

    denial ha scritto:


    il database rappresenta il magazzino: magazzino vuoto = database vuoto.
    OK: ovvio.

    denial ha scritto:


    arriva la prima consegna di merci e la registro nel database.
    arriva la seconda consegna di merci e devo registrare...
    Hai parlato di una tabella Ordini o di un qualcosa che deve contabilizzare gli ordini che non hai descritto più in quest'ultimo post. Una tabella Ordini sarebbe importantissima nel tuo database.
    Ora non è chiaro se vuoi solo contabilizzare i movimenti di magazzino o contabilizzare "per bene" anche gli Ordini. Un ordine prevede anche un Cliente che lo faccia. Quindi una tabella Clienti sarebbe opportuna...il discorso tende ad allargarsi...ma

    denial ha scritto:


    se io associo la combobox/casella-testo alla tab.Articoli mi viene segnalato errore, perchè tento di inserire un codebar che esiste già.
    quindi ho fatto due maschere: una per prodotti nuovi, una per prodotti esistenti.
    questo è un giocattolo che avresti inventato tu...ma non puoi gestire le cose così in eterno. È vero che all'inizio un database è "acerbo", ossia con pochi dati e quando vuoi inserire dati, nella maniera come la stai raccontando tu, cioè partendo dagli ordini, viene naturale saltare alcuni passaggi perchè si innescherebbe l'idea "vabbè quell'articolo già lo so che non c'è, vado direttamente a inserirlo in Articoli", saltando il passaggio "in linea generale"...ma non va fatto in quella maniera ugualmente.
    Per me devi avere una STRUTTURA CHIARA prima, poi passi ai giochi di caselle combinate ecc...
    Le Quantità dovrebbero stare in una tabella DettagliOrdini, figlia di Ordini. Già ma gli Ordini determinano solo uno Scarico prodotti. Come vuoi contabilizzare il Carico?
    La "Quantità Magazzino" deve essere frutto di una query di calcolo che valuti bene tutti i Carico e Scarico, quindi non può essere un campo di tabella (qualsiasi essa sia).
    Scusa, sto andando forse anche a ruota libera, ma per me ci sono troppi punti fuori strada.
  • Re: "errore" combobx in sottomaschera

    Ok forse è meglio che spieghi tutto dalla base.

    l'idea è quella di un negozio che ancora non è aperto. gli ordini per tale negozio vengono fatti online (al di fuori del database). quello che voglio creare è un inventario del magazzino, nel quale ogni prodotto viene univocamente registrato tramite barcode reader.
    io non conosco il mondo access (ne dei database in generale), per cui in realtà sto procedendo per prove ed errori [per questo uso i "trucchetti" che ho esposto sopra].
    tornando al database, vorrei poter fare questo:
    > registrare gli articoli che arrivano e sapere quanti ce ne sono in magazzino;
    > poter fare ricerche sugli articoli presenti:
    - in base al barcode;
    - in base al fornitore;
    - in base alla categoria;
    > registrare gli ordini che io faccio al fornitore online (data ordinazione, cosa ho ordinato, e in quale quantità).
    > un terminale di cassa che semplicemente detragga la quantità di un articolo venduto dalla quantità disponibile in magazzino e calcoli il totale da pagare.

    fin'ora, grazie anche e sopprattutto agli aiuti ricevuti sul forum, credevo di aver raggiunto un buon risultato, ovvero un database con una buona struttura. perchè dici che quantità non va bene in articoli? è una proprietà specifica per ogni articolo, devo metterla in una tabella a sè?

    EDIT: scusa, ho riletto ora la tua risp. il problema di tabelle ordini/dettaglio ordini, in realtà, è che gli ordini sono una cosa a parte. ovvero, gli ordini vengono fatti online, per cui questa parte a me interessa più come registro spese che altro, in realtà non so neanche io se metterla o meno. cioè sono già incasinato così non vorrei, per il momento mettere troppa carne al fuoco.
  • Re: "errore" combobx in sottomaschera

    Secondo una logica di progettazione di tutti i database (in qualsiasi applicazione, quindi non solo in Access), le tabelle devono solo essere contenitori di dati "i più essenziali e rozzi possibile". Questo vuol dire che nei campi delle tabelle ci vanno a finire SOLO i dati DIGITATI dall'utente. Un campo QuantitàMagazzino non è e non deve essere digitato dall'utente, ma è frutto di un CALCOLO proveniente da altri campi. I campi di calcolo li devi trovare soltanto nelle query.
    Un Ordine di Carico prodotti avrà un Fornitore legato a un OrdineEntrata. In un OrdineEntrata ci saranno i suoi Dettagli. In ogni dettaglio trovi scritto ogni Prodotto con la Quantità (questa sarà la quantità in entrata).
    Un Ordine di Scarico prodotti avrà un Cliente legato a un OrdineUscita. In un OrdineUscita ci saranno i suoi Dettagli. In ogni dettaglio trovi scritto ogni Prodotto con la Quantità (questa sarà la quantità in uscita).
    Una attenta ricostruzione (query) dei corretti record che dovrebbero riportare agli stessi IDProdotto, dovrà permetterti di sapere la QuantitàMagazzino di ogni Prodotto.

    denial ha scritto:


    tornando al database, vorrei poter fare questo:
    > registrare gli articoli che arrivano e sapere quanti ce ne sono in magazzino;
    > poter fare ricerche sugli articoli presenti:
    - in base al barcode;
    - in base al fornitore;
    - in base alla categoria;
    > registrare gli ordini che io faccio al fornitore online (data ordinazione, cosa ho ordinato, e in quale quantità).
    > un terminale di cassa che semplicemente detragga la quantità di un articolo venduto dalla quantità disponibile in magazzino e calcoli il totale da pagare.
    Queste sono tutte richieste sacrosante da fare a un database, ma prima occorre una corretta strutturazione tabelle. Poi ci metti dentro i dati coerentemente. Poi gli fai tutte le domande (query) che vuoi.
  • Re: "errore" combobx in sottomaschera

    Mmmmh. forse sto cominciando a capire.

    io avevo impostato le tabelle in modo che la Tab.Articoli rappresentasse, in pratica, il contenuto del magazzino, ovvero la merce presente schedata secondo codice a barre, la quantità ecc...
    a queste avevo aggiunto tabelle collaterali per altre funzioni tipo ricerca a partire da fornitore, in base alla categoria ecc. il processo era "top-down" nel senso che partivo dalla mia visione di magazzino come insieme e da questo svisceravo le info che mi interessavano. in pratica un foglio excel con in più le relazioni.

    quello che mi stai suggerendo di fare, se ho capito, è l'inverso, un punto di vista "bottom-up", che parte cioè dal fondo e arriva in superficie. il magazzino, quindi, non è più l'insieme dei prodotti contenuti in una stanza (ovvero in una tabella) ma diventa il risultato della relazione tra MERCE_IN_ENTRATA e MERCE_IN_USCITA. dunque dalle "microinformazioni" nelle tabelle, correlate tra loro nasce un tutto che io chiamo magazzino.

    mi sto avvicinando al modo di pensare ai database o sono ancora lontano?
  • Re: "errore" combobx in sottomaschera

    Non lo so. Io ho provato a elaborare il seguente scenario tabelle:

    Soggetti (potrebbero essere sia Clienti che Fornitori)
    IDSoggetto (chiave primaria)
    NomeSoggetto
    Indirizzo
    ...altri campi...

    Ordini
    IDOrdine (chiave primaria)
    DataOrdine
    IDSoggetto
    EU (questo campo deve specificare se l'Ordine è in Entrata o Uscita)

    DettagliOrdini
    IDDettaglio (chiave primaria)
    IDProdotto
    Quantità
    PrezzoUnitario
    IDOrdine

    Prodotti
    BarCode (chiave primaria)
    Prodotto
    Categoria

    Categoria
    Categoria (testo, chiave primaria)

    Relazioni:
    Soggetti.IDSoggetto uno-a-molti con Ordini.IDSoggetto
    Ordini.IDOrdine uno-a-molti con DettagliOrdini.IDOrdine
    Categorie.Categoria uno-a-molti con Prodotti.Categoria
    Prodotti.IDProdotto uno-a-molti con DettagliOrdini.IDProdotto
  • Re: "errore" combobx in sottomaschera

    Mmmh sono confuso. ora sono più confuso di prima:

    1) perchè una tabella clienti/fornitori se non tengo traccia dei clienti (è un negozio al dettaglio, non registro dati clienti)?
    2) a cosa serve il campo E/U?
    3) il campo [quantità] inserito in dettagli ordini fa riferimento alla quantità ordinata, ma io ancora non so la quantità che ho in magazzino;
    4) ho ancora il problema del registro della merce in arrivo: come prima, se un articolo è già presente in magazzino, e devo cambiarne la quantità (che non so dove sia ora) non posso, devo avere un'altra maschera
  • Re: "errore" combobx in sottomaschera

    denial ha scritto:


    1) perchè una tabella clienti/fornitori se non tengo traccia dei clienti (è un negozio al dettaglio, non registro dati clienti)?
    Forse non ti piace nominare le tabelle Ordini e DettagliOrdini. Possiamo rinominarle Movimenti e DettagliMovimenti. Quando VENDI (ossia scarichi il magazzino), puoi sempre inventare un Soggetto fantasma che si chiama "0" oppure "Nessuno".

    denial ha scritto:


    2) a cosa serve il campo E/U?
    L'ho già detto prima. Forse con la nuova denominazione dovrebbe apparire più chiaro. In questo campo puoi scegliere fra 2 soli valori "Entrata" o "Carico", "Uscita" o "Scarico".

    denial ha scritto:


    3) il campo [quantità] inserito in dettagli ordini fa riferimento alla quantità ordinata, ma io ancora non so la quantità che ho in magazzino;
    Anche in questo caso puoi inventare un Ordine o Movimento fantasma senza un Soggetto.

    denial ha scritto:


    4) ho ancora il problema del registro della merce in arrivo: come prima, se un articolo è già presente in magazzino, e devo cambiarne la quantità (che non so dove sia ora) non posso, devo avere un'altra maschera
    Questo è un meccanismo un po' complesso da gestire opportunamente.

    Se intervenisse anche un altro utente, magari più esperto di me, ne sarei grato. Mi piacerebbe sapere se ho dato un suggerimento valido.
    Da parte mia osservo una discussione scarsa di nozioni base e troppo ricca di richieste che sarebbe meglio spezzettare in più thread.
    Ti consiglio di:
    1. Leggere attentamente il forum...mi sembra tu sia stato onesto nel non voler richiedere la cosiddetta "pappa pronta" e cercare di capire da solo...ma...
    2. Leggere un manuale di base. Il forum propone questi
    https://www.iprogrammatori.it/forum-programmazione/access/libri-access-consigliati-per-principianti-esperti-t13142.html
    Io ho iniziato da "McGraw-Hill: Computer no problem - Access (versione che hai tu)".
    3. La risposta al tuo punto 4) si espliciterebbe con questo mio documento
    http://www.divshare.com/download/24207511-a9
    ma occorre che tu abbia le idee chiare a monte.
  • Re: "errore" combobx in sottomaschera

    Ti ringrazio per la pazienza. quindi le tabelle Ordini e dettaglio ordini, in realtà registrano sia la merce in entrata, che la merce venduta? perchè io le consideravo solo come registro di ordinazioni fatte.

    infatti, mentre attendevo un risposta ho creato anche la tabella "arrivo merce", collegata molti-a-molti con Tab.Prodotti tramite la tabella intermedia "dettaglio arrivo merce" --> contene il campo [QUANTITà IN ARRIVO]

    e per il sistema "cassa" ho creato la tabella "scontrino" collegata molti-a-molti con la Tab.Prodotti, tramite tabella intermedia "dettagli scontrino" --> contiene il campo [QUANTITà VENDUTA].

    così da poter avere una maschera da usare in cassa e avere la possibilità di crare una query per calcolare la [QUANTITà DISPONIBILE].

    è un processo troppo macchinoso e inutile o può funzionare? le tabelle ordini/dettaglio ordini mi srvono comunque per registrare gli ordini fatti ai fornitori e calcolare la spesa effettuata di volta in volta.

    Per quanto riguarda il problema della doppia maschera, non è in realtà un vero problema; ovvero: io ho risolto con un comand button che apre la maschera basata su tab.Prodotti e registro il nuovo prodotto, poi chiudo la maschera e procedo.
    il vero problema, che mi interessa risolvere e capire, è se la struttura di base è corretta o no. poi per i "giochi di maschere" [quote] mi accontento, per il momento, e mi documento meglio.
Devi accedere o registrarti per scrivere nel forum
16 risposte