Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Selezionare tutti i record di una query se il criterio è nullo

  1. #1
    luca013 non è in linea Novello
    Buongiorno a tutti
    Dopo aver letto e provato quello che c'è scritto in questo thread:
    http://forum.masterdrive.it/access-7...o-nullo-58039/
    non sono purtroppo riuscito a risolvere il mio problema.
    In apparenza a me sembra molto semplice, ma non riesco a venirne a capo.
    In Pratica ho una tabella con campi:
    -ID (chiave primaria)
    -Nome
    -Cognome
    -Anno di nascita
    -Settimana 1 (campo sì/no)
    -Settimana 2 (campo sì/no)
    -Squadra

    Sostanzialmente ho creato una maschera di tipo Tabulare basata su quella tabella, ho necessità di filtrare i dati in modo che attraverso una query mi restituisca solo i dati corrispondenti ai criteri impostati mediante caselle combinate poste nella parte dell'intestazione. I criteri sono più di uno (Anno di nascita, settimana 1, settimana 2, squadra). Finchè in ogni casella combinata scelgo una delle opzioni funziona e filtra alla perfezione, ma se ne lascio una non selezionata non mi restituisce nessun record.
    Ho provato a cercare in rete ma non sono riuscito a trovare nessuna soluzione funzionante.
    Se provo quella del thread sopracitato nel scrivere il criterio tramite la finestra genera che si apre dalla casella dei criteri della query, mi esce il messaggio di errore che il comando Isnull finale non ha la sintassi corretta.
    Qualcuno riesce a darmi qualche consiglio perfavore?
    Grazie mille in anticipo

  2. #2
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Il Link che hai esposto direi che non serve proprio nell'ottica di filtrare una maschera...
    Io propenderei per rimandarti a questo:
    http://forum.masterdrive.it/access-7...textbox-98350/
    ℹ️ Leggi di più su @Alex ...

  3. #3
    luca013 non è in linea Novello
    Innanzitutto grazie
    Credo che il mio problema sia identico a quello di questo thread:
    http://forum.masterdrive.it/access-7...23/index2.html
    (da te citato)
    Al momento sto provando con due sole combobox senza il valore tutti, poi complicherò man mano
    Una combobox è di testo e l'altra è un numero
    Ho provato a scrivere questo codice:
    rivate Sub Filtra_Click()
    Dim strWH As String
    If Len(Me!RicSquadra.Value & vbNullString) > 0 Then strWH = strWH & "Squadra=" & Me!RicSquadra.Value & " AND "
    If Len(Me!RicAnno.Value & vbNullString) > 0 Then strWH = strWH & "Anno=" & Me!RicAnno.Value & " AND "
    
    If Len(strWH) > 0 Then strWH = Mid$(strWH, 1, Len(strWH) - 5)
    Me.Filter = strWH
    Me.FilterOn = True
    End Sub
    
    Questo codice è associato al pulsante filtra
    quando vado ad eseguirlo però mi esce una finestra "Immettere il valore del parametro" e mi chiede appunto un valore (a quanto pare numerico) per quello che ho scelto nella casella combinata squadra.
    Penso sia un errore mio di sintassi del codice ma non riesco a trovarlo.
    Riusciresti a darmi una mano perfavore? Grazie mille

  4. #4
    Quote Originariamente inviato da luca013 Visualizza il messaggio
    ...
    Una combobox è di testo e l'altra è un numero
    ...
    quando vado ad eseguirlo però mi esce una finestra "Immettere il valore del parametro" e mi chiede appunto un valore (a quanto pare numerico) per quello che ho scelto nella casella combinata squadra.
    L'errore è qui
    If Len(Me!RicSquadra.Value & vbNullString) > 0 Then strWH = strWH & "Squadra=" & Me!RicSquadra.Value & " AND "
    
    Se Squadra è un campo di tipo testo, il suo criterio nella stringa che costituisce la WHERE condition deve essere racchiuso tra apici (singoli o doppi, ma è spiegato anche quello nel link indicato da @Alex. Rileggi quel thread)

  5. #5
    luca013 non è in linea Novello
    Ho letto e provato varie volte ma non riesco a capire quale parte vada racchiusa tra gli apici.
    Scusate ma col vba sono purtroppo molto molto agli inizi e non riesco a trovare in rete nulla a proposito

  6. #6
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Quote Originariamente inviato da luca013 Visualizza il messaggio
    Ho letto e provato varie volte ma non riesco a capire quale parte vada racchiusa tra gli apici.
    Scusate ma col vba sono purtroppo molto molto agli inizi e non riesco a trovare in rete nulla a proposito
    Questa cosa è spiegata milioni di volte (forse anche di più) sulla rete (web).
    Il punto è che se non sai cosa cercare, non riuscirai a trovare nulla. E' un classico.
    Lascia perdere il web (in questo momento).

    Invece, ti suggerisco caldamente di acquistare almeno un paio di libri:
    - sul linguaggio VBA
    - sul linguaggio SQL

    Qualsiasi libro va bene, perché a te servono le basi.
    ℹ️ Leggi di più su gibra ...

  7. #7
    luca013 non è in linea Novello
    Hai completamente ragione e più vado avanti più me ne rendo conto.
    Pensavo di riuscire a creare qualcosa senza andare ad incastrarmi nel vba ma a quanto pare per creare qualcosa di decente è impossibile non imbattersi nel vba.
    Ho già adocchiato qualche libro che a breve prenderò, non solo per risolvere questi problemi ma per riuscire a conoscere access più profondamente senza fermarmi alle banali creazioni guidate.
    So che non è vostra abitudine farlo, ma riuscireste nel frattempo a darmi qualche consiglio per sistemare quel codice perfavore? Questo database mi serve fra una decina di giorni e purtroppo non credo di riuscire fisicamente a leggermi i libri per riuscire a farlo. Devo solo trovare un modo per farlo funzionare per 3 settimane, dopodichè per l'anno prossimo (siccome è un database di gestione di un campo estivo per ragazzi) lo riprogetterò completamente da zero tenendo conto di tutto e aggiungendo funzioni nuove che già volevo fare per quest'anno ma che, a causa della mia ignoranza in materia di access, ho rinunciato ad implementare perchè troppo complesse. Grazie mille ancora per le risposte

  8. #8
    Quote Originariamente inviato da luca013 Visualizza il messaggio
    .. nel frattempo a darmi qualche consiglio per sistemare quel codice perfavore? ...
    Building SQL Statements that Include Variables and Controls in Access 2007
    (anche se dubito che questo ti permetterà di arrivare a terminare il lavoro in tempo perché presto incapperai in altri problemi. Non sto gufando)

  9. #9
    luca013 non è in linea Novello
    Tranquillo so benissimo che non stai gufando, purtroppo di problemi ne saltano fuori spesso, ma in un modo o nell'altro (aggirandoli o risolvendoli) sto riuscendo ad andare avanti. Come ho detto mi occorre solo una cosa temporanea (che peraltro gestisce per quest'anno pochi record, circa 130)

    Ho modificato così:
    Private Sub Filtra_Click()
    Dim strWH As String
    If Len(Me!RicSquadra.Value & vbNullString) > 0 Then strWH = strWH & "Squadra= "" " & Me!RicSquadra.Value & " AND "
    If Len(Me!RicAnno.Value & vbNullString) > 0 Then strWH = strWH & "Anno=" & Me!RicAnno.Value & " AND "
    
    If Len(strWH) > 0 Then strWH = Mid$(strWH, 1, Len(strWH) - 5)
    Me.Filter = strWH
    Me.FilterOn = True
    End Sub
    
    aggiungendo gli apici dopo Squadra=
    ora non mi chiede il valore, ma quando vado ad eseguire il pulsante mi dà:
    Errore di sintassi nella stringa nell'espressione della query 'Squadra=" Blu AND Anno=2000
    e se apro il debug mi evidenzia di giallo la riga
    Me.Filter = strWH
    cosa potrebbe essere? non sono ancora giusti gli apici?

  10. #10
    Quote Originariamente inviato da luca013 Visualizza il messaggio
    ...
    Errore di sintassi nella stringa nell'espressione della query 'Squadra=" Blu AND Anno=2000
    e se apro il debug mi evidenzia di giallo la riga
    Me.Filter = strWH
    cosa potrebbe essere? non sono ancora giusti gli apici?
    Modifica il codice così:
    rivate Sub Filtra_Click()
    Dim strWH As String
    ...
    If Len(strWH) > 0 Then strWH = Mid$(strWH, 1, Len(strWH) - 5)
    Debug.Print strWH '<=====
    Stop '<====
    
    Me.Filter = strWH
    Me.FilterOn = True
    End Sub
    
    La prima riga stampa il contenuto della variabile strWH nella finestra immediata (se non la vedi premi CTRL + G)
    La seconda riga interrompe l'esecuzione del codice. (così ti è più facile vedere la finestra immediata e la finestra delle variabili locali)
    Fino a quando la variabile strWH non avrà questo contenuto
    Squadra= 'Blu' AND Anno=2000
    
    oppure
    Squadra= "Blu" AND Anno=2000
    
    non funzionerà
    Sì, il problema è ancora nell'uso degli apici.

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. query con criterio nullo
    Da francesco606 nel forum Microsoft Access
    Risposte: 8
    Ultimo Post: 05-11-2016, 17:53
  2. Risposte: 7
    Ultimo Post: 23-06-2015, 15:14
  3. dlookup, criterio e valore nullo
    Da CESABAS nel forum Microsoft Access
    Risposte: 4
    Ultimo Post: 17-09-2014, 09:13
  4. criterio query basato su maschera- non il solito criterio!
    Da RiccardoA nel forum Microsoft Access
    Risposte: 15
    Ultimo Post: 05-02-2013, 13:34
  5. Articolo: [ACCESS] Query - Selezionare tutti i Record se il Criterio è Nullo
    Da @Alex nel forum Microsoft Access
    Risposte: 0
    Ultimo Post: 30-08-2011, 16:05