Condividi tramite

Proprietà FindFirst su evento pressione tasto (ascii)

Anonimo
2017-10-28T09:52:32+00:00

Salve, dovrei creare una sub su evento  della pressione di un tasto (KeyAscii) in una listbox con due eventi: la pressione del tasto Backspace che permette di trovare il record nella tabella collegata alla listbox ed eliminarlo, o la pressione del tasto Enter, che permette invece di modificarne un valore tramite una inputbox, per fare ciò ho provato ad utilizzare la proprietà Recordset.FindFirst per trovare il primo record del recordset in questione che abbia il campo "Codice Tras" uguale a quello della riga selezionata dalla listbox e il campo "Codice Prodotto" uguale a quello selezionato nella listbox.

il codice è il seguente:

Private Sub Elenco187_KeyPress(KeyAscii As Integer)

'BackSpace: 8 - Enter: 13

Dim tabord As DAO.Recordset

Set tabord = CurrentDb.OpenRecordset("TOrdini")

    If (KeyAscii = 8) Then

        tabord.FindFirst "[codTras]= '" & Forms!MainBoard!Elenco187.Column(0).Value & "'" And "codprod= '" & Forms!MainBoard!Elenco187.Column(1).Value & "'"

        tabord.Edit

        'comando per eliminare record corrente

        tabord.Update

    End If

    If (KeyAscii = 13) Then

        tabord.FindFirst "[codTras]='" & Forms!MainBoard!Elenco187.Column(0).Value & "'" & " And codprod='" & Forms!MainBoard!Elenco187.Column(1).Value  & "'"

        tabord.Edit

        tabord.Fields("ncolli") = InputBox("Inserire nuova quantità:")

        tabord.Update

    End If

KeyAscii = 0

Me.Refresh

End Sub

Mi da errore di Runtime 424 "Necessario Oggetto" sulla riga di tabord.FindFirst.

Qualcuno saprebbe dirmi come risolvere questo errore?

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

7 risposte

Ordina per: Più utili
  1. Anonimo
    2017-10-30T19:26:59+00:00

    Ciao, sempre stesso problema purtroppo

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-10-29T21:28:53+00:00

    Ok, prova a variare la riga con:

      tabord.FindFirst "[codTras]= '" & Forms!MainBoard!Elenco187.Column(0).Value & "' And codprod= '" & Forms!MainBoard!Elenco187.Column(1).Value & "'"

    Ciao Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-10-29T18:15:11+00:00

    Purtroppo no,  non è cambiato nulla, da sempre il solito errore, segnalando la riga del findfirst

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-10-28T16:29:56+00:00

    ciao Ivan,

    supponendo la tabella :

    ed una maschera che mostra nella list box i suddetti dati, le colonne sono 2 la prima è nascosta ed è la chiave primaria :

    agendo sul comando delete ottengo :

    su doppio click di un elemento selezionato ottengo l'apertura della form su quel records per modificarlo:

    questo il codice vba :

    Option Compare Database

    Option Explicit

    Private Sub cmdDelete_Click()

    With Me.lstCat

        If Not .ListIndex Then

            If VBA.MsgBox(prompt:="confermi l'eliminazione di " & vbNewLine & """" & .Column(1) & """?", _

                          buttons:=vbYesNo + vbExclamation, _

                          Title:="Attenzione") = vbYes Then

                           DBEngine(0)(0).Execute "delete * from categorie where IDCategoria=" & .Column(0), &H80

                           .Requery

            End If

        End If   

    End With

    End Sub

    Private Sub lstCat_DblClick(Cancel As Integer)

    DoCmd.OpenForm FormName:="categorie", _

                   View:=acNormal, _

                   wherecondition:="idcategoria=" & Me.lstCat.Column(0)

    End Sub

    tendenzialmente eviteri il recordset e relativo metodi per il problema che poni.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2017-10-28T14:42:18+00:00

    Ciao,

    prova a cambiare la set con:

    Set tabord = CurrentDb.OpenRecordset("Select * From TOrdini")

    o anche

    Set tabord = CurrentDb.OpenRecordset("TOrdini", dbOpenDynaset)

    Ciao Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento