Newsgroup: it.comp.appl.access
Titolo: Accodamento dati da Access su SQL SERVER Express

In una applicazione ,devo accodare su tre tabelle in relazione 1-n  tra di 
loro
una serie di dati da altre tre tabelle .Le tabelle che ricevono i dati  sono 
in un sever SQL Server Express e sono linkate
tramite ODBC (origine macchina) sul FE mentre le tabelle che riversano i 
dati sono locali sul FE
.Da un modulo VBA eseguo la seguente isruzione
CurrentDb.Execute ("qryAccoda_DatiCampioni"), dbSeeChanges
CurrentDb.Execute ("qryAccoda_DatiAnalisi"), dbSeeChanges
CurrentDb.Execute ("qryAccoda_DatiRisultati"), dbSeeChanges
ora mi succede che solamente la prima qry di accodamento funziona
mentre le altre due in realtà non accodano un bel niente.Se provo a
lanciare le qry direttamente dopo aver eseguito il codice VBA mi viene
detto giustamente che è imposibile , ma sul server ed anche sulle tabelle
linkate dal server nno c'è traccia di records in questione.Per completare 
l'opera
se chiudo e riapro il FE e lancio direttamente le ultime due qry (una alla 
volta , quindi devo
richiudere il FE e riaprirlo) funzionano e popolano correttamente le tabelle 
sul server.
Queta è l'unica anomalia che ho riscontrato ,cioè per eseguire le ultime due 
qry, devo chiudere
e riaprire il FE.
Che ne pensate?
P.S.
Access 2000
SQL Server Express 2005
Ambedue sulla stessa macchina
Tabelle linkate con ODBC DNS di sistema.
XP Home edition
Morgan

 Morgan
Ciao
Creo che non eseguendo in maniera sincrona le query, dopo la prima prt la 
seconda e non trovando corrispondenza fallisce.
Prova a fare docmd.runsql e così controlli i vari passaggi. Se è così poi 
troviamo una soluzione diversa
-- 
-- 
Massimiliano Amendola
www.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access

 Che ne pensate?
A parte il suggerimento di MA, considera che in genere le query di comando
(update, delete,etc) di Access sono lente eseguite via ODBC.
Con poco sforzo puoi tradurre quelle stringhe SQL in query Pass Throght.
Ciao.

  Massimiliano Amendola
Ho fatto quanto mi hai indicato ed il problema rimane.
In effetti sembra un problema di sincro.
Ho provato ad eseguire anche il currentDB.execute
dichiarando esplicitamente db As DAO.Database
settando db=CurrentDB e poi chiudendolo stessa operazione ripetuta
per le tre query ma il problema non si risolve.
Rispondo qui anche ad Oscar.Avevo pensato di usare una query PT ma il
problema è che le tabelle che effettuano il caricamento sono in locale 
mentre
quelle su cui vengono riversati i dati sono sul server.Al momento vorrei 
mantenere
questa architettura ,anche se ,se sarà proprio necessario potro spostare 
anche
queste sul server.
Morgan

 Morgan
Scusa ma io ti avevo detto runsql perchè così sai quanto record stai 
accodando o lameno se parte l'accodamento, poi vediamo se arrivano



vedi che così si trova la causa??
Ora bisogna capire perchè la terza è out
Siccome tu hai fatto un passaggio alla volta non è un problema di sincronia
Piuttosto di violazione di chiave, probabilmente. Ma qusto lo puoi 
controllare solo tu
-- 



Le query ODBC "possono" essere eseguite in modo Asincrono
dbRunAsync Esegue la query in modo asincrono. Solo per oggetti
Connection e QueryDef di ODBCDirect.
Questo può significare che normalmente sono eseguite in modo
sincrono.....
@Alex


Mi sono perso un pezzo...., questo significa che se si esegue la query
in modalità sincrona è possibile attendere il suo termine in caso di
esecuzioni multiple interrogando la proprietà StillExecuting:
Indica se l'esecuzione di un'operazione asincrona, un metodo chiamato
con l'opzione dbRunAsync, è stata completata.
Saluti
@Alex

 @Alex
Mi sono perso un pezzo...., questo significa che se si esegue la query
in modalità sincrona è possibile attendere il suo termine in caso di
esecuzioni multiple interrogando la proprietà StillExecuting:
Indica se l'esecuzione di un'operazione asincrona, un metodo chiamato
con l'opzione dbRunAsync, è stata completata.
Mica ho capito molto.
Dovrei fare una cosa del genere?
CurrentDb.Execute ("qryAccoda_DatiCampioni"), dbSeeChanges
Do While qdfAccoda_DatiCampioni.StillExecute = True
Loop
CurrentDb.Execute ("qryAccoda_DatiAnalisi"), dbSeeChanges
etc etc.
Scusa ma mi sto perdendo.
Dovrei prima dichiarare
Dim qdfAccoda_DatiCampioni As DAO.QueryDef
Morgan 

 ha scritto nel messaggionews:1173368679....@v33g2000cwv.googlegroups.com...

Fai uno sforzo in più..... apri il visualizzatore Oggetti e cerca
StillExecuting sull'oggetto QueryDef e vedi gli esempi che trovi
nell'Help... non morde.
@Alex

 ha scritto nel messaggio 
news:1173389012.7...@p10g2000cwp.googlegroups.com...



@Alex
Aveccelo l'help in linea...domani me lo vedo cmq al lavoro
Cmq cercando in rete il metodo da te citato mi sembra di capire
che si utilizzi quando si lavora in maniera asincrona il che non dovrebbe 
essere il mio caso.
Connessioni asincrone e queries asincrone e bisogna anche
esplicitare tale comportamento con dbRunAsync come riportato
su un esempio in rete
sSQL = "DELETE * FROM authors WHERE au_fname = 'Bert'"
	Set qry = cn.CreateQueryDef("Test",sSQL)
	qry.Execute, dbRunAsync ' Execute asynchronously
	Do
		iCount = iCount + 1
		DoEvents
	Loop While qry.StillExecuting
	Debug.Print "Counted to " & CStr(iCount) & " while deleting"
	qry.Close
questo l'ho dedotto da un vecchio articolo,ma molto istruttivo su
http://www.avdf.com/may97/art_odbcdirect.html
tra l'altro usando il codice ,adattato,sul mio rodigno,
esegue la connessione ma al momento di exeguire la query
mi ritorna addiritura una chiamata non riuscita al driver odbc....
e tra l'altro il debbuger mi dice che dbRunAsync non lo riconosce.
Che mi sfugge?
Morgan