+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 9 su 9

Discussione: ricerca record da sub form

  1. #1
    undertaker non è in linea Scolaretto
    Post
    272

    ricerca record da sub form

    Buona sera
    ho creato una form con un campo [nome sercizio], nella stessa form ho una sub form con la lista di tutti gli esercizi, vorrei che cliccando su un esecizio della lista della subform, automaticamente si portasse sul campo della stesso esercizio nella form principale.
    gho provato cosi:
    codice:
    Private Sub NOME_ESERCIZIO_Click()
    strsrc = Me.NOME_ESERCIZIO
    Dim rst As Object
    Set rst = Me.Recordset.Clone
    rst.FindFirst Me.NOME_ESERCIZIO = strsrc
    
    If rst.NoMatch Then
    MsgBox "esercizio non trovato"
    Else
    Me.Bookmark = rst.Bookmark
    End If
    End Sub
    non funziona... cosa sbaglio?
    grazie

  2. #2
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    15,767
    Stai lavorando nella SubForm...?
    Allora non vedo nulla nel codice che consenta di andare nella form...
    Tuttavia concettualmente quello che fai è estremamente strano... perché hai lo stesso campo nella form e nella SubForm...?
    Se questo non è il campo chiave che senso ha questa associazione...?(nessuna)
    Ultima modifica di @Alex; 08-01-2019 00:06 
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  3. #3
    undertaker non è in linea Scolaretto
    Post
    272
    ho una form principale con i campi "nome esercizio", "id esercizio", "descrizione esercizio","categoria" e "image".
    Quindi per ogni esercizio tutte le caratteristiche e lo utilizzo per l'inserimento o modifica degli esercizi stessi.
    La mia esigenza di dover inserire una subform con l'elenco degli esercizi in ordine alfabetico, nasce dal numero elevato degli esercizi che ci sono, quindi per arrivare subito all'esercizio pensavo che al click sull'esercizio della subform mi portasse nel campo richiesto della form principale. Inoltre nella subform per attivare un ulteriore filtro pensavo di creare una serie di pulsanti con le lettere dell'alfabeto, che al click mi filtra solo quella con quella lettera iniziale (un progetto di rubrica gia presente su northwind).
    GRAZIE

  4. #4
    OsvaldoLaviosa non è in linea Topo di biblioteca
    Luogo
    Conversano
    Post
    2,851
    Anche per me c'è qualcosa di strano.

    Come si chiama la maschera principale?
    Come si chiama la sottomaschera?
    Quali sono i campi della sottomaschera?
    MascheraPrincipale e Sottomaschera hanno una relazione con quali campi chiave (PK e FK)?
    Ditemi i campi di tutte le vostre tabelle.

  5. #5
    undertaker non è in linea Scolaretto
    Post
    272
    il codice sql della form principale e':
    SELECT TB_ESERCIZI.ID_ESERCIZIO, TB_ESERCIZI.NOME_ESERCIZIO, TB_ESERCIZI.Descr_Esercizio, TB_ESERCIZI.Categoria
    FROM TB_ESERCIZI
    ORDER BY TB_ESERCIZI.NOME_ESERCIZIO;

    questa e' la subform sql:
    SELECT Q_Esercizi_Ordinati.ID_ESERCIZIO, Q_Esercizi_Ordinati.NOME_ESERCIZIO
    FROM Q_Esercizi_Ordinati;


    nome maschera principale FORM
    nome subform SF_Esercizi_Ordinati
    campi subform :idesercizio, nomeesercizio,descrizione esercizio,categoria.
    nessuna relazione tra form e subform.

    Accetto anche soluzioni alternative.
    grazie

  6. #6
    OsvaldoLaviosa non è in linea Topo di biblioteca
    Luogo
    Conversano
    Post
    2,851
    Mie opinioni personali:
    1. C'è qualcosa di diabolico/insensato in quello che avresti progettato.
    2. Non ti basterebbero i normali comandi "filtro" e Ordinamento A-->B forniti da Access (così comodi e a portata di mano)?
    3. Ci credi che non ho ancora colto il senso di quello che vuoi fare? Potresti fare un esempio pratico?
    Ditemi i campi di tutte le vostre tabelle.

  7. #7
    undertaker non è in linea Scolaretto
    Post
    272
    ho cambiato modo,
    ho creato una maschera [riepilogo esercizi] con due combo box una categoria (con l'elenco delle categorie esercizi , addominali, braccia, gambe, ecc...) e una nome esercizio (con l'elenco dei nomi degli esercizi).
    Inserito una sottomaschera [sf_esercizi ordinati] con la seguente query sql ---SELECT Q_Esercizi_Ordinati.ID_ESERCIZIO, Q_Esercizi_Ordinati.NOME_ESERCIZIO, Q_Esercizi_Ordinati.Descr_Esercizio, Q_Esercizi_Ordinati.Categoria
    FROM Q_Esercizi_Ordinati;
    ora vorrei filtrare i campi della sottomaschera con le due combo con il seguente codice :
    codice:
    Private Sub CmbNome_esercizio_AfterUpdate()
    Me.SF_Esercizi_Ordinati.Form.Filter = "NOME_ESERCIZIO = " & Me.CmbNome_esercizio
    Me.FilterOn = True
    
    Me.SF_Esercizi_Ordinati.Form.Requery
    End Sub
    
    Private Sub cmdcategoria_AfterUpdate()
    Me.SF_Esercizi_Ordinati.Form.Filter = "Categoria = " & Me.cmdcategoria
    Me.FilterOn = True
    
    Me.SF_Esercizi_Ordinati.Form.Requery
    End Sub
    ma non funziona... ho fatto il debug sembra tutto ok...
    grazie

  8. #8
    undertaker non è in linea Scolaretto
    Post
    272
    ho trovato una soluzione costruendo una sub che viene richiamata all'evento AFTERUPDATE delle caselle di riepilogo.
    codice:
    Private Sub Filtradati()
    If Not IsNull(Me.CmbNome_esercizio) Then strFiltro = "ID_ESERCIZIO = " & Me.CmbNome_esercizio
    If Not IsNull(Me.cmdcategoria) Then strFiltro = "Categoria = " & Me.cmdcategoria
    If strFiltro = "" Then
          Form_SF_Esercizi_Ordinati.FilterOn = False
    Debug.Print strFiltro
    Else
          Form_SF_Esercizi_Ordinati.Filter = strFiltro
          Form_SF_Esercizi_Ordinati.FilterOn = True
    Debug.Print strFiltro
    End If
    Form_SF_Esercizi_Ordinati.Tag = strFiltro
    End Sub
    funziona ma vorrei che riempiendo una delle due combo l'altra venisse disattivata.
    pensavo ad una funzione IIF

  9. #9
    Phil_cattivocarattere non è in linea Scribacchino
    Luogo
    Verona-Mantova
    Post
    1,574
    Quote Originariamente inviato da undertaker Visualizza il messaggio
    ho trovato una soluzione costruendo una sub che viene richiamata all'evento AFTERUPDATE delle caselle di riepilogo.
    ...
    funziona ma vorrei che riempiendo una delle due combo l'altra venisse disattivata.
    Mi limito ad analizzare quest'ultima soluzione perché c'è un po' da perdersi a seguire tutto.
    Nell'evento AfterUpdate di ogni combo metti il codice che disabilita l'altra combo.
    codice:
    NomeAltraCombo.Enabled = False
    Se per qualsiasi motivo (non so come funziona il fatto di cambiare criteri di filtro) c'è la possibilità che in una delle due combo rimanga un valore anche quando è disabilitata, devi anche impostarla a Null, altrimenti la Sub di costruzione e applicazione del filtro non funzionerà correttamente.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi