Ritorrno al record selezionato in precedenza

di il
18 risposte

18 Risposte - Pagina 2

  • Re: Ritorrno al record selezionato in precedenza

    Nell'ordine.
    - Quella textBox mi serve anche a mettere in relazione le due subform. Ma posso probabilmente anche farne a meno, hai ragione. Io lo trovavo comodo.
    - La valorizzo attraverso la sua origine, impostandola uguale al controllo associato alla PK della subform
    - Il record NON cambia! Non deve cambiare. Forse questo non è chiaro. Aggiungo diversi record alla prima suborm (diversi pazienti). Ne evidenzio uno. Ora aggiungo dei record (le prestazioni) utilizzando un'altra subform ed un'altra tabella. Ma il record della pima subform deve continuare a rimanere lo stesso. Quindi la PK non cambia. Però se faccio il requery di un qualsiasi controllo il focus passa ad un altro record (il primo).
    - Invece utilizzare il controllo associato alla PK è una cosa a cui stupidamente non avevo pensato. Ora provo e ti dico.
  • Re: Ritorrno al record selezionato in precedenza

    Ho eliminato la TextBox.
    Modificato il codice per far riferimento al controllo della PK, così
    Private Sub cmdCerca_Click()
        
        Dim lngIDIntestazione As Long
        Dim StrProd As String
        Dim rst As DAO.Recordset
        
        lngIDIntestazione = Me.subfrmPazientiFrmNuovaPrestazione.Form.IDIntestazionePrestazione
        Me.txtCerca.SetFocus
        StrProd = Me.txtCerca.Text
        
        Set rst = Me.subfrmPazientiFrmNuovaPrestazione.Form.RecordsetClone
        
    
        Me.lstProdotti.Requery
        Me.lstProdotti.Visible = True
    
        Me!subfrmPazientiFrmNuovaPrestazione.SetFocus
        rst.FindFirst "[IDIntestazionePrestazione]=" & lngIDIntestazione
        Me!subfrmPazientiFrmNuovaPrestazione.Form.Bookmark = rst.Bookmark
    
        Set rst = Nothing
    End Sub
    Stessa situazione di prima, ma ora aumentano gli sfarfallii
  • Re: Ritorrno al record selezionato in precedenza

    Io inizierei con il PULIRE le cose inutili:
    
    Private Sub cmdCerca_Click()
        Dim lngIDIntestazione As Long
        
        lngIDIntestazione = Me!subfrmPazientiFrmNuovaPrestazione!IDIntestazionePrestazione
       
        Me.lstProdotti.Requery
        Me.lstProdotti.Visible = True
    	
        With Me.subfrmPazientiFrmNuovaPrestazione.Form.RecordsetClone
        	.FindFirst "[IDIntestazionePrestazione]=" & lngIDIntestazione
    		Me!subfrmPazientiFrmNuovaPrestazione.Form.Bookmark = rst.Bookmark
      		Me!subfrmPazientiFrmNuovaPrestazione.SetFocus
        End With
    End Sub
    Se ancora hai problemi di sfarfallio...
    
    Private Sub cmdCerca_Click()
        On Error Goto Err_Handler:
        Dim lngIDIntestazione As Long
        Me.Painting=False
        lngIDIntestazione = Me.subfrmPazientiFrmNuovaPrestazione.Form.IDIntestazionePrestazione
       
        Me.lstProdotti.Requery
        Me.lstProdotti.Visible = True
    	
        With Me.subfrmPazientiFrmNuovaPrestazione.Form.RecordsetClone
        	.FindFirst "[IDIntestazionePrestazione]=" & lngIDIntestazione
    		Me!subfrmPazientiFrmNuovaPrestazione.Form.Bookmark = rst.Bookmark
      		Me!subfrmPazientiFrmNuovaPrestazione.SetFocus
        End With
    Exit_Here:
        Me.Painting=True
        Exit Sub
    Err_Handler:
        Resume Exit_Here
    End Sub
  • Re: Ritorrno al record selezionato in precedenza

    Ho provato Alex, ma continua a "funzionare" sempre allo stesso modo. Al primo giro ottengo il risultato voluto, al secondo ottengo l'errore.

    Alla fine ho colto il tuo suggerimento (che era anche quello di Osvaldo) ho optato per la semplificazione e ripensato l'impostazione a livello di tabelle.
    Ho eliminato una tabella (che era alla base della sottomaschera che elenca i pazienti portati in visita), pensando che in fondo avevo già tutti i dati necessari alla costruzione del recordset necessario, che ora ottengo attraverso una select query.

    Il risultato è pressochè quello che cercavo io, anche se non ottengo proprio tutte le funzionalità che volevo implementare. Il vantaggio è che il codice che sta alla base del funzionamento della maschera si è notevolmente semplificato e posso ora utilizzare i vari metodi di ricerca dei prodotti da aggiungere (combobox, listbox, ecc) senza incappare in errori.

    Grazie per l'aiuto che mi date.
Devi accedere o registrarti per scrivere nel forum
18 risposte