Condividi tramite

Problema Proprietà FindFirst su recordset

Anonimo
2017-09-30T10:21:00+00:00

Salve, dovrei ricercare nella tabella "TProdotti" un codice del campo "NcodProdotto" (numerazione automatica) confrontando il valore con un campo di inserimento di una form. Mi da l'errore di runtime 3251: Operazione non supportata per questo tipo di oggetto.

Qualcuno saprebbe aiutarmi?

Private Sub ButtonModProd_Click()

    Dim tabprod As DAO.Recordset

    Set tabprod = CurrentDb.OpenRecordset("TProdotti")

    If (Forms!MainBoard!CampoCodProd = "") Then

        MsgBox ("Nessun Record selezionato.")

    Else

        tabprod.FindFirst "NcodProdotto = Forms!MainBoard!CampoCodProd"

        tabprod.Edit

            tabprod.Fields("TcodArticolo") = Forms!MainBoard!Campo8

            tabprod.Fields("TcodSeriale") = Forms!MainBoard!Campo7

            tabprod.Fields("TMarca") = Forms!MainBoard!Campo1

            tabprod.Fields("TModello") = Forms!MainBoard!Campo2

            tabprod.Fields("TFornitore") = Forms!MainBoard!Campo3

            tabprod.Fields("Nprezzo") = Forms!MainBoard!Campo4

            tabprod.Fields("DvaliditaDa") = Forms!MainBoard!Campo5

            tabprod.Fields("DvaliditaA") = Forms!MainBoard!Campo6

        tabprod.Update

    End If

End Sub

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

Risposta accettata dall'autore della domanda

Anonimo
2017-09-30T11:01:37+00:00

Ciao,

tabprod.FindFirst "NcodProdotto = " & Forms!MainBoard!CampoCodProd

Mimmo

La risposta è stata utile?

2 persone hanno trovato utile questa risposta.
0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2017-09-30T11:34:52+00:00

ciao Ivan,

per quanto al metodo findFirst se il campo CampoCodProd oltre che autonumbner è una pk ti consiglierei il metodo seek.

Ma la cosa più importante è un' altra.

Invece di aprire un recordset e aggiornare un campo alla volta usa una query di aggiornamento e aggiorni tutto in un solo colpo.

salva questo predicato sql e chiamo queryUpdate

UPDATE TProdottiSET

TProdottiSET.TcodArticolo= Eval("[forms]![MainBoard]![Campo8]"),

TProdottiSET.TcodSeriale= Eval("[forms]![MainBoard]![Campo7]")

TProdottiSET.TMarca= Eval("[forms]![MainBoard]![Campo1]")

TProdottiSET.TModello= Eval("[forms]![MainBoard]![Campo2]")

TProdottiSET.TFornitore= Eval("[forms]![MainBoard]![Campo3]")

TProdottiSET.Nprezzo= Eval("[forms]![MainBoard]![Campo4]")

TProdottiSET.DvaliditaDa= Eval("[forms]![MainBoard]![Campo5]")

TProdottiSET.DvaliditaA= Eval("[forms]![MainBoard]![Campo6]")

WHERE TProdottiSET.NcodProdotto )=Eval("[forms]![MainBoard]![CampoCodProd]")

e poi esegui tutto al click del command button.

Private Sub ButtonModProd_Click()

If Len(Me.CampoCodProd & vbNullString) = 0 Then

    VBA.MsgBox prompt:="CampoCodProd mancante", _

               buttons:=vbCritical, _

               Title:="Attenzione"

    Exit Sub

End If

DBEngine(0)(0).Execute "queryUpdate", &H80

VBA.MsgBox prompt:="Aggiornamento eseguito", _

               buttons:=vbInformation, _

               Title:="Info"

End Sub

ciao, Sandro.

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2017-09-30T10:43:16+00:00

Ciao,

prova a sostituire:

Set tabprod = CurrentDb.OpenRecordset("Select * from TProdotti")

ciao Mimmo

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2017-09-30T11:03:40+00:00

    Così ha funzionato, Grazie mille per l'aiuto!

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-09-30T10:57:30+00:00

    Grazie mille, solo che ora il problema è il seguente:

    tabprod.FindFirst "NcodProdotto = Forms!MainBoard!CampoCodProd"

    Così dice che Forms!MainBoard!CampoCodProd non è riconosciuto come espressione o come campo valido

    se invece metto

    tabprod.FindFirst "NcodProdotto = 50"

    funziona, ma mi servirebbe paragonarlo ad un campo, non ad un numero fisso. ho provato anche ad usare una variabile temporanea ma il risultato non è cambiato.

    La risposta è stata utile?

    0 commenti Nessun commento