Scrivere testo libero in query di casella combinata

di il
20 risposte

Scrivere testo libero in query di casella combinata

CIao a tutti,

ho un problema sul mio DB access; ho creato in una maschera, una sottomaschera (righe materiale) che mi permette l'inserimento di determinati valori, mantenendo costanti le informazioni nella maschera principale (testata). Ora ho creato una query che mi permette di visualizzare nella sottomaschera, la descrizione del materiale inserendo il codice.
Vorrei fare in modo che il campo descrizione sia editabile e svincolato dalla casella di controllo (codice).

per cui ho due scenari:

1) in sottomaschera "righe materiale" inserisco il codice del materiale (che è in anagrafica) e il sistema in automatico mi mostra la descrizione associata;
2) in sottomaschera "righe materiale" inserisco la descrizione del materiale (che non è in anagrafica).

Quello che mi serve è appunto far funzionare il punto 2); ma al momento, così come ho strutturato il DB, se inserisco solo la descrizione, il sistema va in errore ("non è associata nessuna chiave al valore inserito" o simile).

Un grazie a chi mi saprà dare una mano
Se avete bisogno di maggiori dettagli sono a completa disposizione

20 Risposte

  • Re: Scrivere testo libero in query di casella combinata

    Non è chiarissimo, ma è possibile tu non abbia realizzato una struttura MOLTI-MOLTI ma solo una 1-Molti.. di conseguenza non puoi inserire nella Tabella un nuovo elemento se questo non è RELAZIONATO lato (1)...!

    Quindi quello che ti accade credo sia corretto e dovuto ad un'errore strutturale.
  • Re: Scrivere testo libero in query di casella combinata

    Scusa la domanda...ma come posso vedere se in una query c'è una relazione "molti-a-molti"??

    Per farla breve (guardate l'immagine allegata), la situazione attuale prevede che al codice mi spunti la relativa descrizione. Quello che voglio integrare è la possibilità di inserire la descrizione svincolata dal controllo del codice (questo perchè non sempre, nel mio caso, ad una descrizione è associato un codice).
    Allegati:
    14281_e52698f5dbecdb80c6d2dd769c90e67a.jpg
    14281_e52698f5dbecdb80c6d2dd769c90e67a.jpg
  • Re: Scrivere testo libero in query di casella combinata

    Prima di parlare di relazione molti-a-molti, l'immagine non è esaustiva:
    1. Potresti descrivere dettagliatamente tutti i campi di maschera e sottomaschera?
    2. Potresti descrivere anche tutti i campi delle query che entrano in gioco?
  • Re: Scrivere testo libero in query di casella combinata

    Ecco in allegato la struttura del DB.

    Maschera = tbl_OfferteTestata
    Sottomaschera = qry_OfferteRighe
    Allegati:
    14281_460dba084c63f6c61c754e621c226814.jpg
    14281_460dba084c63f6c61c754e621c226814.jpg

    14281_4e14dd25716fac0148aad56e13adf4ef.jpg
    14281_4e14dd25716fac0148aad56e13adf4ef.jpg

    14281_542f7e7c4bc9e471fdfa0a50bcbcb856.jpg
    14281_542f7e7c4bc9e471fdfa0a50bcbcb856.jpg
  • Re: Scrivere testo libero in query di casella combinata

    Secondo me tu devi avere in tblOfferte un solo campo che fa riferimento ai Materiali, cioè il campo chiave. Tutte le informazioni strettamente legate a Materiali devono stare nella tabella Materiali. In Offerte, se vuoi digitare testualmente un Materiale, devi creare una casella combinata che abbia come primo campo il campo chiave (ma nascosto), il secondo campo quello testuale. Ciò lo si ottiene ottimizzando le proprietà:
    Numero colonne: almeno 2
    Colonna associata: 1
    Larghezza colonne: 0 cm; 5 cm

    Il campo Codice Materiale Fornitore non deve stare in Offerte.
  • Re: Scrivere testo libero in query di casella combinata

    Ok...ma poi come posso mantenere la proprietà di anagrafica? Ovvero se possiedo un materiale con il relativo codice, il sistema dovrà mostrarmi le descrizione associata se inizio a digitarne il codice.
    Diverso è il caso in cui devo inserire una descrizione di un materiale che non ha un suo codice.
    Inoltre questo tipo di operazione può verificarsi contemporaneamente, quindi posso avere un'offerta che ha dei materiali che ho in anagrafica e materiali che non lo sono
  • Re: Scrivere testo libero in query di casella combinata

    Potresti fare 3-4 esempi di materiali con codice e 3-4 esempi di materiali senza codice?
    Non solo, puoi mostrare tutti i campi di ognuno dei 6-8 materiali che ti ho chiesto di esporre?
    Vorrei avere una visione completa della situazione, poi dimmi dove nasce per te il problema.
  • Re: Scrivere testo libero in query di casella combinata

    Ciao,

    come puo vedere dall'immagine allegata, i primi 3 materiali hanno la descrizione associata (l'input nasce sempre dall'inserimento dell'utente del "Codice BT" e il sistema mostra la "Descrizione"); il quarto materiale è inserito senza codice, ma direttamente editando nella cella "Descrizione".

    Il problema nasce quando vado ad agire direttamente sul materiale senza "Codice BT", in quanto mi viene mostrato il messaggio d'errore come da immagine allegata.
    Allegati:
    14281_aef94425cec8f49afe911a9111c64af4.jpg
    14281_aef94425cec8f49afe911a9111c64af4.jpg

    14281_38b1d00372d69e9b9d6fd13ea32c6edd.jpg
    14281_38b1d00372d69e9b9d6fd13ea32c6edd.jpg
  • Re: Scrivere testo libero in query di casella combinata

    Come hai concepito tutto il tuo assetto è sbagliato. La tabella Offerte deve essere legata a Materiali solo ed esclusivamente attraverso il campo chiave. In Offerte non devi avere 2 campi in quella maniera, ma uno solo. Dalla immagine precedente vedo che la linea di join fra Materiali.CodiceBT verso Offerte.CodiceBT è semplice e non mostra la proprietà (per me importantissima) "Applica integrità referenziale" che dovresti spuntare fra le proprietà del join.
    In tabella Materiali io ci vedrei anche il campo IDFornitore che secondo me non deve apparire in Offerte...però qui non vorrei andare fuori tema.
    Però ti chiedo: come fai ad avere dei Materiali senza CodiceBT considerato che CodiceBT mi aspetto sia un campo chiave, quindi univoco, quindi non può avere valori Null e nemmeno ripetuti?
  • Re: Scrivere testo libero in query di casella combinata

    Ciao,

    cerco di riassumere brevemente quello che sarà il contesto di utilizzo.

    1) ho un gestionale SAP da cui mi ricavo l'anagrafica dei materiali e quindi i "Codici BT" con le relative "Descrizioni"; di conseguenza se ho un'offerta che è codificata a livello di materiale, il sistema mi mostra la descrizione.
    Es.: 3ECP001002P0001 = Motore di trazione EMP

    2) capita a volte, di avere delle offerte con materiali che non sono ancora stati creati su SAP, quindi non ho un "Codice BT", ne una "Descrizione" ufficiale, ma solo una descrizione indicativa del materiale da parte del fornitore.
    Es.: Motore elettrico per trazione - TipoEMP


    Ecco perchè chiedevo a voi come poter procedere, magari per questa mia richiesta la casella combinata non è la soluzione giusta, o va settata in modo particolare.
  • Re: Scrivere testo libero in query di casella combinata

    Io ho bisogno di sapere cosa rappresenta logicamente la tabella Offerte. Forse anch'io comincio a sospettare la relazione molti-a-molti. Secondo me è vero che una Offerta contiene molti Materiali, ma penso pure che un Materiale può comparire in molte Offerte.
  • Re: Scrivere testo libero in query di casella combinata

    Allora la tabella offerta rappresenta effettivamente l'offerta da parte di un fornitore.

    Nella parte di testata andrò ad inserire le informazioni relative all'offerta (riferimento offerta del fornitore, data di validità, eventuali note, etc.)

    Nella parte della sottomaschera (dove ho il problema per l'inserimento manuale della descrizione), andrò ad inserire i dettagli relativi al materiale quotato. Confermo che un'offerta può contenere 1 o più materiali e che un materiale può comparire in più offerte.

    p.s.
    Nel caso di relazioni molti-a-molti (se effettivamente fosse questa la soluzione), potreste indicarmi come si posso realizzare, basandomi su quanto finora creato.

    Grazie ancora per il vostro supporto
  • Re: Scrivere testo libero in query di casella combinata

    Io ci vedrei il seguente scenario tabelle:

    Materiali
    IDMateriale (contatore, chiave primaria)
    Descrizione
    CodiceBT
    ...altri campi...

    Fornitori
    IDFornitore (contatore, chiave primaria)
    RagioneSociale
    Indirizzo
    ...altri campi...

    Offerte
    IDOfferta (contatore, chiave primaria)
    DataOfferta
    ...altri campi...
    IDFornitore (numerico)

    DettagliOfferte
    IDDO (contatore, chiave primaria)
    IDOfferta (numerico)
    IDMateriale (numerico)

    Relazioni:
    Fornitori.IDFornitore uno-a-molti con Offerte.IDFornitore
    Materiali.IDMateriale uno-a-molti con DettagliOfferte.IDMateriale
    Offerte.IDOfferta uno-a-molti con DettagliOfferte.IDOfferta

    Quando crei le relazioni abbi cura di mettere sempre la spunta su "Applica integrità referenziale".

    Come puoi notare ho messo il campo CodiceBT in secondo piano perchè mi hai detto che alcuni materiali non hanno tale codice. Ti serve un campo IDENTIFICATIVO/UNIVOCO/EFFICIENTE per TUTTI i materiali. Un campo IDMateriale contatore è l'ideale.
  • Re: Scrivere testo libero in query di casella combinata

    Ok, ma la query come posso poi strutturarla??
Devi accedere o registrarti per scrivere nel forum
20 risposte