PDA

Visualizza la versione completa : [Access - ADO] aggiornamento campi tabella


eng
26-01-2003, 14:20
Preciso che non ho esperienza con Access. Uso il Access XP 2002.

Vorrei associare una funzione al clik di un button di una maschera
in modo tale che numeri progressivamente il campo Prot (numerico) di una tabella RegistroAcquisti . Praticamente un'UPDATE.

Potete indicarmi il codice ?
So che sono 6-7 righe, ma sono cosi' imbranato...

grazie
EnG

eng
26-01-2003, 15:35
up

eng
26-01-2003, 17:43
up

eng
27-01-2003, 19:03
up forza!

Mychy
28-01-2003, 01:04
Set rs = New ADODB.Recordset
sql="select * from nometabella where nomecampo=condizioni"
rs.Open sql,CurrentProject.Connection, adOpenDynamic, adLockOptimistic
do while not rs.eof
rs.nomecampo=rs.nomecampo+1
rs.Update
rs.movenext
loop
rs.Close
Set rs = Nothing

Prova così dovrebbe funzionare.

Mychy
28-01-2003, 01:07
Naturalmente devi fare un riferimento alla libreria Microsoft Activex Data Objects

eng
28-01-2003, 10:04
scusa Michy, ma sono proprio a terra con Access...

il tuo esempio non riesco a comprenderlo...

Ho provato con questo, guardando un po' i support della microsoft.



Public Sub Comando90_Click()
Dim i As Integer
Dim dbs As DAO.Database <<<<<<<<<<<<<<<<<<<<<<
Dim rst As DAO.Recordset
Set dbs = CurrentDb()
i = 1
Set rst = dbs.OpenRecordset("RegistroAcquisti")
Do Until rst.EOF
With rst
.Edit
.Field(1) = i
.Update
End With
i = i + 1
rst.MoveNext
Loop
rst.Close
End Sub


ma usando il file .mdb cormato Access 2000 sotto Access 2002 XP mi da errore di tipo non definito alla linea marcata <<<< sopra.

help! grazie!

Mychy
28-01-2003, 10:23
Tu stai usando DAO (che io non ho quasi mai usato), mentre io nell'esempio ho usato ADO.

L'errore forse è dovuto al fatto che manca il riferimento alla libreria.


Prova il codice che ti ho postato funziona.

Set rs = New ADODB.Recordset
sql="select * from nometabella where nomecampo=condizioni"
rs.Open sql,CurrentProject.Connection, adOpenDynamic, adLockOptimistic
i=1
do while not rs.eof
rs.nomecampo=i
rs.Update
rs.movenext
i=i+1
loop
rs.Close
Set rs = Nothing

eng
28-01-2003, 23:39
Originariamente inviato da Mychy
Tu stai usando DAO (che io non ho quasi mai usato), mentre io nell'esempio ho usato ADO.

L'errore forse è dovuto al fatto che manca il riferimento alla libreria.


Prova il codice che ti ho postato funziona.

Set rs = New ADODB.Recordset
sql="select * from nometabella where nomecampo=condizioni"
rs.Open sql,CurrentProject.Connection, adOpenDynamic, adLockOptimistic
i=1
do while not rs.eof
rs.nomecampo=i
rs.Update
rs.movenext
i=i+1
loop
rs.Close
Set rs = Nothing

si', dovrebbe funzionare, se non che ci ho messo un errore


Public Sub Comando90_Click()
Dim i As Integer
Set rs = New ADODB.Recordset
sql = "select * from RegistroAcquisti"
rs.Open sql, CurrentProject.Connection, adOpenDynamic, adLockOptimistic
i = 1
rs.MoveNext
Do While Not rs.EOF
rs.Prot = i <<<<<<<<<
rs.Update
rs.MoveNext
i = i + 1
Loop
rs.Close
Set rs = Nothing
End Sub


Prot e' un campo numerico e il debugger mi dà 'Prorietà o metodo non supportati dall'oggetto'
I è un integer....quindi non capisco....perché non vada...mah!

Ti posto in PVT il link da dove downlodare ,se hai 1 minuto libero, il file mdb.

Mychy
29-01-2003, 02:06
Public Sub Comando90_Click()
Dim i As Integer
Set rs = New ADODB.Recordset
sql = "select * from RegistroAcquisti"
rs.Open sql, CurrentProject.Connection, adOpenDynamic, adLockOptimistic
i = 1
rs.MoveNext <----- perchè lì?
Do While Not rs.EOF
rs.Prot = i <<<<<<<<<
rs.Update
rs.MoveNext
i = i + 1
Loop
rs.Close
Set rs = Nothing
End Sub


Elimina rs.MoveNext
Ho visto solo ora che mi hai scritto in pvt ora vado a vedere il tuo link !

Loading