Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237

    [VBA ACCESS] Uso di QueryDef e submask

    Ciao ragazzi
    Sto facendo un lavoretto con Access.
    Ho una tabella, tipo anagrafica con nome, cognome e altri dati.
    Ho creato una maschera, con 2 textbox (nome e cognome) e un tasto che permette di eseguire una query di ricerca nella tabella. Il risultato della query viene mostrato in una submask impostata in stile "foglio elettronico", nella maschera principale.
    Sostanzialmente ci sono già riuscito, così:
    codice:
     Dim s As String
        s = "SELECT GLOBALE.ID, GLOBALE.visita, GLOBALE.Cognome, GLOBALE.Nome, GLOBALE.Nascita,             GLOBALE.Telefono FROM GLOBALE WHERE (GLOBALE.Nome LIKE '" & [txNome] & "*') AND (GLOBALE.Cognome LIKE '" & [txCognome] & "*');"
        
     Me.Sottomaschera.Form.RecordSource = s
    Funziona.
    Vorrei però usare i parametri per la query.
    Per questo ho creato la query (che ha la stessa sintassi di quella sopra) e ho questo codice:
    codice:
        Dim qdef As DAO.QueryDef
        Dim rs As DAO.Recordset
        
        Set qdef = CurrentDb("CercaNomeCognome")
        qdef.Parameters("Nome") = [txNome]
        qdef.Parameters("Cognome") = [txCognome]
        
        rs = qdef.OpenRecordset
    Ma come si fa a fare il bind del risultato della query (il recordset così ottenuto) alla submask?
    Qual'è la proprietà giusta?
    Ho cercato parecchio ma non ne sono venuto a capo!
    Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Credevo di aver risolto ma non è così.
    Non capisco perché ma dopo aver eseguito un paio di volte il codice senza problemi Access si pianta. O meglio, senza dare errore, si blocca il thread per programma e l'unica cosa da fare è chiudere il processo. Il processo attivo di access consuma una buona % di attività del processore, 50-70 % ma usa pochi migliaia di mega di RAM. Come mai??? Che Succede?
    Il codice che uso è questo:
    codice:
    Private Sub cmdSearch_Click()
        
        Dim rs As DAO.Recordset
        Dim qdef As DAO.QueryDef
        
        If IsNull([txTel]) And IsNull([txVisita]) Then
            Set qdef = CurrentDb.QueryDefs("QueryByNomeCognome")
            qdef.Parameters("Nome") = [txNome]
            qdef.Parameters("Cognome") = [txCognome]
        ElseIf IsNull([txTel]) = False Then
            Set qdef = CurrentDb.QueryDefs("QueryByTel")
            qdef.Parameters("Telefono") = [txTel]
        ElseIf IsNull([txVisita]) = False Then
            Set qdef = CurrentDb.QueryDefs("QueryByVisita")
            qdef.Parameters("Visita") = [txVisita]
            
           ' s = s & "WHERE (GLOBALE.visita = #" & Format([txVisita], "mm/dd/yyyy") & "#);"
            
        End If
        
        Set rs = qdef.OpenRecordset
        Set Me.Sottomaschera.Form.Recordset = rs
        
        Set rs = Nothing
       
    End Sub
    Ultima modifica di renygade; 30-07-2014 a 19:36

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.