Newsgroup: it.comp.appl.access
Titolo: query di aggiornamento

in un database ho due tabelle
backup1 e filiali 1 relazionate per un campo "ragcod"
Le due tabelle contengono in campo ufficio,  Questo campo risulta vuoto
nella tabella backup1. Così ho necessità di aggiornalo secondo i valori
contenuti in Filiali1
Fin qui ho usato una semplice query di aggiornamento. Ma considerato che il
dbase si compone sempre almeno di 300.000 record questa operazione prende
anche due/tre ore (uso un IBM pentium2 350 con 64 Mb ram)
il codice sql della mia query è il seguente:
UPDATE DISTINCTROW backup1 INNER JOIN FILIALI1 ON backup1.ragcod =
FILIALI1.ragcod SET backup1.ufficio = [FILIALI1]![ufficio];
se volessi trasferire questa istruzione in un modulo si potrebbe fare:
docmd.runsql(UPDATE DISTINCTROW backup1 INNER JOIN FILIALI1 ON
backup1.ragcod = FILIALI1.ragcod SET backup1.ufficio =
[FILIALI1]![ufficio];)
ma volendo usare il metodo DAO come si fa?
function aggiornaufficio()
dim archivi as database
dim tab1 as recordset
dim tab2 as recordset
dim mystring1 as string
dim mystring2 as string
set archivi=db engine.workspaces(0).databases(0)
set tab1=archivi.openrecordset("backup1", dbopentable)
set tab2=archivi.openrecordset("filiali1", dbopendynaset)
set mystring1=tab1("ufficio")
set mystring2=tab2("ufficio")
tab1.movefirst
do while not tab1.EOF
tab2.findfirtst[ragcod]
tab1.edit
tab1("ufficio")=tab2("ufficio")
tab1.update
tab1.movenext
loop
tab1.close
tab2.close
end function
se ho scritto molte cxxxxxe chiedo scusa, ma sto veramento muovendo i
primissimi passi e sono molto incerti.
RIngrazio sin d'ora chiunque potrà avere il tempo di leggere questo post.
A presto
Antonio
backup1("espr1")=backup1("importo")/1000000
end sub.
set archivi=dbengine.workspaces(0).databases()

function aggiornaufficio()
dim archivi as database
dim tab1 as recordset
dim tab2 as recordset
dim mystring as string
set archivi=db engine.workspaces(0).databases(0)
set tab1=archivi.openrecordset("backup1", dbopentable)
set tab2=archivi.openrecordset("filiali1", dbopendynaset)
tab1.movefirst
do while not tab1.EOF
mystring="[RagCod] = '" & tab1("RagCod") & "'"
tab2.findfirtst mystring
if not tab2.nomatch then
    tab1.edit
    tab1("ufficio")=tab2("ufficio")
    tab1.update
endif
tab1.movenext
loop
tab1.close
tab2.close
end function
Se RagCod e' un campo numerico sostituisci :
mystring="[RagCod] = '" & tab1("RagCod") & "'"
con 
mystring="[RagCod] = " & tab1("RagCod")
Ciao
Marco
-- 
Posted from [212.210.92.253] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

salve tutti il problema di oggi e:
ho creato 3 query di aggiornamento FE che mi modificano altrettanti campi.
Fin qui tutto bene ho provato le query singolarmente e funzionano in
aggiornamento, i problemi nascono quando attraverso una maschera di comando
gli chiedo di aggiornare vedi sotto..
    Dim strmsg As String, strtitolo As String, strclick As   String
    Dim intstile As Integer
    ......
    strclick = "aggior_form"
    DoCmd.OpenForm strclick
    DoCmd.Close
La maschera si chiude ma non aggiorna i dati richiesti. devo dichiarare le
query da codice?..
uso Win95,acess97SR1, Novell 4.12 come software di rete.
grazie per l'aiuto che vorrete darmi. fabrizio

 ha scritto nel messaggio
news:97429449...@spyke.goldnet.it...

Parli di query di aggiornamento (FE?) e il codice si riferisce ad una form;
c'é qualcosa che mi sfugge o ti sei confuso?
Comunque le query le puoi far eseguire anche con un bottone creato con
l'autocomposizione (per esempio)...
Ciao.