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

Alias (concatenazione) su query select in routine vba

117 views
Skip to first unread message

Pietro66

unread,
Oct 10, 2011, 1:41:39 PM10/10/11
to
Buonasera.
Ho creato e salvato una query con un alias che concatena tre campi
separandoli con la /, da visualizzazione sql:

[NomeOper] & "/" & [TipoPrestazione] & "/" & [CognPaz] AS OperPrestPaz

ora per creare la stringa sql che poi voglio usare per aprire un
recordset DAO ho provato cosᅵ:

NomeOper" & " &" & "/" & "& " & "TipoPrestazione" & " &" & "/" & "& " &
"CognPaz AS OperPrestPaz"

ma nel debug.print vedo che esce

NomeOper &/& TipoPrestazione &/& CognPaz AS OperPrestPaz

infatti errore 3075 errore di sintassi operatore mancante

in precedenza avevo tentato in altro modo che mi dava errore mi
sembra 13 giᅵ nella assegnazione della stringa alla variabile string
Temo di avere delle lacune nella gestione di apici, doppi ecc :-(

Grazie a chi mi potrᅵ dare dei suggerimenti su come costruire questa
stringa
Saluti
Pietro66

MA

unread,
Oct 11, 2011, 2:51:03 AM10/11/11
to
"Pietro66" ha scritto nel messaggio
news:4e932e52$0$1374$4faf...@reader1.news.tin.it...

_______Risposta:
la stringa in VBA ᅵ uguale a quella della query

"SELECT " & [NomeOper] & "/" & [TipoPrestazione] & "/" & [CognPaz] & " AS
OperPrestPaz FROM tuatabella"

MA


Bruno Campanini

unread,
Oct 11, 2011, 2:51:22 AM10/11/11
to
on 10-10-11, Pietro66 supposed :

> Buonasera.
> Ho creato e salvato una query con un alias che concatena tre campi
> separandoli con la /, da visualizzazione sql:
>
> [NomeOper] & "/" & [TipoPrestazione] & "/" & [CognPaz] AS OperPrestPaz
>
> ora per creare la stringa sql che poi voglio usare per aprire un recordset
> DAO ho provato cosᅵ:
>
> NomeOper" & " &" & "/" & "& " & "TipoPrestazione" & " &" & "/" & "& " &
> "CognPaz AS OperPrestPaz"

"... NomeOper & '/' & TipoPrestazione & '/' & ... "

Bruno


Pietro66

unread,
Oct 11, 2011, 11:47:35 AM10/11/11
to
Il 10/10/11 19.41, Pietro66 ha scritto:
CUT
> Saluti
> Pietro66
>

Ringrazio Bruno e MA, col loro suggerimento ho superato quel punto,
ora emerge un errore diverso
3131 errore di sintassi nella clausola FROM
forse dovrei aprire un altro thread?
comunque questa � la stringa completa

"SELECT t_Slots.StartSlot, t_Slots.EndSlot, t_Prestazioni.DtPrest," & _
"NomeOper & '/' & TipoPrestazione & '/' & CognPaz AS OperPrestPaz,
t_Slots.IdSlot" & _
" FROM t_TipiPrestazione INNER JOIN t_Slots INNER JOIN t_Pazienti INNER
JOIN t_Operatori" & _
" INNER JOIN t_Prestazioni ON t_Operatori.IdOperatore =
t_Prestazioni.Operatore" & _
" ON t_Pazienti.IdPaz = t_Prestazioni.Paziente ON t_Slots.IdSlot =
t_Prestazioni.Slot" & _
" ON t_TipiPrestazione.IdTipoPrestazione = t_Prestazioni.TipoPrest" & _
" WHERE t_Prestazioni.DtPrest Between" & _
"#" & Format(DataDa, "mm/dd/yyyy") & "#" & _
" AND #" & Format(DataAl, "mm/dd/yyyy") & "#" & _
" ORDER BY t_Prestazioni.DtPrest, t_Slots.IdSlot"

Saluti

Karl Donaubauer

unread,
Oct 11, 2011, 2:43:53 PM10/11/11
to
Pietro66 wrote:
> ...

> 3131 errore di sintassi nella clausola FROM
> ...

> " FROM t_TipiPrestazione INNER JOIN t_Slots INNER JOIN t_Pazienti
> INNER JOIN t_Operatori" & _
> " INNER JOIN t_Prestazioni ON t_Operatori.IdOperatore =
> t_Prestazioni.Operatore" & _
> " ON t_Pazienti.IdPaz = t_Prestazioni.Paziente ON t_Slots.IdSlot =
> t_Prestazioni.Slot" & _
> " ON t_TipiPrestazione.IdTipoPrestazione = t_Prestazioni.TipoPrest" &
> ...

Non puoi scrivere una seria di JOIN e dopo la seria di ON.
Invece dopo ogni JOIN deve seguire la relativa parte ON.
Inoltre mancano delle parentesi.

Perch� non crea la query come query normale con Access
e poi studia il risultato nella vis. SQL della query o fai
copia/incolla al codice?
Cos� vedi la sintassi giusta per la clausola FROM.

--
Ciao
Karl
*********
Access FAQ: http://www.donkarl.com/it


Pietro66

unread,
Oct 11, 2011, 3:35:10 PM10/11/11
to
Il 11/10/11 20.43, Karl Donaubauer ha scritto:

> Pietro66 wrote:
>> ...
>> 3131 errore di sintassi nella clausola FROM
>> ...
>> " FROM t_TipiPrestazione INNER JOIN t_Slots INNER JOIN t_Pazienti
>> INNER JOIN t_Operatori"& _
>> " INNER JOIN t_Prestazioni ON t_Operatori.IdOperatore =
>> t_Prestazioni.Operatore"& _
>> " ON t_Pazienti.IdPaz = t_Prestazioni.Paziente ON t_Slots.IdSlot =
>> t_Prestazioni.Slot"& _
>> " ON t_TipiPrestazione.IdTipoPrestazione = t_Prestazioni.TipoPrest"&
>> ...
>
> Non puoi scrivere una seria di JOIN e dopo la seria di ON.
> Invece dopo ogni JOIN deve seguire la relativa parte ON.
> Inoltre mancano delle parentesi.
>
> Perchᅵ non crea la query come query normale con Access

> e poi studia il risultato nella vis. SQL della query o fai
> copia/incolla al codice?
> Cosᅵ vedi la sintassi giusta per la clausola FROM.
>
questo ᅵ il codice SQL della query salvata, riconosco la mia ignoranza
su sql ma i join li mette cosᅵ e la query restituisce i record:


SELECT t_Slots.StartSlot, t_Slots.EndSlot, t_Prestazioni.DtPrest,
[NomeOper] & "/" & [TipoPrestazione] & "/" & [CognPaz] AS OperPrestPaz,
t_Slots.IdSlot
FROM t_TipiPrestazione INNER JOIN (t_Slots INNER JOIN (t_Pazienti INNER
JOIN (t_Operatori INNER JOIN t_Prestazioni ON t_Operatori.IdOperatore =
t_Prestazioni.Operatore) ON t_Pazienti.IdPaz = t_Prestazioni.Paziente)
ON t_Slots.IdSlot = t_Prestazioni.Slot) ON
t_TipiPrestazione.IdTipoPrestazione = t_Prestazioni.TipoPrest
WHERE (((t_Prestazioni.DtPrest) Between #10/10/2011# And #10/14/2011#))
ORDER BY t_Prestazioni.DtPrest, t_Slots.IdSlot;

Pietro66

unread,
Oct 11, 2011, 3:39:59 PM10/11/11
to
Il 11/10/11 21.35, Pietro66 ha scritto:

> Il 11/10/11 20.43, Karl Donaubauer ha scritto:
cut
>> Inoltre mancano delle parentesi.
>>
cut

perfetto, messe le parentesi, funziona
grazie infinite Karl

Pietro

Pietro66

unread,
Oct 11, 2011, 3:43:43 PM10/11/11
to

Karl Donaubauer

unread,
Oct 11, 2011, 3:48:24 PM10/11/11
to
Pietro66 wrote:
> Il 11/10/11 20.43, Karl Donaubauer ha scritto:
>> Pietro66 wrote:
>>> ...
>>> 3131 errore di sintassi nella clausola FROM
>>> ...
>>> " FROM t_TipiPrestazione INNER JOIN t_Slots INNER JOIN t_Pazienti
>>> INNER JOIN t_Operatori"& _
>>> " INNER JOIN t_Prestazioni ON t_Operatori.IdOperatore =
>>> t_Prestazioni.Operatore"& _
>>> " ON t_Pazienti.IdPaz = t_Prestazioni.Paziente ON t_Slots.IdSlot =
>>> t_Prestazioni.Slot"& _
>>> " ON t_TipiPrestazione.IdTipoPrestazione = t_Prestazioni.TipoPrest"&
>>> ...
>> Cos� vedi la sintassi giusta per la clausola FROM.
>>
> questo � il codice SQL della query salvata, riconosco la mia ignoranza
> su sql ma i join li mette cos� e la query restituisce i record:
> ...

> FROM t_TipiPrestazione INNER JOIN (t_Slots INNER JOIN (t_Pazienti
> INNER JOIN (t_Operatori INNER JOIN t_Prestazioni ON
> t_Operatori.IdOperatore = t_Prestazioni.Operatore) ON
> t_Pazienti.IdPaz = t_Prestazioni.Paziente) ON t_Slots.IdSlot =
> t_Prestazioni.Slot) ON t_TipiPrestazione.IdTipoPrestazione =
> t_Prestazioni.TipoPrest

La sequenza di JOIN e ON � un po' strana, ma se funziona cos�
nella query devi solo aggiungere tutte le 6 parentesi anche al
tuo codice.

0 new messages