Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

append query in database dal percorso variabile

1 view
Skip to first unread message

il Cava

unread,
Jul 20, 2008, 4:23:13 PM7/20/08
to
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


Karl Donaubauer

unread,
Jul 21, 2008, 9:20:06 AM7/21/08
to
il Cava wrote:
> 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
> ...

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


il Cava

unread,
Jul 22, 2008, 11:25:23 AM7/22/08
to
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


Karl Donaubauer

unread,
Jul 22, 2008, 11:47:59 AM7/22/08
to
il Cava wrote:
> ...

> 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

Quale tipo di dato ha il campo PazienteID nella tabella?
Se si tratta di un testo, prova con:

CurrentDb.Execute _
"INSERT INTO [" & Forms![F0-3]!Destinazione & "].Paziente" & _
" SELECT * FROM Paziente" & _

" WHERE PazienteID='" & Forms![F0-3]!PazienteID & "'"

> ...
> 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.

> ...

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

--

il Cava

unread,
Jul 29, 2008, 12:02:11 PM7/29/08
to
> CurrentDb.Execute _
> "INSERT INTO [" & Forms![F0-3]!Destinazione & "].Paziente" & _
> " SELECT * FROM Paziente" & _
> " 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

0 new messages