Newsgroup: it.comp.appl.access
Titolo: Creare un Ciclo per Accodare dati

Buongiorno gente
dopo aver passato metà mattina a lasciarmi aprire gli orizonti da pezzi di
codice trovati nel NG
arrivo con la mia domanda da ignorante!
ho due db Web e Base
Web raccoglie dati attraverso maschere in ASP
Base recupera i dati presenti in Web e li riutilizza in vari modi
In entrambe ci sono tabelle con gli stessi campi e quasi lo stesso nome (in
web c'è Pippo e in Base c'è PippoB e le due tabelle sono uguali) ma NB se
serve allo scopo pippoB può diventare Pippo
Per una serie di motivi le operazioni fatte sui dati in Base non devono
modificare in alcun modo i dati in Web per cui Attraverso codice VBA
seguendo un preciso criterio devo prendere dei dati dalla tabella PIPPO in
web e accodarli alla tabella PIPPO in Base
Per fare questo uso il seguente codice (che funziona)
    stSql1 = "INSERT INTO PippoB SELECT Pippo.* FROM tbCriterio, Pippo IN '"
& percorso & "' WHERE ((TbCriterio.Criterio) Like 6);"
    DoCmd.RunSQL stSql1
(dove percorso è la posizione del dbWeb e prende il suo valore da un
controllo nella  maschera)
La domanda è: "considerato che le tabelle per cui accodare i dati sono 15 si
riesce a scrivere il codice in modo da non ripetere 15 volte le righe qua
sopra ma inserirle piuttosto in un Ciclo?"
Quello che mi è venuto in mente è un una cosa tipo il codice che ho trovato
nel NG per svuotare tutte le tabelle in un solo click, dove con un
istruzione SQL seleziono le tabelle che mi interessano nel DB web(hanno un
prefisso comune per cui potrei fare ..AND Name Like kkk*) e con altra
istruzione selezionole stesse nel dbBase
associo le prime a Tda e le seconde a Ta
e poi scrivo la striga sopra come
   stSql1 = "INSERT INTO" & Ta &"SELECT"& Tda &".* FROM tbCriterio,"& Tda
&"IN '" & percorso & "' WHERE ((TbCriterio.Criterio) Like 6);"
Ma ho come la sensazione che così non possa funzionare e quindi mi rivoglo a
voi per  suggerimenti più concreti e intelligenti
Grazie a tutti
-- 
Nadia
x me leva "no schifezze"
+++++++++++++++++++++++++++
La vita è troppo preziosa
per lasciarla nelle mani del destino
                        -Deus Ex Machina-
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

 ha scritto nel messaggio
news:3f66f480@shknews01...

usa le MySysObjects
interroghi la tabella MySysObjects ti trovi all'interno le tabelle che ti
servono e usi un ciclo while su quelle tabelle.
ad esempio:
rst = dbs.openrecordset("MySysObjects",dbopendynaset) 'così ne puoi fare
quello che vuoi
rst.movelast
rst.movefirst
do while not rst.eof
    if rst!type = 6 then ' prendo le tabelle collegate
       Ta = rst!name & "B"
        Tda = rst!name
      stSql1 = "INSERT INTO " & Ta &" SELECT "& Tda &".* FROM tbCriterio,"&
Tda &"IN '" & percorso & "' WHERE ((TbCriterio.Criterio) Like 6);"
     DoCmd.RunSQL stSql1
    end if
    rst.movenext
loop
spero di essere stato d'aiuto


ASSOLUTAMENTE Sì  - 1000 grazie
ora riesco ad accodare i dati in un colpo solo e senza bisogno di collegare
le tabelle
L'unica perplessità che ho è che perchè funzioni ho dovuto inserire in
stSql1 sia il percorso del db corrente (quello detto Base) che quello del db
da cui prelevo i dati (Web)
stSql = "INSERT INTO " & Ta & " IN '" & percorsoB & "' SELECT " & Tda & ".*
FROM zsNodoWeb," & Tda & " IN '" & percorsoA & "' WHERE
((zsNodoWeb.id_stato) Like 6);"
E mi chiedevo se non sia invece possibile in qualche modo dirgli che le
tabelle in cui sta accodando i dati sono nel db corrente senza bisogno di
specificarne il percorso
ancora grazie



questa mi giunge nuova...
non so perchè, se scoprirò qualcosa ti farò sapere...

Cerchiamo di quotare lo stretto indispensabile.
-- 
Gabriele Bertolucci
PBsoft 
www.pbsoft.it