Utilizzare una specifica colonna di una combox per un query

di il
8 risposte

Utilizzare una specifica colonna di una combox per un query

Salve a tutti,
come da titolo ho difficoltà ad utilizzare una specifica colonna di una casella combinata.
Più precisamente: in una maschera ho varie caselle combinate tra le quali una è composta da due colonne.
Ho creato una query di accodamento che mi va a popolare una tabella e riesco correttamente a "passare" i dati delle combobox alla tabella.
L'unico problema ce l'ho quando la combobox ha due colonne. Riesco a "passare" alla tabella i valori della prima colonna della combobox, ma non riesco a scrivere la sintassi corretta per "passare" i valori della seconda colonna.
Uso lo strumento "generatore" e per una combobox ad una colonna scrivo:
Espr6: [Maschere]![IMMOBILE]![Comune]
Nella stessa combobox (che nel mio esempio si chiama "Comune"), la seconda colonna ha un dato numerico che mi serve mettere nella tabella. Ho tentato con:
Espr6: [Maschere]![IMMOBILE]![Comune].Column(1)
Espr6: [Maschere]![IMMOBILE]![Comune].Column.(1)
Espr6: [Maschere]![IMMOBILE]![Comune]!Column(1)
e mille altri modi..
Tutte con risultati disastrosi. Non conosco la sintassi corretta!
Ho trovato una soluzione, mi sembra però poco elegante: riesco correttamente popolare una textbox "di servizio" (che tengo non visibile) con il dato della seconda colonna della combobox e faccio "puntare" lì la query, non credo sia la soluzione migliore però..
Qualcuno mi sa aiutare?
Grazie in anticipo!

8 Risposte

  • Re: Utilizzare una specifica colonna di una combox per un query

    p!er ha scritto:


    L'unico problema ce l'ho quando la combobox ha due colonne. Riesco a "passare" alla tabella i valori della prima colonna della combobox, ma non riesco a scrivere la sintassi corretta per "passare" i valori della seconda colonna.
    Una combobox ha sempre un campo di "rappresentanza" che sarebbe la "Colonna associata" (generalmente la prima). Il valore della colonna associata è quello che passa da una tabella all'altra.

    p!er ha scritto:


    Nella stessa combobox (che nel mio esempio si chiama "Comune"), la seconda colonna ha un dato numerico che mi serve mettere nella tabella.
    È errato questo ragionamento.

    Ti consiglio di esporre:
    - nomi propri di tutte le tabelle che entrano in gioco
    - nomi propri di tutti i loro campi
    - nome proprio della maschera e su quale tabella poggia
    - rispiega tutto con i nomi propri specifici
  • Re: Utilizzare una specifica colonna di una combox per un query

    Grazie per la risposta.
    È errato questo ragionamento.
    Significa che non si può fare? O almeno come lo intendo io, passare i dati della seconda, o terza, o quarta ecc. colonna di una combobox ad una tabella?
    Ti consiglio di esporre:
    - nomi propri di tutte le tabelle che entrano in gioco
    - nomi propri di tutti i loro campi
    - nome proprio della maschera e su quale tabella poggia
    - rispiega tutto con i nomi propri specifici
    Ho una tabella con nome [PROPRIETA], con molteplici campi, una 20ina. Nello specifico tratto qui due campi: COMUNE e CODICE_COMUNE.
    Nella maschera INSERIMENTO_DATI, che non è collegata a nessuna tabella, ho vari oggetti, tra cui molte textbox (dove scrivo manualmente) e alcune combobox. Nella maschera infine ho inserito un pulsante etichettato "AGGIUNGI" (nome: PulsanteAggiungi).
    All'evento click del pulsante PulsanteAggiungi eseguo una query di accodamente che prende i valori di tutte le textbox e delle combobox per inserirli in tabella.
    Il mio problema riguarda la combobox chiamata ComuneImmobile (con origine dati una tabella denominata COM_CAT, di due campi: nome_comune e cod_comune).
    La combobox presenta quindi un menu a tendina con visualizzate entrambe le colonne: nome_comune e cod_comune (la visualizzazione della colonna cod_comune è superflua, essendo il codice comune un dato univoco e difficilmente interpretabile).
    Con la query di accodamento riesco a popolare correttamente il campo COMUNE della tabella PROPRIETA ("pescando" dalla prima colonna della combobox: nome_comune), ma non riesco a trovare la sintassi corretta (se esiste...) per popolare anche il campo CODICE_COMUNE della stessa tabella, "pescando" questa volta dalla seconda colonna della combobox, dove c'è il dato: cod_comune.

    EDIT: so' che potrei accontentarmi di popolare il campo COMUNE della tabella PROPRIETA e poi collegarla alla tabella COM_CAT al campo nome_comune e infine fare una query per avere una tabella PROPRIETA completa di COMUNE e CODICE_COMUNE, ma se possibile vorrei evitare questo passaggio..


    Sono stato prolisso, ma forse così mi sono spiegato meglio.
    Grazie.
  • Re: Utilizzare una specifica colonna di una combox per un query

    CodiceComune e Comune sono strettamente legati tra loro. Immagino che CodiceComune sia la "chiave primaria" di una tabella Comuni. Sia in maschera INSERIMENTO_DATI, sia in PROPRIETA è corretto selezionare solo un VALORE. La casella combinata "automaticamente" porterà con sé tutti gli altri valori-campi corrispondenti. La tabella PROPRIETA dovrà avere un solo campo CodiceComune con casella combinata. Idem in maschera PROPRIETA.
    Il discorso della Column che avresti accennato prima serve solo a scopo di VISUALIZZAZIONE ESTETICA. Per ottenere questo, in maschera aggiungi una "casella di testo" non associata ad alcun campo, in cui dentro ci scrivi questa espressione
    =[CodiceComune].Column(1)
  • Re: Utilizzare una specifica colonna di una combox per un query

    Il problema è che nella Query non viene risolta la proprietà COLUMN del controllo quindi si usa un WorkAround...
    
    Espr6: EVAL(Forms![NomeForm]![NomeCombo].Column.(NumeroColonna))
    Questo è scritto come si scrive in SQL direttamente non nel Generatore...
  • Re: Utilizzare una specifica colonna di una combox per un query

    OsvaldoLaviosa ha scritto:


    CodiceComune e Comune sono strettamente legati tra loro. Immagino che CodiceComune sia la "chiave primaria" di una tabella Comuni
    Non ti seguo. Nella tabella COM_CAT i campi nome_comune e cod_comune sono evidentemente legati tra loro. Questa tabella è quella a cui è collegata la Combobox oggetto di discussione (forse con CodiceComune intendevi dire cod_comune..)
    Nella tabella PROPRIETA i campi da popolare sono due: COMUNE e CODICE_COMUNE. Entrambi. Dovrei popolarli entrambi (non discuto sul motivo e sull'opportunità di farlo, ma dovrei popolarli entrambi, possibilmente con un unico passaggio).
    SO' bene che, essendo cod_comune e nome_comune legati tra loro, potrei aggiungere in tabella PROPRIETA uno solo dei due, ma la mia domanda era diversa: posso aggiungerli entrambi tenendo conto che i due campi sono presenti in due colonne di una combobox?
    La casella combinata "automaticamente" porterà con sé tutti gli altri valori-campi corrispondenti.
    La casella combinata porta in tabella PROPRIETA un solo valore che poi potrei collegare in fase di query alla tabella COM_CAT. Alla fine a me serve una tabella dove ci siano il campo COMUNE e anche il campo CODICE_COMUNE. Nella stessa tabella.
    La query che dovrei fare è appunto un passaggio in più e mi chiedevo se si poteva evitare.
    La tabella PROPRIETA dovrà avere un solo campo CodiceComune con casella combinata
    Qui proprio non ho capito: una combobox in una tabella?
    Per mie esigenze, la tabella PROPRIETA dovrà avere due campi: CODICE_COMUNE e COMUNE.

    Scusa ma in alcuni punti non ho chiaro cosa intendi.
    Grazie ancora.
  • Re: Utilizzare una specifica colonna di una combox per un query

    @Alex ha scritto:


    Il problema è che nella Query non viene risolta la proprietà COLUMN del controllo quindi si usa un WorkAround...
    
    Espr6: EVAL(Forms![NomeForm]![NomeCombo].Column.(NumeroColonna))
    Questo è scritto come si scrive in SQL direttamente non nel Generatore...
    grazie per la risposta. Ora provo questa soluzione.
  • Re: Utilizzare una specifica colonna di una combox per un query

    p!er ha scritto:


    Alla fine a me serve una tabella dove ci siano il campo COMUNE e anche il campo CODICE_COMUNE. Nella stessa tabella.
    La tabella Comuni avrà ovviamente entrambi i campi.

    p!er ha scritto:


    Per mie esigenze, la tabella PROPRIETA dovrà avere due campi: CODICE_COMUNE e COMUNE.
    Errato.
    In tabella PROPRIETA si può usare la casella combinata.

    Non devi confondere il "come inserire i dati" dal "come vuoi visualizzarli".
  • Re: Utilizzare una specifica colonna di una combox per un query

    Errato.
    In tabella PROPRIETA si può usare la casella combinata.
    Scusami ma quando dici "in tabella PROPRIETA si può usare la casella combinata" cosa intendi?
    In tabella si possono usare tipi di dati diversi.. ma una combobox in tabella?
    Per popolare il campo della tabella PROPRIETA posso usare una combobox e fino a qui ci siamo.

    Infine non capisco come si possana definire errate le mie esigenze.
    Devo compilare entrambi i cambi della tabella. Questo è ciò che voglio fare.
    Ancora una volta dico: so che basta/è più corretto compilare uno solo dei due campi che potrei collegare con una relazione alla tabella COD_COM, ma la mia domanda non è questa e non è questo che voglio fare.
    Grazie comunque dell'interessamente.
    Tento la strada suggerita da alex.
Devi accedere o registrarti per scrivere nel forum
8 risposte