Newsgroup: it.comp.appl.access
Titolo: problema su aggiornamento di un controllo in maschera continua

"durante la corrente sessione di modifica il record è stato modificato da un
altro utente. Salvando le proprie modifiche si sovrascriveranno i cambiamenti
dell'altro utente" ecc.. so che lo conoscete bene.
ho provato a cercare negli archivi del ng soluzioni date ad altri, ma non ho
trovato niente che mi potesse aiutare.
effettivamente il msg mi risulta strano... non riesco a capirne l'origine.
si verifica solo in un caso.
ho un campo dove inserisco una data. (data1)
su dopo aggiornamento apro con ado la stessa tabella, con un filtro e delle
condizioni.
calcolo la data di un altro campo e vado a stamparla in un altro controllo
(datascadenza)
prima di fare ciò, la copio nel campo datascadenza anche degli altri record
filtrati.
solo a questo punto copio la data nel controllo del record dell'evento con:
Me.DataScadenza = DataScadenza
tutto funziona
ma.....
siccome mi trovo in una per me ormai famosa ed odiata modalità maschera
continua, quando dopo il CORRETTO aggiornamento del campo e del controllo
datascadenza, mi sposto su un altro record, oppure clicco sul pulsante salva, mi
viene restituito l'errore che ho copiato a inizio mail.
da cosa può dipendere?
forse dal fatto che le tabelle non sono incluse nel db, ma collegate?
però modifiche su altri campi non danno errore...
forse dipende dal tipo di lock usato nell'aprire il recordset?
ma sulla tabella le modifiche mi sembra avvengano senza problemi e inoltre ho
provato anche con altri tipi di lock...
l'applicazione andrà in rete, ma finora si trova tutta sul mio pc, aperta solo
da me....
Ciao
Silvia.
 --
www.silvietta.it
...everyone's invited!
Prima di offendere qualcuno contate fino a dieci: vi verranno in mente molti piu' insulti!

Ho provato a mettere maschera singola, ma stavolta sembra essere innocente.
cmq copio il codice, magari potesse aiutarvi ad aiutarmi.
nel controllo Data1 inserisco/modifico una data
il campo DataScadenza della tabella corsi deve essere aggiornato aggiungendo 90
giorni alla data1, in determinati record filtrati.
a questo punto deve/dovrebbe essere copiato il risultato anche nei relativi
controlli datascadenza.
Private Sub Data1_AfterUpdate()
    Form_Current 'calcola e stampa correttamente altri campi
    If Not Me.Data1 = "" Then
        Dim objRS As Recordset
        Dim sql As String
        Dim DataScadenza As Date
        Set objRS = New ADODB.Recordset
        sql = "SELECT DataScadenza, edizione FROM Corsi WHERE " & _
            "CodiceCorso='" & Me.CodiceCorso & "' ORDER BY Edizione desc"
        objRS.Open sql, CurrentProject.Connection, 3, 3
        If Not objRS.EOF Then
            'se l'edizione dove ho fatto modifiche è l'ultima edizione
disponibile
            If Me.Edizione = objRS("edizione") Then
               DataScadenza = DateAdd("d", 90, Me.Data1)
               While Not objRS.EOF
                   objRS("DataScadenza") = DataScadenza
                   objRS.Update
                   objRS.MoveNext
               Wend
            End If
        Else
            MsgBox "Si è verificato un errore"
        End If
        objRS.Close
        Set objRS = Nothing
        Me.DataScadenza = DataScadenza
      '  DoCmd.Requery "DataScadenza"
      '  Me.Requery
 
       ' Me.Refresh
     '   Dim ctlCombo As Control
    ' Return Control object pointing to a combo box.
   ' Set ctlCombo = Forms!m_corsi!DataScadenza
    ' Requery source of data for list box.
    'ctlCombo.Requery
    End If
End Sub
ho lasciato anche alcune prove che avevo fatto....


]SiLVieTTa[ ha scritto:

Quando modfichi data1 lasci in sospeso le modifiche sul record. Se nel
frattempo lo modifichi anche con ADO direttamente sulla tabella, quando
cerchi di salvarlo ti dà quell'avviso.
Per risolvere puoi fare un SaveRecord prima di modificare la tabella con
ADO, o spostare il codice da data1_afterupdate a form_afterupdate.
Namor
-- 
Aiuta chi ne ha bisogno, non ti costa niente:
www.shopmon.it
  -  
www.porloschicos.com
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

]SiLVieTTa[ ha scritto:

Perchè invece che fare il lavoro con ADO non lo fai con una query UPDATE
visto che in definitiva si tratta di aggiornare il valore di un campo su
alcuni record, individuati da un certo criterio?
