Ammammata
2024-04-18 07:12:47 UTC
ieri ho chiesto su microsoft.public.it.office.access , ma di là non c'è
tutta la competenza che trovo qui :-) ergi ri-posto, con minime
correzioni per chiarire meglio la cosa
in una stampa (in SAP B1) uso questa query:
Select c.docnum, b.numatcard, b.U_Man_date_inv, 'txt' Testo
into #tmp
from inv1 a
inner join odln b On a.U_I_BaseEntry = b.docentry
inner join OINV c On c.DocEntry = a.DocEntry
where c.docnum = '300100'
Select distinct
STUFF((Select distinct ' ' + CHAR(10) +
cast(cast(substring(T1.numatcard,1,6) as int) as varchar(100)) + ' dd.
' + format(t1.u_man_date_inv, 'dd.MM.yyyy')
from #tmp T1
where T1.Testo = T2.Testo And t1.docnum = t2.docnum
For XML PATH('')),1,3,'')
from #tmp t2
drop table #tmp
in pratica legge ls testata di tutte le bolle associate a una fattura
(300100), recupera il numero di riferimento (p.e. 000008/2024/V2 oppure
000193/2024/V2) e lo mette in una tabella temporanea, poi legge la
tabella temporanea e mette tutti i numeri riferimento opportunamente
rielaborati in fila, con la data a seguito
ottengo una cosa così:
148 dd. 21.02.2024
17 dd. 15.01.2024
175 dd. 29.02.2024
176 dd. 29.02.2024
177 dd. 29.02.2024
193 dd. 05.03.2024
228 dd. 15.03.2024
266 dd. 26.03.2024
39 dd. 23.01.2024
40 dd. 23.01.2024
46 dd. 24.01.2024
47 dd. 24.01.2024
8 dd. 10.01.2024
è evidente che i numeri di riferimento sono ordinati "alfabeticamente"
e questo non piace
ho letto qua e là sul web, ci sono millanta soluzioni, ce ne fosse una
che ha funzionato :-(
nota bene (ho scoperto cosa non funziona, adesso cerco una
alternativa):
"order by" non me lo accetta nella seconda parte, quella che legge la
tabella temporanea, quindi ho provato a metterlo nella prima, quella
che legge le bolle, ma non funziona, vedi qui sotto le righe con
177-175-176-148
la prima query inizia così:
Select c.docnum, cast(substring(b.numatcard,1,6) as int) as NumAtCard,
b.U_Man_date_inv, 'txt' Testo
...
e finisce con
order by cast(substring(b.numatcard,1,6) as int)
e ottengo:
docnum NumAtCard U_Man_date_inv Testo
300100 8 2024-01-10 00:00:00.000 txt
300100 17 2024-01-15 00:00:00.000 txt
300100 39 2024-01-23 00:00:00.000 txt
300100 47 2024-01-24 00:00:00.000 txt
300100 40 2024-01-23 00:00:00.000 txt
300100 46 2024-01-24 00:00:00.000 txt
300100 177 2024-02-29 00:00:00.000 txt
300100 175 2024-02-29 00:00:00.000 txt
300100 176 2024-02-29 00:00:00.000 txt
300100 176 2024-02-29 00:00:00.000 txt
300100 148 2024-02-21 00:00:00.000 txt
300100 193 2024-03-05 00:00:00.000 txt
300100 228 2024-03-15 00:00:00.000 txt
300100 232 NULL txt
300100 266 2024-03-26 00:00:00.000 txt
ho provato *senza creare* la tabella temporanea e funziona:
Select b.numatcard
from inv1 a
inner join odln b On a.U_I_BaseEntry = b.docentry
inner join OINV c On c.DocEntry = a.DocEntry
where c.docnum = '300100'
order by b.numatcard
ottengo
numatcard
000008/2024/V2
000017/2024/V2
000039/2024/V2
000040/2024/V2
000046/2024/V2
000047/2024/V2
000148/2024/V2
000175/2024/V2
000176/2024/V2
000176/2024/V2
000177/2024/V2
000193/2024/V2
000228/2024/V2
000232/2024/V2
000266/2024/V2
ora si tratta di capire come fargli creare la tabella temporanea in
modo che sia ordinata in partenza...
oppure una alternativa a tutto questo ambaradan per avere la lista che
mi serve
ringrazio in anticipo :-)
tutta la competenza che trovo qui :-) ergi ri-posto, con minime
correzioni per chiarire meglio la cosa
in una stampa (in SAP B1) uso questa query:
Select c.docnum, b.numatcard, b.U_Man_date_inv, 'txt' Testo
into #tmp
from inv1 a
inner join odln b On a.U_I_BaseEntry = b.docentry
inner join OINV c On c.DocEntry = a.DocEntry
where c.docnum = '300100'
Select distinct
STUFF((Select distinct ' ' + CHAR(10) +
cast(cast(substring(T1.numatcard,1,6) as int) as varchar(100)) + ' dd.
' + format(t1.u_man_date_inv, 'dd.MM.yyyy')
from #tmp T1
where T1.Testo = T2.Testo And t1.docnum = t2.docnum
For XML PATH('')),1,3,'')
from #tmp t2
drop table #tmp
in pratica legge ls testata di tutte le bolle associate a una fattura
(300100), recupera il numero di riferimento (p.e. 000008/2024/V2 oppure
000193/2024/V2) e lo mette in una tabella temporanea, poi legge la
tabella temporanea e mette tutti i numeri riferimento opportunamente
rielaborati in fila, con la data a seguito
ottengo una cosa così:
148 dd. 21.02.2024
17 dd. 15.01.2024
175 dd. 29.02.2024
176 dd. 29.02.2024
177 dd. 29.02.2024
193 dd. 05.03.2024
228 dd. 15.03.2024
266 dd. 26.03.2024
39 dd. 23.01.2024
40 dd. 23.01.2024
46 dd. 24.01.2024
47 dd. 24.01.2024
8 dd. 10.01.2024
è evidente che i numeri di riferimento sono ordinati "alfabeticamente"
e questo non piace
ho letto qua e là sul web, ci sono millanta soluzioni, ce ne fosse una
che ha funzionato :-(
nota bene (ho scoperto cosa non funziona, adesso cerco una
alternativa):
"order by" non me lo accetta nella seconda parte, quella che legge la
tabella temporanea, quindi ho provato a metterlo nella prima, quella
che legge le bolle, ma non funziona, vedi qui sotto le righe con
177-175-176-148
la prima query inizia così:
Select c.docnum, cast(substring(b.numatcard,1,6) as int) as NumAtCard,
b.U_Man_date_inv, 'txt' Testo
...
e finisce con
order by cast(substring(b.numatcard,1,6) as int)
e ottengo:
docnum NumAtCard U_Man_date_inv Testo
300100 8 2024-01-10 00:00:00.000 txt
300100 17 2024-01-15 00:00:00.000 txt
300100 39 2024-01-23 00:00:00.000 txt
300100 47 2024-01-24 00:00:00.000 txt
300100 40 2024-01-23 00:00:00.000 txt
300100 46 2024-01-24 00:00:00.000 txt
300100 177 2024-02-29 00:00:00.000 txt
300100 175 2024-02-29 00:00:00.000 txt
300100 176 2024-02-29 00:00:00.000 txt
300100 176 2024-02-29 00:00:00.000 txt
300100 148 2024-02-21 00:00:00.000 txt
300100 193 2024-03-05 00:00:00.000 txt
300100 228 2024-03-15 00:00:00.000 txt
300100 232 NULL txt
300100 266 2024-03-26 00:00:00.000 txt
ho provato *senza creare* la tabella temporanea e funziona:
Select b.numatcard
from inv1 a
inner join odln b On a.U_I_BaseEntry = b.docentry
inner join OINV c On c.DocEntry = a.DocEntry
where c.docnum = '300100'
order by b.numatcard
ottengo
numatcard
000008/2024/V2
000017/2024/V2
000039/2024/V2
000040/2024/V2
000046/2024/V2
000047/2024/V2
000148/2024/V2
000175/2024/V2
000176/2024/V2
000176/2024/V2
000177/2024/V2
000193/2024/V2
000228/2024/V2
000232/2024/V2
000266/2024/V2
ora si tratta di capire come fargli creare la tabella temporanea in
modo che sia ordinata in partenza...
oppure una alternativa a tutto questo ambaradan per avere la lista che
mi serve
ringrazio in anticipo :-)
--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........