Query parametrica vba

di il
5 risposte

Query parametrica vba

Buongiorno. ho questa query parametrica perfettamente funzionante

SELECT tbl_indirizzi.cognome, tbl_indirizzi.nome, tbl_indirizzi.via, tbl_indirizzi.civico
FROM tbl_indirizzi
WHERE (((tbl_indirizzi.cognome) Like [inserire il cognome]) AND ((tbl_indirizzi.nome) Like [inserire il nome]));

in vba voglio che via e civico per cognome e nome inserito me li restituisca tramite un messaggio

Private Sub trova_indirizzo_Click()
Dim via As String
Dim civico as Integer
DoCmd.OpenQuery ("qry_trova_indirizzo")
If DCount("*", "qry_trova_indirizzo") = 0 Then
msgBox("indirizzo non trovato")
Else
via = DLookup("via", "qry_trova_indirizzo")
civico = DLookup("civico", "qry_trova_indirizzo")
MsgBox "indirizzo = " & via & " civico = " & civico & ""
End If
End Sub

dove sbaglio? l'errore dice che l'espressione immessa come parametro di query ha generato l'errore seguente: '[inserire cognome]'

5 Risposte

  • Re: Query parametrica vba

    Sbagli per il fatto che la Query che tu apri inserendo i Valori dei Criteri non è la stessa istanza di quella aperta dalle istruzioni DCOUNT.

    Purtroppo devi aver ben presente che, le Query Parametriche non sono quelle che apri per vedere i dati... ma l'oggetto QueryDef che in memoria contiene i dati.
    La visualizzazione con l'Oggetto NON SI DEVE USARE ai fini di sviluppo.

    Ne consegue che le Query Parametriche vanno gestite interamente da Codice, sfruttando i Parametri... e puoi leggere un articolo quì:

    Oppure la costruisci in modo Dinamico...
    Oppure inserisci i CRITERI nelle Funzioni di Aggregazione [Dcount/DlookUp] partendo dalla Tabella o dalla Query Senza Parametri.
  • Re: Query parametrica vba

    Oppure la costruisci in modo Dinamico...
    Oppure inserisci i CRITERI nelle Funzioni di Aggregazione [Dcount/DlookUp] partendo dalla Tabella o dalla Query Senza Parametri.

    mi puoi fare gentilmente qualche esempio?
  • Re: Query parametrica vba

    Tieni presente che servono un minimo di basi...
    Ipotiziamo:
    PARAMETERS [pCognome:] Text ( 255 ), [pNome:] Text ( 255 );
    SELECT tbl_indirizzi.cognome, tbl_indirizzi.nome, tbl_indirizzi.via, tbl_indirizzi.civico
    FROM tbl_indirizzi
    WHERE Cognome Like [pCognome:] AND Nome Like [pNome:]
    1) Query Parametrica
    
        Dim strSQL as String
        Dim qdf As DAO.QueryDef
        Dim rs As DAO.Recordset
        Set qdf = CurrentDb.QueryDefs("NomeQuery")
        qdf.Parameters![pCognome:] = Me!NomeTxtBoxCognome.Value
        qdf.Parameters![pNome:] = Me!NomeTxtBoxNome.Value
        Set rs = qdf.OpenRecordset
        If rs.EOF And rs.BOF Then
            Msgbox "Nessun Record..."
        Else
            Via=rs.Fields("Via").Value
            Civico=rs.Field("Civico").Value
        End IF
        rs.Close
        set rs=nothing
        set qdf=nothing
    2) Usi i Criteri nel DlookUp
    
    Via=DlookUp("Via","tbl_indirizzi","Cognome LIKE '" & Me!NomeTxtBoxCognome.Value & "' AND Nome LIKE '" & Me!NomeTxtBoxNome.Value & "'")
    Civico=DlookUp("Civico","tbl_indirizzi","Cognome LIKE '" & Me!NomeTxtBoxCognome.Value & "' AND Nome LIKE '" & Me!NomeTxtBoxNome.Value & "'")
    Attenzione che se ti ritrovi Cognomi del tipo [Dall'Oglio] rischi non funzioni... serve fare il REPLACE dell'apostrofo...
  • Re: Query parametrica vba

    Ascolta io in un altro applicativo ho già affrontato un problema simile

    qry_clienti_fuori
    SELECT tbl_clienti.posizione, Count(tbl_clienti.posizione) AS ConteggioDiposizione
    FROM tbl_clienti
    GROUP BY tbl_clienti.posizione
    HAVING (((tbl_clienti.posizione)="in giro per la città"));

    Private Sub clienti_fuori_Click()
    Dim clienti_fuori As Integer
    If DCount("*", "qry_clienti_fuori") = 0 Then
    MsgBox "non sono presenti clienti fuori"
    Else
    clienti_fuori = DLookup("ConteggioDiposizione", "qry_clienti_fuori")
    MsgBox "il numero di clienti fuori è " & clienti_fuori & ""
    End If
    End Sub

    questa funziona. non riesco a capire cosa cambia tra i due problemi. in un caso funziona e nell'altro no. cambia solo che nel secondo caso ho i like [] e vorrei che cognome e nome fossero inseriti da inputbox. e questo che mi sta creando problemi
  • Re: Query parametrica vba

    Ovvio che funziona. ... ma la risposta l'ho già data... e tu non hai capito.

    Semplifico... cambia il criterio in modo dinamico della tua query.... visto che ora che funziona è fisso.
    Allora forse ti risulta chiaro il problema.
    Rileggi quello che ti ho spiegato.
Devi accedere o registrarti per scrivere nel forum
5 risposte