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

Discussione: vba update campo tabella dopo aggiornamento

  1. #1
    red_apple non è in linea Scolaretto
    Post
    72

    vba update campo tabella dopo aggiornamento

    salve,
    ho una machera che ha una casella combinata "Descrizione prodotto", che contiene qst routine:
    Private Sub CasellaCombinata65_AfterUpdate()
    Me.Codice.Value = Me.CasellaCombinata65.Column(0)
    Me.Lotto.Value = Me.CasellaCombinata65.Column(2)
    End Sub

    codice che mi serve per popolare altri campi della tabella "Fatturati" .Queste info vengono prese dalla tabella "Prodotti".
    Ora quello che vorrei fare,
    qualora volessi modificare il valore del Lotto, vorrei che questa modifica avvenisse anche nella tabella "Prodotti".
    ho inserito questo condice:
    Private Sub Lotto_AfterUpdate()
    Update Prodotti
    Set [Lotto] = Me.Lotto.Value
    where [Codice] = Me.Codice.Value
    End Sub

    ma non funziona... sapreste aiutarmi?
    grazie mille

  2. #2
    France77 non è in linea Novello
    Post
    2
    Non puoi scrivere la query di aggiornamento direttamente nella sub routine. Dovresti creare una variabile stringa che contiene l'istruzione e poi usarla per eseguire la query. Ad esempio usando il metodo RUNSQL dell'oggetto DoCmd.

    Quello che non mi convince e che il ragionamento sembra complesso. In definitiva potresti progettare la maschera con origine dati la tabella PRODOTTI, per cui non dovrebbe esserci necessità di usare SQL, fai interagire l'utente modificando i dati direttamente dalla maschera.

  3. #3
    red_apple non è in linea Scolaretto
    Post
    72
    ho provato a fare anche così :
    Private Sub Lotto_BeforeUpdate(Cancel As Integer)
    DoCmd.RunSQL " UPDATE Prodotti set [Lotto] = " & Me.Lotto.Value & " where [Codice]= " & Me.Codice & " "
    End Sub

    solo che mi esce una finestra in cui devo scrivere il codice del prodotto, se inserisco il codice a mano, mi dice esce l'avviso ke ha modificato un record, e se voglio continuare nella modifica.
    Per ovviare a questa cosa come posso fare?
    in effetti io ho bisogno ke qst dato venga memorizzato anke nella tabella fatturazione...per cui posso anke modificare direttamente la tab prodotti, ma poi come posso richiamare qst lavore nel campo della tabella fatturazione?

  4. #4
    France77 non è in linea Novello
    Post
    2
    Allora, vedo due problemi. Il primo penso sia a livello di struttura delle relazioni del db. L'aggiornamento dei campi che vorresti fare e complicato perché probabilmente le tabelle non sono in forma normale. Il campo lotto dovrebbe essere in una sola tabella, magari prodotti. Ad esempio in tabella FATTURAZIONE dovresti avere come chiave esterna solo ID PRODOTTO, non altri dati. Non sapendo cosa vuoi fare, ti consiglio di riflettere bene prima sulle relazioni dei dati, perché così ti semplifichi il lavoro.
    Ti chiede il codice perché probabilmente il campo della tabella si chiama diversamente, e interpreta [codice] come un parametro. Poi c'è da considerare che devi disabilitare gli avvisi di SQL e gestire l'errore di modifica contemporanea di record. Come vedi tutto più complicato

+ Rispondi al Thread

Permessi di invio

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