Select con nome campo dentro una variabile

di il
15 risposte

Select con nome campo dentro una variabile

Ciao a tutti, torno alla carica con un altro problema del mio Access 2003 con quale sto cercando di risolvere dei problemi di statistica
Ora, dopo il vostro aiuto per un problema di aggiornamento campi in una maschera, mi ritrovo con questo problema.
Nella solita maschera "Menù Statistica" ho una casella combinata che ho chiamato "CasellaCombinata01x2" dove è possibile selezionare un valore alfanumerico tra i 6 disponibili nella "Tabella Campi", diciamo che scelgo "Pippo"
Quindi ho una seconda casella combinata "CasellaCombinataA01" dove vorrei che apparissero tutti i valori contenuti nella query "RisorseWeb" nella colonna "Pippo"
Ho scritto
SELECT [RisorseWeb]."Forms![Menù Statistica]!CasellaCombinata01x2"
FROM [RisorseWeb]
GROUP BY [RisorseWeb]."Forms![Menù Statistica]!CasellaCombinata01x2"
ORDER BY [RisorseWeb]."Forms![Menù Statistica]!CasellaCombinata01x2";
Ma ottengo solo una segnalazione generica di errore di punteggiatura. Ho provato a cambiare in vari modi la punteggiatura, ma nulla
Grazie per l'aiuto

15 Risposte

  • Re: Select con nome campo dentro una variabile

    [RisorseWeb]."Forms![Menù Statistica]!CasellaCombinata01x2"
    questa sintassi è errata.
    Nella query ti manca l'indicazione WHERE...adesso mi sfugge la sintassi completa e appropriata in SQL, ma in visualizzazione struttura query ti basta scrivere dentro Criterio, in corrispondenza del campo appropriato
    [Forms]![Menù Statistica]![CasellaCombinata01x2]
    oppure
    [Maschere]![Menù Statistica]![CasellaCombinata01x2]

    Per SELECT e tutte le altre dichiarazioni di campo bisogna scrivere
    [Nome Tabella].[Nome campo]
  • Re: Select con nome campo dentro una variabile

    redkaa ha scritto:


    Ho scritto
    SELECT [RisorseWeb]."Forms![Menù Statistica]!CasellaCombinata01x2"
    ...
    Ma ottengo solo una segnalazione generica di errore di punteggiatura. Ho provato a cambiare in vari modi la punteggiatura, ma nulla
    La punteggiatura è l'ultimo dei problemi, in realtà. E' tutta la query che non può essere scritta così.

    redkaa ha scritto:


    ...
    Nella solita maschera "Menù Statistica" ho una casella combinata che ho chiamato "CasellaCombinata01x2" dove è possibile selezionare un valore alfanumerico tra i 6 disponibili nella "Tabella Campi", diciamo che scelgo "Pippo"
    Quindi ho una seconda casella combinata "CasellaCombinataA01" dove vorrei che apparissero tutti i valori contenuti nella query "RisorseWeb" nella colonna "Pippo"
    Devi modificare tramite codice il RowSource di CasellaCombinataA01.
    Una cosa del tipo
    Dim strSQL
    strSQL = "SELECT " & Me.CasellaCombinata01x2 & " FROM nometabellaoquery;"
    Me!CasellaCombinataA01.RowSource = strSQL
    Me!CasellaCombinataA01.Requery
    Devi individuare l'evento (o gli eventi) in cui scrivere quel codice.
    Prima di fare il tutto guarda bene queste tre proprietà


  • Re: Select con nome campo dentro una variabile

    Grazie per le risposte, se risolvo questa questione ho trovato la soluzione per automatizzare il 90% delle ricerche sul mio DB.
    Ho scritto "se risolvo" perchè essendo dotato di testa dura ho difficoltà a capire come mettere in pratica la soluzione rowsource
    Mi spiego meglio con un esempio.
    Immaginiamo un DB che registri degli eventi. Ogni record di evento ha i dati del protagonista e la città, provincia, regione, nazione, durata, data, esito e altri dati dell'evento.
    Quindi nella maschera "statistica" ho la casella combo "CasellaCombinata01x2" dove c'è la lista città, provincia, regione, nazione, durata, data, esito, altro presente nella tabella "tabella campi"
    Se nella combo "CasellaCombinata01x2" seleziono regione nella combo "CasellaCombinataA01" vorrei apparisse la lista delle regioni memorizzata nella Query "Regioni Query".
    Se nella combo "CasellaCombinata01x2" seleziono durata nella combo "CasellaCombinataA01" vorrei apparisse la lista di tutte le durate previste memorizzata nella Query "Durate Query".
    Poi ovviamente dalla combo "CasellaCombinataA01" scelgo il valore desiderato
    Grazie
  • Re: Select con nome campo dentro una variabile

    redkaa ha scritto:


    ...
    Se nella combo "CasellaCombinata01x2" seleziono regione nella combo "CasellaCombinataA01" vorrei apparisse la lista delle regioni memorizzata nella Query "Regioni Query".
    Se nella combo "CasellaCombinata01x2" seleziono durata nella combo "CasellaCombinataA01" vorrei apparisse la lista di tutte le durate previste memorizzata nella Query "Durate Query".
    ...
    Oh... spunta un'altra informazione che prima ci era stata celata: la selezione di CasellaCombinata01x2 influisce sul campo da selezionare ma anche sulla query. Ti servono tutte quelle query? Secondo me si potrebbe discutere anche su questo.
    O forse prima ancora si dovrebbe discutere proprio di questo. Magari è tutto "impostato male" e le domande di operazioni un po' fuori dall'ordinario sono dovute a questo.
    Se comunque riesci a trovare il modo di stabilire, in base al campo selezionato, qual è la query dalla quale prendere l'informazione, basta cambiare questa riga.
    strSQL = "SELECT " & Me.CasellaCombinata01x2 & " FROM nometabellaoquery;"
    Vedo però che le query non riportano nel nome esattamente il nome del campo: al campo "Regione" corrisponde la "Regioni query", non "Regione Query" (pessima scelta l'uso degli spazi nel nome degli oggetti)
    Altrimenti potevi anche fare una cosa di questo tipo
    strSQL = "SELECT " & Me.CasellaCombinata01x2 & " FROM [" & Me.CasellaCombinata01x2 & " Query];"
    Le strade per arrivarci comunque ci sono, più di una: dall'uso di Select Case in base al campo alla creazione di una tabella dove ad ogni nome campo associ la corrispondente query.
  • Re: Select con nome campo dentro una variabile

    Eggià avevo avuto l'impressione di essere stato carente di info. Ora mi metto a provare, grazie
  • Re: Select con nome campo dentro una variabile

    Ottimi consiglio, funziona al 99%.
    Capisco quando parli di impostazione. ottimizzando l'uso delle variabili si potrebbe fare tutto con una sola query, ma il mio livello non è così alto per cui userò una query per ciascuna campo di ricerca.
    Ora ho rinominato tutte le query, ho scritto questo codice:
    Private Sub CasellaCombinataA01_Click()
    Dim strSQL
    strSQL = "SELECT " & Me.CasellaCombinata01x2 & " FROM [" & Me.CasellaCombinata01x2 & " Query];"
    Me!CasellaCombinataA01.RowSource = strSQL
    Me!CasellaCombinataA01.Requery
    End Sub
    Nella CasellaCombinata01x2 seleziono REGIONE, nell'origine riga di CasellaCombinataA01 leggo giustamente SELECT REGIONE FROM [REGIONE Query];
    il nome del campo della query è REGIONE, ma mi manca l'ultimo step: clicco sul triangolo e compare nulla.
    Accidenti ci vorrei arrivare da solo, ma ho bisogno di una imbeccata.
    grazie
  • Re: Select con nome campo dentro una variabile

    Non riesco più a seguire i dettagli della discussione. Ho la sensazione che ci siano problemi di sintassi varie. Consiglio a redkaa di dare un'occhiata qui
    http://www.fontstuff.com/access/acctut15.ht
    che a me ha illuminato su molti fronti, oppure facendo una semplica ricerca con parole chiave "SQL in VBA".
  • Re: Select con nome campo dentro una variabile

    redkaa ha scritto:


    ...
    Nella CasellaCombinata01x2 seleziono REGIONE, nell'origine riga di CasellaCombinataA01 leggo giustamente SELECT REGIONE FROM [REGIONE Query];
    il nome del campo della query è REGIONE, ma mi manca l'ultimo step: clicco sul triangolo e compare nulla.
    ...
    Da quante colonne è costituita la combo? Che dimensioni hanno?
  • Re: Select con nome campo dentro una variabile

    La combo è di una sola colonna e contiene l'elenco delle regioni italiane
  • Re: Select con nome campo dentro una variabile

    Cosa accade più esattamente:
    Valori selezionabili nella Combo CasellaCombinata01x2: città, provincia, regione, nazione, durata, data e esito
    Seleziono Regione nella Combo CasellaCombinata01x2 e poi clicco sul triangolo della Combo CasellaCombinataA01 e mi aspetto che nella Combo mi compaia la lista delle 20 regioni italiane. Invece non compare nulla, ma io clicco nel campo vuoto che si espande e poi riclicco sul triangolo e compaiono le 20 regioni.
    Step immediatamente successivo.
    Ora seleziono esito nella Combo CasellaCombinata01x2 e poi clicco sul triangolo della Combo CasellaCombinataA01 e mi aspetto che nella Combo mi compaia la lista dei 35 esiti previsti. Invece mi compare la lista delle Regioni. Io clicco su una regione a caso, la Combo si chiude riportando il valore quindi io riclicco sul triangolo e compaiono i 35 esiti previsti.
    And so on
  • Re: Select con nome campo dentro una variabile

    redkaa ha scritto:


    Valori selezionabili nella Combo CasellaCombinata01x2: città, provincia, regione, nazione, durata, data e esito
    CasellaCombinata01x2 prende valori da una tabella oppure è un semplice "elenco valori"?

    Io credo tu stia raccontando un meccanismo che dovrebbe funzionare su 2 step, mentre pretendi che si muova tutto su 1 step solo.
    Devi raccontare tutto dettagliatamente usando nomi propri di tabelle, campi, maschere, impostazioni delle proprietà di ogni casella combinata.
  • Re: Select con nome campo dentro una variabile

    redkaa ha scritto:


    Cosa accade più esattamente:
    ...
    And so on
    Sembra che la prima volta non "senta" il cambiamento del RowSource. In quale evento hai scritto il codice che fa il Requery di CasellaCombinataA01.RowSource?
  • Re: Select con nome campo dentro una variabile

    Su Click
    ora lo sto testando su Attivato e pare che funzioni
  • Re: Select con nome campo dentro una variabile

    redkaa ha scritto:


    Su Click....
    Su Click di CasellaCombinataA01? Per forza non funzionava "al primo colpo". Il requery di quella combo va fatto su AfterUpdate di CasellaCombinata01x2, cioè appena dopo aver deciso attraverso la prima combobox su quale campo impostare la ricerca successiva.
Devi accedere o registrarti per scrivere nel forum
15 risposte