Newsgroup: it.comp.appl.access
Titolo: append query in database dal percorso variabile

Ciao Bel NG,
torno a chiedere consigli per un problemino che non riesco a risolvere da 
solo.
Nel db principale ho una maschera nella quale seleziono il record da 
accodare in uno dei tre database esterni (tutti fatti con Access97); nella 
stessa maschera ho una casella combinata con la quale scelgo il percorso e 
il database di destinazione; i tre percorsi pre-determinati sono contenuti 
in una tabella con un solo campo (Destinazione.Destinazione). Nel comando 
SQL che esegue la query di accodamento pero' non riesco a rendere operativa 
la stringa contenuta nella casella combinata.
In pratica il comando appare cosi':
INSERT INTO [[Forms]![F0-3]![Destinazione]].Paziente ( Paziente )
SELECT Paziente.PazienteID, *
FROM Paziente
WHERE (((Paziente.PazienteID)=[Forms]![F0-3]![PazienteID]));
Forms![F0-3]![Destinazione] nelle mie intenzioni sarebbe la stringa che 
specifica il percorso del database p.e. f:\Praxis\Praxis
Come posso fare?
Grazie in anticipo,
Davide 

 ...
Il solo percorso non basta. Da dove viene il nome (e l'estensione) del
database? Prima hai scritto che anche questo si trova nella casella.
In ogni caso per usare una variabile devi eseguire la stringa con VBA.
Se capisco bene l'intenzione del tuo enunciato SQL la sintassi in
principio (cioè nome+estensione incluso nel controllo) sarebbe:
Currentdb.Execute _
"INSERT INTO [" & Forms![F0-3]!Destinazione & "].Paziente" & _
" SELECT * FROM Paziente" & _
" WHERE PazienteID=" & Forms![F0-3]!PazienteID
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
 

Gentilissimo Karl,
grazie infinite per la risposta cosi' veloce e paziente.
A causa della mia ignoranza in fatto di VBA non riesco eseguire il comando 
che mi hai suggerito; e' probabilmente un errore di compilazione o di 
sintassi.
Nella maschera F0-3 sono presenti due controlli: PazienteID associato al 
campo Paziente.PazienteID; Destinazione non associato e nel quale compare il 
percorso completo del database di destinazione (p.e. g:\Praxis\Copia di 
Praxis.mdb).
Nel pulsante di comando "SPOSTA" all'evento su click ho associato la routine 
evento da te suggerita:
Private Sub istruzioni_Click()
CurrentDb.Execute _
"INSERT INTO [" & Forms![F0-3]!Destinazione & "].Paziente" & _
" SELECT * FROM Paziente" & _
" WHERE PazienteID=" & Forms![F0-3]!PazienteID
End Sub
Cosi' scritta mi appare un messaggio di errore:
errore di run-time 3464
tipi di dati non corrispondenti nell'espressione criterio
Siccome il comando SQL che funziona bene e' questo...
INSERT INTO Paziente IN 'g:\Praxis\Copia di Praxis.mdb'
SELECT Paziente.PazienteID AS PazienteID, *
FROM Paziente
WHERE (((Paziente.PazienteID)=[Forms]![F0-3]![PazienteID]));
... ho modificato la sintassi della routine evento in questo modo...
Private Sub istruzioni_Click()
CurrentDb.Execute _
"INSERT INTO Paziente IN " & Forms![F0-3]!Destinazione & " & _
" SELECT Paziente.PazienteID AS PazienteID, *
" FROM Paziente" & _
" WHERE PazienteID=" & Forms![F0-3]!PazienteID
End Sub
... e adesso il messaggio di errore che compare e':
errore di compilazione, errore di sintassi.
Siccome finora sono riuscito a ottenere buoni risultati con le macro, non ho 
avuto la necessita' di imparare il VBA.
Puoi darmi un suggerimento su come superare quest'ostacolo?
Grazia ancora per la disponibilita',
Davide 

 ...
Mancano gli apostrofi prima e dopo il percorso. Prova così:
CurrentDb.Execute _
"INSERT INTO Paziente IN '" & Forms![F0-3]!Destinazione & _
"' SELECT * FROM Paziente" & _
" WHERE PazienteID=" & Forms![F0-3]!PazienteID
-- 


 " WHERE PazienteID='" & Forms![F0-3]!PazienteID & "'"
Cosi' funziona perfettamente!!!   :-)
Grazie di cuore, Karl, senza di te non so come avrei potuto risolvere questo 
scoglio!
Certo che e' un bello stimolo a imparare il VBA, cosa farei senza questo 
fantastico newsgroup?!?!
Un saluto e grazie ancora,
Davide