Newsgroup: it.comp.appl.access
Titolo: MSDE e DAO non esegue update

Obiettivo: popolare una tabella di n records con numeri progressivi (tabella 
msde collegata via odbc)
Utilizzo il seguente codice:
Dim massimo As Variant
massimo = DMax("[progressivo]", "dbo_tbl_inventario") + 1
Dim wrk As Workspace
Dim Conn As DAO.Connection
Dim RsDst As DAO.Recordset
Dim i As Integer
Set RsDst = CurrentDb.OpenRecordset("dbo_tbl_inventario", dbOpenDynaset)
For i = 1 To 10
  RsDst.AddNew
  RsDst!progressivo = i
  RsDst!descrizione = "computer"
  RsDst.Update
DoEvents
Next i
RsDst.Close
Set RsDst = Nothing
End Sub
Mi viene restituito errore su RsDst.Update
La cosa strana è che questo codice invece funziona benissimo per inserire un 
solo record:
Dim massimo As Variant
massimo = DMax("[progressivo]", "dbo_tbl_inventario") + 1
Dim wrk As Workspace
Dim Conn As DAO.Connection
Dim RsDst As DAO.Recordset
Dim Sqltext As String
Set wrk = CreateWorkspace("", "Admin", "", dbUseODBC)
Set Conn = wrk.OpenConnection("Conn", dbDriverCompleteRequired, , 
"ODBC;DRIVER=Sql 
Server;Server=server;DATABASE=socimas;UID=sa;PWD=pippo;DSN=msde_master;")
Sqltext = "dbo.tbl_inventario"
Set RsDst = CurrentDb.OpenRecordset("dbo_tbl_inventario", dbOpenDynaset, 
dbSeeChanges)
RsDst.AddNew
RsDst!progressivo = massimo
RsDst!descrizione = "computer"
RsDst.Update
RsDst.Close
Set RsDst = Nothing
Conn.Close
Set Conn = Nothing
Set wrk = Nothing
Me.Requery
End Sub
-- 
ciroteo
MC
http://www.marco5x.net/usenet/index.html
http://www.freewebz.com/iosononiubbo/iosononiubbo.htm#quotare
 

 ha scritto nel messaggio 
news:d6ukg9$rfh$1...@hulme.interac.it...

Ciao ciroteo,
per aggiornare dei campi dovresti utilizzare Edit e Update anzichè AddNew e 
Update...
 

 ha scritto nel messaggio 
news:r5Cke.1430471$35.53...@news4.tin.it...

In ogni caso nel tuo codice non leggo MoveNext quindi ti ritrovi fermo sul 
primo record.... 

 ha scritto nel messaggio 
news:N7Cke.1430496$35.53...@news4.tin.it...

Io devo aggiungere n records. Cioè ho una tabella vuota e vorrei popolarla 
con un tot numero di records a partire da un numero e inserire un contatore 
manuale.
Provo a vedere il move next ...

 ha scritto nel messaggio 
news:d6urfu$rs0$1...@hulme.interac.it...

Prova ad aggiungere RsDst.MoveNext dopo RsDst.Update...
RsDst.Update
RsDst.MoveNext
così ti sposti sul record successivo... 

 Utilizzo il seguente codice:
[CUT]
Lascia perdere quella roba....! ;-)
Io ti dico come farei io, e secondo me è la cosa più
corretta.
1)Apri una Transazione
2)Crei un Ciclo per popolare la tabella
3)All'interno del Ciclo Crei una QueryPassTrought temporanea che
  esegue l'INSERT
4)Chiudi la Transazione
Saluti.
Se hai problemi sono 3 righe di codice questa sera ti passo le
2 routine :
1° per la gestione della QueryPasstrought
2° la principale per l'uso delle transazionei la puoi trovare
   nel mio sito alla sezione General(è l'ultimo inserimento)
La gestione delle transazioni ha l'enorme vantaggio di eseguire
l'Insert alla fine tutto in un colpo unico velocizzando notevolmente
l'azione.
Ciao
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio 
news:1e135b927648527b06...@mygate.mailgate.org...

Grazie alex, quando hai voglia di mandarmi il codice fallo pure, cercherò di 
guardarlo domani.

 cosě ti sposti sul record successivo...
Grazie gaspare funziona, ma vuole il  dbSeeChanges, per campi identity.


 ha scritto nel messaggio 
news:d6v51b$sei$1...@hulme.interac.it...

Di nulla figurati :-)
Buona giornata 

    nel mio sito alla sezione General(è l'ultimo inserimento)
Qual'è il tuo sito?
Ciao!
-- 
Insostenibile è il peso della conoscenza, se questa toglie poesia all'
Essere Umano.
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Ciao!
http://www.mantuanet.it/alessandro.baraldi/


 guardarlo domani.
Scusa ma ieri non ho avuto tempo.
La funzione sotto esegue una Query(PT) ACTION, quindi
l'INSERT che dicevi.
Creati il ciclo che dicevi ed utilizza il codice Transazionalr
della FAQ sotto alla sezione GENERAL:
1.33 Sfruttare le Transazioni per velocizzare Action Queries 
Non dovresti avere problemi.
'Tratto da Articolo Microsoft Knowledge Base - 210323  
Function ExecuteSPT (sqltext As String, connectstring As String)
' Purpose: Esegue una temporanea query pass-through.
' Accepts: sqltext: Stringa SQL da eseguire.
'          connectstring: Connection string, deve seguire il predicato
"ODBC;".
' Returns: nothing.
Dim mydb As DAO.Database, myq As DAO.QueryDef
Set mydb = DBEngine.Workspaces(0).Databases(0)
' Create a temporary QueryDef object that is not saved.
Set myq = mydb.CreateQueryDef("")
' Set the ReturnsRecords property to False in order to use the
' Execute method.
myq.returnsrecords = False
myq.connect = connectstring
myq.sql = sqltext
myq.Execute
myq.Close
set mydb=nothing
set myq=nothing
End Function
