Newsgroup: it.comp.appl.access
Titolo: Eseguire una query da vba

Buonasera a tutti, se qualcuno mi può mostrare come eseguire una query di 
accomodamento da vba ne sarei molto grato.
Gazie per l'aiuto. 


Se costruisci il comando SQL puoi fare così :
    Dim sSQL As String
    sSQL = "INSERT INTO PATTI ( idPatto, idSOCIO, idCOLF, patto ) " & _
                        "SELECT " & tProxPatto & " AS [idp], " & _
                                 cmbTestDatore & " AS [ids], " & _
                                   cmbTestColf & " AS [idc], " & _
                                    tProxPatto & " AS [pat];"
    DoCmd.RunSQL sSQL
questa inserisce in una tabella(PATTI) quattro campi(idPatto, idSOCIO, 
idCOLF, patto ), passandogli il valore di quattro variabili calcolate nel 
codice.
Se invece hai già la query allora la puoi lanciare con :
    DoCmd.OpenQuery "qPulisciVideoANNO"
questa esegue la query(qPulisciVideoANNO), qualsiasi tipo essa sia!
IvanDaBologna 

 ha scritto nel messaggio 
news:45997374$0$19104$4faf...@reader4.news.tin.it...

Sei forte. GRAZIE 

 ha scritto nel messaggio 
news:45997374$0$19104$4faf...@reader4.news.tin.it...

Scusa, un'altra cosa, sono riscito ad eseguire la queri di accomodameto con 
la seconda opzione che mi hai messo a disposizione (grazie), ma c'è un modo 
per evitare il messaggio di avviso che si sta eseguendo una query di 
accomodamento? cioe io desidererei eseguire la query senza ottenere avvisi 
prima dell'esecuzione, eseguirla e basta.
Ciao grazie 

 ha scritto nel messaggio 
news:nFemh.96842$Fk1.5...@twister2.libero.it...

quello è un mmessaggio che devi 'regolare' dalle Opzioni.
Menu Strumenti-->Opzioni...
vai sulla scheda Modifica/Trova e levi la spunta alle tre opzioni di 
Conferma. Dovrebbe sparire il messaggio di conferma ... ;))
IvanDaBologna 

 avvisi prima dell'esecuzione, eseguirla e basta.
Vedi 
www.donkarl.com/it
 FAQ 2.4  Eliminare i messaggi d'avviso
soprattuttto l'ultimo paragrafo sul metodo Execute.
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
 

 ha scritto nel messaggio 
news:4vtfsaF...@mid.individual.net...

Ok grazie 

 ha scritto nel messaggio 
news:4599853a$0$19093$4faf...@reader4.news.tin.it...

IVAN scusami, un'altra cosa.
Cosa inserisco nella query di accomodamento per fare in modo che filtri solo 
il record corrente in una form?
Ciao e grazie per la pazienza 

 ha scritto nel messaggio 
news:4tvmh.96464$uv5.1...@twister1.libero.it...

Allora,
la query si chiama di ACCODAMENTO ovvero mette in CODA uno o più record..
Però questa domanda non la capisco ... vuoi filtrare il record corrente, mi 
dai più informazioni....
Se vuoi filtrare avrai sicuramente un campo che indica il record, ma cosa 
vuoi ottenere ?
Spiega e vediamo di risolvere ...
IvanDaBologna

 ha scritto nel messaggio 
news:459aaa9c$0$4257$4faf...@reader1.news.tin.it...

Ciao e grazie ancora.
Io ho una Form dove inserisco le generalità di una persona, poi con un 
collegamento di stampa unione apro un file di word e stampo il documento.
Allora, quando visualizzo la form vorrei che il record "corrente" sia lo 
stesso che si trovi nella query, cossicchè io aprendo il file di word con 
stampa unione (chiaramente collegato con la query), riesca ad ottenere il 
documento con le generalità del record corrente.
Altrimenti, quando il file di word si apre devo scorrere tutti i record fino 
a trovare quello che mi serve.
In poche parole apro una form e visualizzo dei dati, in quel momento gli 
stessi dati che visualizzo devono essere presenti nella query.
Se ad esempio con la rotellina del mouse mi sposto di un record, anche la 
query si deve comportare di conseguenza cambiando record e memorizzando 
quello corrente.
Spero di essermi riuscito a spiegare.
Ciao


Mi manca un punto, la query che usi per la stampa unione.
Comunque sia in ogni query puoi 'filtrare' i records che vuoi tramite la 
condizione WHERE
quindi dovresti inserire nella tua query questa clausola, qualcosa del tipo
    sSQL = "SELECT patto, dom, lun, mar, mer, gio, ven, sab " & _
            "FROM Pattuizioni " & _
            "WHERE (((patto)=" & numPatto & "));"
però ho un dubbio.
Tu parli di query, ma la stampa unione preleva i dati da una TABELLA 
(credo).
In questo caso ti converrebbe usare una tabella temporanea, con la stessa 
struttura di quella anagrafica che usi già, in cui vai a mettere il record o 
i records che vuoi passare alla stampa unione.
In sintesi:
1) cancelli tutti i records dalla tabella temporanea
2) dalla maschera prevedi un pulsante che ACCODA il  record (se è nuovo) 
alla tabella anagrafica e con un'altra query ACCODA il record corrente anche 
alla tabella temporanea. Col pulsante puoi ACCODARE più records, a tua 
scelta.
3) lanci la stampa unione che avrà come tabella origine la tabella 
temporanea.
Se non ho capito nulla, dimmelo!
IvanDaBologna 

 ha scritto nel messaggio 
news:459ae0c0$0$4255$4faf...@reader1.news.tin.it...

Si, bravissimo hai centrato, è proprio quello che voglio fare.
Allora il codice che hai descritto lo devo aggiungere a quello della query, 
per cui al codice creato automaticamente da access aggiungo solo la 
condizione
"WHERE (((patto)=" & numPatto & ")); giusto?
Poi, io desidererei che quando visualizzo un record corrente o inserisco e 
salvo un nuovo record, la query accodi automaticamente i dati alla tabella 
temporanea.
Cioe, io visualizzo un record, in quel momento la query provvede ad 
aggiornare la tabella, cancellando da quest'ultima l'eventuale record 
visualizzato prima, senza pulsante accoda.
Se questo non è possible, allora vuol dire che usero il pulsante accoda, ma 
come lo devo prorammare?
Quale codice devo inserie in vba?
Ciao, grazie 

 Ciao, grazie
Per una risposta precisa dovrei vedere la struttura e i nomi delle tue 
tabelle e campi.
Piů o meno scriverai qualcosa del genere, nell'evento Su click del bottone
Sub botACCODA_Click
        DaCopiare = ID '  id Del record Corrente
        sq3 = "INSERT INTO tabellaTemp " & _
            "SELECT Anagrafica.* " & _
            "FROM Anagrafica " & _
            "WHERE (((Anagrafica.Id )=" & DaCopiare & "));"
        DoCmd.RunSQL sq3 ' ---- copio il vecchio cedo
End Sub
In pratica usi l'ID del record corrente per copiare dall'Anagrafica il 
record corrispondente e metterlo nella tabella temporanea tabellaTemp.
L' asterico di SELECT Anagrafica.*  significa che vanno copiati tutti i 
campi, e quindi č necessario che le due tabelle abbiano la stessa struttura 
di campi. Al massimo la tabella temporanea puň avere campi in piů, ma non in 
meno.
IvanDaBologna 

 ha scritto nel messaggio 
news:459babeb$0$19099$4faf...@reader4.news.tin.it...

Ciao Ivan, ho provato a inserire il codice e lo modificato come mi hai detto 
(vedi sotto), soltanto che quando premo il pulsante mi esce una INPUTBOX che 
mi chiede di inserire l'ID. Se inserisco l'ID del record corrente mi accoda 
tutti i record esistenti, invece se inserisco un ID diverso da quello 
corrente, ma comunque presente nella tabella di origine, non mi accoda 
nessun record.
daCopiare = Id '  id Del record Corrente
        sq3 = "INSERT INTO tProvvGuidaQ " & _
            "SELECT tProvvGuida.* " & _
            "FROM tProvvGuida " & _
            "WHERE (((tProvvGuida.Id )=" & daCopiare & "));"
        DoCmd.RunSQL sq3 ' ---- copio il vecchio cedo
Ciao e grazie per la pazienza 

>            "WHERE (((Anagrafica.Id )=" & DaCopiare & "));"
L'ID č quello della tabella Angrafica, che dovrebbe corrispondere al campo 
indice del record corrente nella maschera da cui effettui l'operazione.
Se non si chiama ID, cambia il nome per riflettere quello che gli hai dato 
tu.
IvanDaBologna
PS
ci siamo vicini .... ;))

 ci siamo vicini .... ;))
Si l'ID č giusto, cioč il campo nella form si chiama appunto "ID".
Ciao.


ok per l'ID, allora funziona tutto?
Hai cambiato il nome della tabella nella stringa SQL?
IvanDaBologna 

>
L'Id č giuto e questo va bene.
Perdonami saro' proprio di coccio ma non riesco a capire.
Questo č quello che ho inserito sotto il pulsante accoda:
daCopiare = id
        sq3 = "INSERT INTO tProvvGuidaQ " & _    ' questa č la mia tabella 
temporanea in piu' di quella originale c'č la "Q"
            "SELECT tProvvGuida.* " & _                    ' questa č la 
tabella originale
            "FROM tProvvGuida " & _
            "WHERE (((tProvvGuida.Id )=" & daCopiare & "));"
        DoCmd.RunSQL sq3 ' ---- copio il vecchio cedo
ho coinvolto anche la tabella temporanea.
il problema che ti ho spiegato sopra permane.


 ha scritto nel messaggio 
news:1ofnh.99954$Fk1.5...@twister2.libero.it...

Senti se ti va di darmi una mano posso inviarti il database cosi facciamo 
prima che ne dici? 

 prima che ne dici?
ma l'unica cosa che non và è che usi il nome di una sola tabella, invece 
nella query le tabelle sono due!
INSERT INTO nella tabella temporanea e tutto il resto dalla TABELLA DI 
ORIGINE!
Leva SENZAQUESTO e spedisci.
IvanDaBologna 

 ha 
scritto nel messaggio 
news:459df244$0$16158$4faf...@reader3.news.tin.it
...

Ciao ivan, ti ho inviato il database 
zippato.


 


Comunque le tabelle se vedi bene sono 
due:


 


una è INSERT INTO 
tProvvGuida
Q


 


       l'altra è 
SELECT 
tProvvGuida
 senza la "
Q
" finale.


 


Ciao.


 


PS 


Che pazienza che hai



Ciao ivan, ti ho inviato il database zippato.
Comunque le tabelle se vedi bene sono due:
una è INSERT INTO tProvvGuidaQ
       l'altra è SELECT tProvvGuida senza la "Q" finale.
Ciao.
PS
Che pazienza che hai
-----------
ciao ho fatto un'errore (aiutato dall'antispam), ho cancellato il tuo 
messaggio, ma dopo aver decompresso il database. Rimandami un msg in privato 
così ti spedisco le modifiche provvisorie.
IvanDaBologna 

 ha scritto nel messaggio 
news:459e60dd$0$4246$4faf...@reader1.news.tin.it...

Ciao Ivan ho ricevuto il msg con il database è uno spettacolo.
Grazie per gli aggiustamenti sono ad OK.
Non ho capito bene, devo rimandarti un msg con il database?
Fammi sapere.
Grazie.