Newsgroup: it.comp.appl.access
Titolo: Per MA & Co (!) - Scrittura dati su tabella SQL resdente su server  connessa ad access via ODBC

Settimana scorsa postai il mio quesito partendo da questo codice:
'aggiorna tbl_utenti su SQL
Dim db As Database
Dim rcs As Recordset
Dim i As Integer
Dim idUt As String
idUt = Forms!frm_login.lst_Utente.Value
Set db = CurrentDb
Set rcs = db. OpenRecordset("tbl_utenti")
With rcs
rcs.Filter = "!id_Utente = " & idUt
Me.FilterOn = True
rcs.Edit
!nAcc = xnAcc
!usr_Data_UltimoAccesso = Date
!usr_ip = IpUsr
!usr_UsrPC = UsrPC
rcs.Update
End With
rcs.Close
Set rcs = Nothing
Set db = Nothing
Mi venne evidenziato l'errore da MA e M. Piubelli.
Ho corretto secondo loro consiglio ma l'errore permane.
Non si aggiorna il recordo filtrato per Id_Utente, ma SEMPRE E SOLO il
primo record della tabella.
Segue consiglio ricevuto da MA (identico a quellodi M. Piubelli)
fermo restando che devi togliere il punto esclamativo dal filtro
perchè non fai una cosa del genere?
Set rcs = db. OpenRecordset("SELECT * FROM tbl_utenti WHERE id_Utente
= " & idUt, dbopendynaset, dbseechanges)
(il punto interrogativo andava dopo il pezzo di codice, ma avrebbe
creato confusione...)
dbopendynaset e dbseechanges servono con SQL.
Togli a questo punto il filtro
A questo punto? Idee? Io ho rigirato in più lati la cosa ma non è
cambiato niente, purtroppo, avrei preferito non proseguire\riprendere
questo post.
Sembra così semplice eppure ... non va ...
Grazie e buona giornata.
MCX

 Set db = Nothing
[CUT]
Ciao :)
Posso farti una domanda io?
Come mai dentro a "With rcs" trovo "rcs.filter", "rcs.Edit" e
"rcs.Update" anziché ".filter", ".Edit", e ".Update"???
Roberto

 ha scritto nel messaggio
news:a23b6b0a-9ca3-4c7a...@i29g2000prf.googlegroups.com...


idUt = Forms!frm_login.lst_Utente.Value

With rcs








Grazie e buona giornata.
MCX
A parte le imprecisioni del tuo codice non ho capito il problema...
Quanto ti hanno suggerito è corretto ma il tuo codice riporta la vecchia
procedura.
E quì mi sono perso...
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------

 --
Ciao Alex, hai ragione, ma ora non ho sottomano il codice corretto.
Diciamo che ho variato la parte
rcs.Filter = "!id_Utente = " & idUt
Me.FilterOn = True
Con l'help ricevuto ma invece che aggiornarsi il record tbl_Itenti
filtrato per Id_Utente, mi si aggiorna sempre il primo record.
Buona giornata.
Mauro


Ciao :)
Senti maaaa ... quel punto interrogativo lì ... non serve per negare
un confronto???
HTH Roberto


Non è il C che fà quello che dici...? E' un esclamativo in ogni caso.
Per giunta è contenuto all'interno di una stringa quindi verrebbe
valutato TESTO.
Di fatto però è strano avere un Esclamativo in quel posto... anche
perchè è una sintassi che si usa con il With Obj....End with, es:
With rs
   ' Impropriamente si può usare così
   !NomeCampo=Valore
   ' personalmente ritengo sempre meglio la versione esplicita:
   .Fields(NomeCampo).Value=Valore
End with
@Alex


Ciao Alex :)
Purtroppo non parlo C :( è solo che ricordavo che il "!" in un "LIKE"
può essere usato per negare un confronto, ma non ricordavo la sintassi
esatta.
Ci sono comunque sempre due cose che non capisco:
1) perché impostare FilterOn di una form se vogliamo filtrare in un
recordset?
2) l'help dice che la proprietà Filter di un recordset "Imposta o
restituisce un valore che determina i record inclusi in un oggetto
Recordset aperto successivamente. " e "Utilizzare la proprietà Filter
per applicare un filtro ad un oggetto Recordset di tipo dynaset,
snapshot o forward-only scrolling. È possibile utilizzare la proprietà
Filter per limitare il numero di record restituiti da un oggetto
esistente quando viene aperto un nuovo oggetto Recordset basato su un
oggetto Recordset esistente."
In soldoni:
Dim rsCompleto As DAO.Recordset, rsSubset As DAO.Recordset
Set rsCompleto = CurrentDb.OpenRecordset("SELECT * FROM Taskcode2;")
Debug.Print rsCompleto.Fields("Sigla") 'Restituisce "B"
rsCompleto.Filter = "Sigla >'L'"
Set rsSubset = rsCompleto.OpenRecordset
Debug.Print rsSubset.Fields("Sigla") 'Restituisce "M"
rsSubset.Close
rsCompleto.Close
Set rsCompleto = Nothing
Set rsSubset = Nothing
Roberto

 Roberto
@Alex

 A questo punto? Idee? 
Se non posti il codice... facciamo fatica ad indovinare... 
Ciao,
Max