FORUM PER UTENTI MILLEWIN
Attenzione !
Per intervenire sul forum è necessario essere registrati e connessi.

L'Amministratore

****************************************************
“Se tu hai una mela ed io ho una mela, e ce la scambiamo, alla fine tu ed io avremo sempre una mela ciascuno.
Ma se tu hai un’idea ed io ho un’idea, e ce la scambiamo, allora avremo entrambi due idee”.

George Bernard Shaw
****************************************************

Unisciti al forum, è facile e veloce

FORUM PER UTENTI MILLEWIN
Attenzione !
Per intervenire sul forum è necessario essere registrati e connessi.

L'Amministratore

****************************************************
“Se tu hai una mela ed io ho una mela, e ce la scambiamo, alla fine tu ed io avremo sempre una mela ciascuno.
Ma se tu hai un’idea ed io ho un’idea, e ce la scambiamo, allora avremo entrambi due idee”.

George Bernard Shaw
****************************************************
FORUM PER UTENTI MILLEWIN
Vuoi reagire a questo messaggio? Crea un account in pochi click o accedi per continuare.

EX FUMATORI

3 partecipanti

Andare in basso

EX FUMATORI Empty EX FUMATORI

Messaggio  alex Mar 29 Nov 2016 - 17:52

Come si fa a estrarre i pazienti ex fumatori?
grazie
Alessandro Monachino

alex
Membro Junior
Membro Junior

Messaggi : 132
Punti : 5030
Voti per importanza dei messaggi : 1
Data d'iscrizione : 23.02.11

Torna in alto Andare in basso

EX FUMATORI Empty Re: EX FUMATORI

Messaggio  Admin Mer 30 Nov 2016 - 19:59

alex ha scritto:Come si fa a estrarre i pazienti ex fumatori?
grazie
Alessandro Monachino
Forse può esserti utile la seguente:

Select distinct p.cognome, p.nome, p.nascita, Years(p.nascita, Today()) eta, p.sesso,a.ac_val valore_fumo,
CAST((case a.ac_val
WHEN 'O' THEN 'fumatore occasionale'
WHEN 'V' THEN 'fumatore passivo'
WHEN '1' THEN 'meno di 10 sigarette al giorno'
WHEN '2' THEN 'tra 10 e 20 sigarette al giorno'
WHEN '3' THEN 'oltre 20 sigarette al giorno'
WHEN 'X' THEN 'mai fumato e mai fumerà'
WHEN 'N' THEN 'mai fumato'
WHEN 'E' THEN 'ex fumatore da oltre 1 anno'
WHEN 'M' THEN 'ex fumatore'
WHEN 'F' THEN 'ex forte fumatore da oltre 10 anni'
WHEN 'Z' THEN 'ex forte fumatore da oltre 1 anno'
WHEN 'U' THEN 'ex forte fumatore'
WHEN 'P' THEN 'fumatore di pipa'
WHEN 'S' THEN 'fumatore di sigaro'
END) as char(31)) Tipo_fumatore
FROM pazienti p , cart_pazpbl b, cart_accert a, nos_002 n
Where p.codice = b.codice And b.codice = a.codice And a.codice=n.codice
AND a.ac_des like 'FUMO'
AND decesso is null
AND (n.Pa_Drevoca is null OR n.Pa_Drevoca>TODAY())
AND n.Pa_medi like '%'      /*INSERIRE PRIMA DEL PERCENTO UNA PARTE INIZIALE DEL CODICE MEDICO*/
Order by 6,1,2
Admin
Admin
Admin
Admin

Messaggi : 537
Punti : 5482
Voti per importanza dei messaggi : 89
Data d'iscrizione : 20.02.11
Località : CASERTA

https://utentimillewin.forumattivo.it

Torna in alto Andare in basso

EX FUMATORI Empty Re: EX FUMATORI

Messaggio  alex Mer 30 Nov 2016 - 22:25

Admin ha scritto:
alex ha scritto:Come si fa a estrarre i pazienti ex fumatori?
grazie
Alessandro Monachino
Forse può esserti utile la seguente:

Select distinct p.cognome, p.nome, p.nascita, Years(p.nascita, Today()) eta, p.sesso,a.ac_val valore_fumo,
CAST((case a.ac_val
WHEN 'O' THEN 'fumatore occasionale'
WHEN 'V' THEN 'fumatore passivo'
WHEN '1' THEN 'meno di 10 sigarette al giorno'
WHEN '2' THEN 'tra 10 e 20 sigarette al giorno'
WHEN '3' THEN 'oltre 20 sigarette al giorno'
WHEN 'X' THEN 'mai fumato e mai fumerà'
WHEN 'N' THEN 'mai fumato'
WHEN 'E' THEN 'ex fumatore da oltre 1 anno'
WHEN 'M' THEN 'ex fumatore'
WHEN 'F' THEN 'ex forte fumatore da oltre 10 anni'
WHEN 'Z' THEN 'ex forte fumatore da oltre 1 anno'
WHEN 'U' THEN 'ex forte fumatore'
WHEN 'P' THEN 'fumatore di pipa'
WHEN 'S' THEN 'fumatore di sigaro'
END) as char(31)) Tipo_fumatore
FROM pazienti p , cart_pazpbl b, cart_accert a, nos_002 n
Where p.codice = b.codice And b.codice = a.codice And a.codice=n.codice
AND a.ac_des like 'FUMO'
AND decesso is null
AND (n.Pa_Drevoca is null OR n.Pa_Drevoca>TODAY())
AND n.Pa_medi like '%'      /*INSERIRE PRIMA DEL PERCENTO UNA PARTE INIZIALE DEL CODICE MEDICO*/
Order by 6,1,2
Prima di tutto scusa ma non ho pensato che uso postgres e non so se la query va bene ugualmente. Ottengo comunque questo messaggio:
errore sql,
sqlstate=42601
errore: errore di sintassi a o presso"%"
forse sbaglio a inserire "una parte iniziale del codice medico"?
grazie
Alessandro Monachino

alex
Membro Junior
Membro Junior

Messaggi : 132
Punti : 5030
Voti per importanza dei messaggi : 1
Data d'iscrizione : 23.02.11

Torna in alto Andare in basso

EX FUMATORI Empty Re: EX FUMATORI

Messaggio  Admin Mer 30 Nov 2016 - 22:36

alex ha scritto:
Admin ha scritto:
alex ha scritto:Come si fa a estrarre i pazienti ex fumatori?
grazie
Alessandro Monachino
Forse può esserti utile la seguente:

Select distinct p.cognome, p.nome, p.nascita, Years(p.nascita, Today()) eta, p.sesso,a.ac_val valore_fumo,
CAST((case a.ac_val
WHEN 'O' THEN 'fumatore occasionale'
WHEN 'V' THEN 'fumatore passivo'
WHEN '1' THEN 'meno di 10 sigarette al giorno'
WHEN '2' THEN 'tra 10 e 20 sigarette al giorno'
WHEN '3' THEN 'oltre 20 sigarette al giorno'
WHEN 'X' THEN 'mai fumato e mai fumerà'
WHEN 'N' THEN 'mai fumato'
WHEN 'E' THEN 'ex fumatore da oltre 1 anno'
WHEN 'M' THEN 'ex fumatore'
WHEN 'F' THEN 'ex forte fumatore da oltre 10 anni'
WHEN 'Z' THEN 'ex forte fumatore da oltre 1 anno'
WHEN 'U' THEN 'ex forte fumatore'
WHEN 'P' THEN 'fumatore di pipa'
WHEN 'S' THEN 'fumatore di sigaro'
END) as char(31)) Tipo_fumatore
FROM pazienti p , cart_pazpbl b, cart_accert a, nos_002 n
Where p.codice = b.codice And b.codice = a.codice And a.codice=n.codice
AND a.ac_des like 'FUMO'
AND decesso is null
AND (n.Pa_Drevoca is null OR n.Pa_Drevoca>TODAY())
AND n.Pa_medi like '%'      /*INSERIRE PRIMA DEL PERCENTO UNA PARTE INIZIALE DEL CODICE MEDICO*/
Order by 6,1,2
Prima di tutto scusa ma non ho pensato che uso postgres e non so se la query va bene ugualmente. Ottengo comunque questo messaggio:
errore sql,
sqlstate=42601
errore: errore di sintassi a o presso"%"
forse sbaglio a inserire "una parte iniziale del codice medico"?
grazie
Alessandro Monachino
Se sei in postazione singola non devi inserire niente, invece in gruppo si. Ad esempio     AND n.Pa_medi like '43%'     Attenzione a tenere gli apici e %. Funziona anche con postgres.
Admin
Admin
Admin
Admin

Messaggi : 537
Punti : 5482
Voti per importanza dei messaggi : 89
Data d'iscrizione : 20.02.11
Località : CASERTA

https://utentimillewin.forumattivo.it

Torna in alto Andare in basso

EX FUMATORI Empty Re: EX FUMATORI

Messaggio  Cervino Gio 1 Dic 2016 - 0:47

In  PostgreSQL , bisogna utilizzare una diversa funzione x l' età :

Select distinct  p.cognome ,  p.nome ,  p.nascita ,  Days( p.nascita , Today() )*24/8766  As  eta ,  p.sesso ,  a.ac_val  As  valore_fumo,
Cast(( CASE  a.ac_val
WHEN  'O'  THEN  'fumatore occasionale'
WHEN  'V'  THEN  'fumatore passivo'
WHEN  '1'  THEN  'meno di 10 sigarette al giorno'
WHEN  '2'  THEN  'tra 10 e 20 sigarette al giorno'
WHEN  '3'  THEN  'oltre 20 sigarette al giorno'
WHEN  'X'  THEN  'mai fumato e mai fumerà'
WHEN  'N'  THEN  'mai fumato'
WHEN  'E'  THEN  'ex fumatore da oltre 1 anno'
WHEN  'M'  THEN  'ex fumatore'
WHEN  'F'  THEN  'ex forte fumatore da oltre 10 anni'
WHEN  'Z'  THEN  'ex forte fumatore da oltre 1 anno'
WHEN  'U'  THEN  'ex forte fumatore'
WHEN  'P'  THEN  'fumatore di pipa'
WHEN  'S'  THEN  'fumatore di sigaro'  END)  As Char(31))  As  Tipo_fumatore
FROM  pazienti p , cart_pazpbl b , cart_accert a , nos_002 n
WHERE  p.codice = b.codice  AND  b.codice = a.codice  AND  a.codice=n.codice
AND ( a.ac_des  Like  'Fumo'  And  a.ac_val  Is Not Null  AND  a.data_open < Today()  And Not Exists ( Select a1.codice From cart_accert a1 Where a1.codice = a.codice And a1.ac_des Like 'Fumo' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid > a.rowid)) And a1.ac_val Is Not Null ))
AND  p.decesso is null  AND  (n.pa_drevoca is null OR n.pa_drevoca>Today())
AND  n.pa_medi  LIKE '%'
ORDER BY  7 , 1 , 2


Saluti ,  Sergio ,   Orzivecchi  BS

Cervino
Membro Junior
Membro Junior

Messaggi : 245
Punti : 5071
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 69
Località : Orzivecchi (BS)

Torna in alto Andare in basso

EX FUMATORI Empty Re: EX FUMATORI

Messaggio  alex Gio 1 Dic 2016 - 21:00

Cervino ha scritto:In  PostgreSQL , bisogna utilizzare una diversa funzione x l' età :

Select distinct  p.cognome ,  p.nome ,  p.nascita ,  Days( p.nascita , Today() )*24/8766  As  eta ,  p.sesso ,  a.ac_val  As  valore_fumo,
Cast(( CASE  a.ac_val
WHEN  'O'  THEN  'fumatore occasionale'
WHEN  'V'  THEN  'fumatore passivo'
WHEN  '1'  THEN  'meno di 10 sigarette al giorno'
WHEN  '2'  THEN  'tra 10 e 20 sigarette al giorno'
WHEN  '3'  THEN  'oltre 20 sigarette al giorno'
WHEN  'X'  THEN  'mai fumato e mai fumerà'
WHEN  'N'  THEN  'mai fumato'
WHEN  'E'  THEN  'ex fumatore da oltre 1 anno'
WHEN  'M'  THEN  'ex fumatore'
WHEN  'F'  THEN  'ex forte fumatore da oltre 10 anni'
WHEN  'Z'  THEN  'ex forte fumatore da oltre 1 anno'
WHEN  'U'  THEN  'ex forte fumatore'
WHEN  'P'  THEN  'fumatore di pipa'
WHEN  'S'  THEN  'fumatore di sigaro'  END)  As Char(31))  As  Tipo_fumatore
FROM  pazienti p , cart_pazpbl b , cart_accert a , nos_002 n
WHERE  p.codice = b.codice  AND  b.codice = a.codice  AND  a.codice=n.codice
AND ( a.ac_des  Like  'Fumo'  And  a.ac_val  Is Not Null  AND  a.data_open < Today()  And Not Exists ( Select a1.codice From cart_accert a1 Where a1.codice = a.codice And a1.ac_des Like 'Fumo' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid > a.rowid)) And a1.ac_val Is Not Null ))
AND  p.decesso is null  AND  (n.pa_drevoca is null OR n.pa_drevoca>Today())
AND  n.pa_medi  LIKE '%'
ORDER BY  7 , 1 , 2


Saluti ,  Sergio ,   Orzivecchi  BS
Sia la query di Giuseppe che la tua mi restituiscono il medesimo errore: errore sqlstate 42601 errore di sintassi a o presso "." sia che inserisca il codice medico prima di % sia che non metta niente
grazie
Alessandro

alex
Membro Junior
Membro Junior

Messaggi : 132
Punti : 5030
Voti per importanza dei messaggi : 1
Data d'iscrizione : 23.02.11

Torna in alto Andare in basso

EX FUMATORI Empty Re: EX FUMATORI

Messaggio  Admin Gio 1 Dic 2016 - 21:56

cancella tutto il rigo     AND  n.pa_medi  LIKE '%'
e riprova
Admin
Admin
Admin
Admin

Messaggi : 537
Punti : 5482
Voti per importanza dei messaggi : 89
Data d'iscrizione : 20.02.11
Località : CASERTA

https://utentimillewin.forumattivo.it

Torna in alto Andare in basso

EX FUMATORI Empty Re: EX FUMATORI

Messaggio  alex Gio 1 Dic 2016 - 22:36

Admin ha scritto:cancella tutto il rigo     AND  n.pa_medi  LIKE '%'
e riprova
Ora da' un altro errore: 42883, la funzione years(date, date,) non esiste
Alessandro

alex
Membro Junior
Membro Junior

Messaggi : 132
Punti : 5030
Voti per importanza dei messaggi : 1
Data d'iscrizione : 23.02.11

Torna in alto Andare in basso

EX FUMATORI Empty Re: EX FUMATORI

Messaggio  Cervino Gio 1 Dic 2016 - 23:01

alex ha scritto:
Sia la query di Giuseppe che la tua mi restituiscono il medesimo errore: errore sqlstate 42601 errore di sintassi a o presso "." sia che inserisca il codice medico prima di % sia che non metta niente
grazie              Alessandro
Le query vanno bene ( non contengono errori di sintassi o funzioni non riconosciute , a parte YEARS ) ;  l' errore sql : sqlstate 42601 indica la presenza di caratteri illegali ( non ammessi e /o accettati in pratica )  e Mi perseguita da un po' di tempo oramai : credo sia una questione di conflitto nei settaggi del set di caratteri fra W10 e vari programmi e/o Browser e/o siti web ;  ad esempio : ho testato la query in MU e PgAdmin3 o 4  e funziona perfettamente , la posto sul sito web forum attivo per Utenti di MW , la riprendo dal forum di MW sullo stesso e/o un altro PC , prova a rieseguirla
ed inesorabilmente ottengo in MW l' errore sqlstate 42601 od uno simile e cosi pure in PgAdmin .
per risolvere il problema devo aprire LibreOffice o OpenOffice Writer, incollare la query prelevata dal sito web in una pagina vuota di Writer, selezionare ad uno ad uno i vari caratteri anomali ( nel mio caso quasi sempre un rettangolino grigio ), dal menu selezionare --> edit / modifica --> Find & Replace / Trova e Sostituisci --> nel rettangolo inferiore Replace With / sostituisci con : inserisco uno spazio bianco --> premo il Pulsante Replace All / Rimpiazza Tutti  e poi Close / Chiudi 
( nelle query piu' complesse compare il messaggio che sono stati rimpiazzati fino a oltre mille caratteri e spesso si perde parte della formattazione per cui la query diventa poco leggibile ma per fortuna continua a funzionare ) : non resta che ricopiare la query in MU che riprende a funzionare
Riposto la query dopo aver eseguito per l' ennesima volta la procedura sopra descritta ( puo' appare complessa ma semplice in realtà anche se alquanto fastidiosa ) :

Select Distinct   p.cognome ,   p.nome ,   p.nascita ,   Days( p.nascita , Today()+1)*24/8766   As   eta ,   p.sesso ,  
a.ac_val   As   valore_fumo ,
Cast(( CASE   a.ac_val
WHEN   'O'   THEN   'fumatore occasionale'
WHEN   'V'   THEN   'fumatore passivo'
WHEN   '1'   THEN   'meno di 10 sigarette al giorno'
WHEN   '2'   THEN   'tra 10 e 20 sigarette al giorno'
WHEN   '3'   THEN   'oltre 20 sigarette al giorno'
WHEN   'X'   THEN   'mai fumato e mai fumerà'
WHEN   'N'   THEN   'mai fumato'
WHEN   'E'   THEN   'ex fumatore da oltre 1 anno'
WHEN   'M'   THEN   'ex fumatore'
WHEN   'F'   THEN   'ex forte fumatore da oltre 10 anni'
WHEN   'Z'   THEN   'ex forte fumatore da oltre 1 anno'
WHEN   'U'   THEN   'ex forte fumatore'
WHEN   'P'   THEN   'fumatore di pipa'
WHEN   'S'   THEN   'fumatore di sigaro'   END)   As Char(31))   As   Tipo_fumatore
FROM   pazienti p ,  nos_002 n , cart_accert a
WHERE    p.codice = n.codice     AND    p.codice = a.codice
AND   p.pa_convenzione  Like  'S'     AND    n.pa_medi   LIKE '%'
AND   Year( p.nascita)  Between  1900  And  2020
AND  (n.pa_drevoca Is Null  Or  n.pa_drevoca > Today()  Or  (n.pa_drevoca Between Today()-365
And Today()  And  motivo_revoca ='S' ))        AND   p.decesso  Is Null
AND ( a.ac_des   Like   'Fumo'   And   a.ac_val   Is Not Null   AND   a.data_open < Today()   And Not Exists ( Select a1.codice From cart_accert a1 Where a1.codice = a.codice And a1.ac_des Like 'Fumo' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid > a.rowid)) And a1.ac_val Is Not Null ))
ORDER BY   7 , 1 , 2


Saluti ,  Sergio

PS :  Suggerimenti al riquardo ?  grazie

Cervino
Membro Junior
Membro Junior

Messaggi : 245
Punti : 5071
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 69
Località : Orzivecchi (BS)

Torna in alto Andare in basso

EX FUMATORI Empty Re: EX FUMATORI

Messaggio  alex Ven 2 Dic 2016 - 8:33

Cervino ha scritto:
alex ha scritto:
Sia la query di Giuseppe che la tua mi restituiscono il medesimo errore: errore sqlstate 42601 errore di sintassi a o presso "." sia che inserisca il codice medico prima di % sia che non metta niente
grazie              Alessandro
Le query vanno bene ( non contengono errori di sintassi o funzioni non riconosciute , a parte YEARS ) ;  l' errore sql : sqlstate 42601 indica la presenza di caratteri illegali ( non ammessi e /o accettati in pratica )  e Mi perseguita da un po' di tempo oramai : credo sia una questione di conflitto nei settaggi del set di caratteri fra W10 e vari programmi e/o Browser e/o siti web ;  ad esempio : ho testato la query in MU e PgAdmin3 o 4  e funziona perfettamente , la posto sul sito web forum attivo per Utenti di MW , la riprendo dal forum di MW sullo stesso e/o un altro PC , prova a rieseguirla
ed inesorabilmente ottengo in MW l' errore sqlstate 42601 od uno simile e cosi pure in PgAdmin .
per risolvere il problema devo aprire LibreOffice o OpenOffice Writer, incollare la query prelevata dal sito web in una pagina vuota di Writer, selezionare ad uno ad uno i vari caratteri anomali ( nel mio caso quasi sempre un rettangolino grigio ), dal menu selezionare --> edit / modifica --> Find & Replace / Trova e Sostituisci --> nel rettangolo inferiore Replace With / sostituisci con : inserisco uno spazio bianco --> premo il Pulsante Replace All / Rimpiazza Tutti  e poi Close / Chiudi 
( nelle query piu' complesse compare il messaggio che sono stati rimpiazzati fino a oltre mille caratteri e spesso si perde parte della formattazione per cui la query diventa poco leggibile ma per fortuna continua a funzionare ) : non resta che ricopiare la query in MU che riprende a funzionare
Riposto la query dopo aver eseguito per l' ennesima volta la procedura sopra descritta ( puo' appare complessa ma semplice in realtà anche se alquanto fastidiosa ) :

Select Distinct   p.cognome ,   p.nome ,   p.nascita ,   Days( p.nascita , Today()+1)*24/8766   As   eta ,   p.sesso ,  
a.ac_val   As   valore_fumo ,
Cast(( CASE   a.ac_val
WHEN   'O'   THEN   'fumatore occasionale'
WHEN   'V'   THEN   'fumatore passivo'
WHEN   '1'   THEN   'meno di 10 sigarette al giorno'
WHEN   '2'   THEN   'tra 10 e 20 sigarette al giorno'
WHEN   '3'   THEN   'oltre 20 sigarette al giorno'
WHEN   'X'   THEN   'mai fumato e mai fumerà'
WHEN   'N'   THEN   'mai fumato'
WHEN   'E'   THEN   'ex fumatore da oltre 1 anno'
WHEN   'M'   THEN   'ex fumatore'
WHEN   'F'   THEN   'ex forte fumatore da oltre 10 anni'
WHEN   'Z'   THEN   'ex forte fumatore da oltre 1 anno'
WHEN   'U'   THEN   'ex forte fumatore'
WHEN   'P'   THEN   'fumatore di pipa'
WHEN   'S'   THEN   'fumatore di sigaro'   END)   As Char(31))   As   Tipo_fumatore
FROM   pazienti p ,  nos_002 n , cart_accert a
WHERE    p.codice = n.codice     AND    p.codice = a.codice
AND   p.pa_convenzione  Like  'S'     AND    n.pa_medi   LIKE '%'
AND   Year( p.nascita)  Between  1900  And  2020
AND  (n.pa_drevoca Is Null  Or  n.pa_drevoca > Today()  Or  (n.pa_drevoca Between Today()-365
And Today()  And  motivo_revoca ='S' ))        AND   p.decesso  Is Null
AND ( a.ac_des   Like   'Fumo'   And   a.ac_val   Is Not Null   AND   a.data_open < Today()   And Not Exists ( Select a1.codice From cart_accert a1 Where a1.codice = a.codice And a1.ac_des Like 'Fumo' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid > a.rowid)) And a1.ac_val Is Not Null ))
ORDER BY   7 , 1 , 2


Saluti ,  Sergio

PS :  Suggerimenti al riquardo ?  grazie
Niente da fare. Ho risolto in maniera un po' rozza utilizzando la query generica di MW per accertamenti, poi filtrando per accertamento  "fumo" e in seguito per risultati E or F ecc.  ho ottenuto la lista dei pazienti. Mi sembra di aver capito che il problema potrebbe essere W10. Provero' appena posso su un computer con W7.
Alessandro

alex
Membro Junior
Membro Junior

Messaggi : 132
Punti : 5030
Voti per importanza dei messaggi : 1
Data d'iscrizione : 23.02.11

Torna in alto Andare in basso

EX FUMATORI Empty Re: EX FUMATORI

Messaggio  alex Ven 2 Dic 2016 - 13:32

alex ha scritto:
Cervino ha scritto:
alex ha scritto:
Sia la query di Giuseppe che la tua mi restituiscono il medesimo errore: errore sqlstate 42601 errore di sintassi a o presso "." sia che inserisca il codice medico prima di % sia che non metta niente
grazie              Alessandro
Le query vanno bene ( non contengono errori di sintassi o funzioni non riconosciute , a parte YEARS ) ;  l' errore sql : sqlstate 42601 indica la presenza di caratteri illegali ( non ammessi e /o accettati in pratica )  e Mi perseguita da un po' di tempo oramai : credo sia una questione di conflitto nei settaggi del set di caratteri fra W10 e vari programmi e/o Browser e/o siti web ;  ad esempio : ho testato la query in MU e PgAdmin3 o 4  e funziona perfettamente , la posto sul sito web forum attivo per Utenti di MW , la riprendo dal forum di MW sullo stesso e/o un altro PC , prova a rieseguirla
ed inesorabilmente ottengo in MW l' errore sqlstate 42601 od uno simile e cosi pure in PgAdmin .
per risolvere il problema devo aprire LibreOffice o OpenOffice Writer, incollare la query prelevata dal sito web in una pagina vuota di Writer, selezionare ad uno ad uno i vari caratteri anomali ( nel mio caso quasi sempre un rettangolino grigio ), dal menu selezionare --> edit / modifica --> Find & Replace / Trova e Sostituisci --> nel rettangolo inferiore Replace With / sostituisci con : inserisco uno spazio bianco --> premo il Pulsante Replace All / Rimpiazza Tutti  e poi Close / Chiudi 
( nelle query piu' complesse compare il messaggio che sono stati rimpiazzati fino a oltre mille caratteri e spesso si perde parte della formattazione per cui la query diventa poco leggibile ma per fortuna continua a funzionare ) : non resta che ricopiare la query in MU che riprende a funzionare
Riposto la query dopo aver eseguito per l' ennesima volta la procedura sopra descritta ( puo' appare complessa ma semplice in realtà anche se alquanto fastidiosa ) :

Select Distinct   p.cognome ,   p.nome ,   p.nascita ,   Days( p.nascita , Today()+1)*24/8766   As   eta ,   p.sesso ,  
a.ac_val   As   valore_fumo ,
Cast(( CASE   a.ac_val
WHEN   'O'   THEN   'fumatore occasionale'
WHEN   'V'   THEN   'fumatore passivo'
WHEN   '1'   THEN   'meno di 10 sigarette al giorno'
WHEN   '2'   THEN   'tra 10 e 20 sigarette al giorno'
WHEN   '3'   THEN   'oltre 20 sigarette al giorno'
WHEN   'X'   THEN   'mai fumato e mai fumerà'
WHEN   'N'   THEN   'mai fumato'
WHEN   'E'   THEN   'ex fumatore da oltre 1 anno'
WHEN   'M'   THEN   'ex fumatore'
WHEN   'F'   THEN   'ex forte fumatore da oltre 10 anni'
WHEN   'Z'   THEN   'ex forte fumatore da oltre 1 anno'
WHEN   'U'   THEN   'ex forte fumatore'
WHEN   'P'   THEN   'fumatore di pipa'
WHEN   'S'   THEN   'fumatore di sigaro'   END)   As Char(31))   As   Tipo_fumatore
FROM   pazienti p ,  nos_002 n , cart_accert a
WHERE    p.codice = n.codice     AND    p.codice = a.codice
AND   p.pa_convenzione  Like  'S'     AND    n.pa_medi   LIKE '%'
AND   Year( p.nascita)  Between  1900  And  2020
AND  (n.pa_drevoca Is Null  Or  n.pa_drevoca > Today()  Or  (n.pa_drevoca Between Today()-365
And Today()  And  motivo_revoca ='S' ))        AND   p.decesso  Is Null
AND ( a.ac_des   Like   'Fumo'   And   a.ac_val   Is Not Null   AND   a.data_open < Today()   And Not Exists ( Select a1.codice From cart_accert a1 Where a1.codice = a.codice And a1.ac_des Like 'Fumo' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid > a.rowid)) And a1.ac_val Is Not Null ))
ORDER BY   7 , 1 , 2


Saluti ,  Sergio

PS :  Suggerimenti al riquardo ?  grazie
Niente da fare. Ho risolto in maniera un po' rozza utilizzando la query generica di MW per accertamenti, poi filtrando per accertamento  "fumo" e in seguito per risultati E or F ecc.  ho ottenuto la lista dei pazienti. Mi sembra di aver capito che il problema potrebbe essere W10. Provero' appena posso su un computer con W7.
Alessandro
Allora su win 7 la query di Sergio funziona, ma estrae tutti i p. del gruppo, non solo i miei, mentre quella di Giuseppe non da piu' errori ,ma estrae 0 pazienti. Credo che queste considerazioni vi possano essere utili.
saluti
Alessandro

alex
Membro Junior
Membro Junior

Messaggi : 132
Punti : 5030
Voti per importanza dei messaggi : 1
Data d'iscrizione : 23.02.11

Torna in alto Andare in basso

EX FUMATORI Empty Re: EX FUMATORI

Messaggio  Cervino Sab 3 Dic 2016 - 0:28

alex ha scritto:
Allora su win 7 la query di Sergio funziona, ma estrae tutti i p. del gruppo, non solo i miei, mentre quella di Giuseppe non da piu' errori ,ma estrae 0 pazienti. Credo che queste considerazioni vi possano essere utili.  saluti  Alessandro
Risultato atteso in quanto Non hai inserito il Tuo codice Medico e/o Nome Utente (quello con cui accedi a MW ;  prova con :


Select Distinct p.cognome, p.nome , p.nascita , Days( p.nascita , Today()+1)*24/8766 As eta ,



p.sesso, a.ac_val As valore_fumo ,



Cast(( CASE a.ac_val



WHEN 'O' THEN 'fumatore occasionale'



WHEN 'V' THEN 'fumatore passivo'



WHEN '1' THEN 'meno di 10 sigarette al giorno'



WHEN '2' THEN 'tra 10 e 20 sigarette al giorno'



WHEN '3' THEN 'oltre 20 sigarette al giorno'



WHEN 'X' THEN 'mai fumato e mai fumerà'



WHEN 'N' THEN 'mai fumato'



WHEN 'E' THEN 'ex fumatore da oltre 1 anno'



WHEN 'M' THEN 'ex fumatore'



WHEN 'F' THEN 'ex forte fumatore da oltre 10 anni'



WHEN 'Z' THEN 'ex forte fumatore da oltre 1 anno'



WHEN 'U' THEN 'ex forte fumatore'



WHEN 'P' THEN 'fumatore di pipa'



WHEN 'S' THEN 'fumatore di sigaro' END) As Char(31)) As Tipo_fumatore



FROM (( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice )



LEFT Outer JOIN v_utenti u ON n.pa_medi = u.userid )



LEFT Outer JOIN cart_accert a ON p.codice = a.codice



WHERE u.codice_regionale Like '%' AND u.nome Like '%'



AND p.pa_convenzione = 'S' AND Year( p.nascita) Between 1920 And 2020



AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between



Date( Today())-365 And Today() And motivo_revoca = 'S')) And p.decesso Is Null



AND ( a.ac_des Like 'Fumo' And a.ac_val Is Not Null AND a.data_open < Today()



And Not Exists ( Select a1.codice From cart_accert a1 Where a1.codice = a.codice And a1.ac_des Like 'Fumo' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid > a.rowid)) And a1.ac_val Is Not Null ))



ORDER BY 7 , 1 , 2







Saluti ,  Sergio

PS : ho cercato di formattare la query in modo evitare l' inserimento del Carattere ASCII  DEC 160 : Non-breaking space al posto Carattere ASCII  DEC 32 : space , per evitare il blocco della query ;   ... avro'  fortuna ?

Cervino
Membro Junior
Membro Junior

Messaggi : 245
Punti : 5071
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 69
Località : Orzivecchi (BS)

Torna in alto Andare in basso

EX FUMATORI Empty Re: EX FUMATORI

Messaggio  alex Sab 3 Dic 2016 - 9:13

Cervino ha scritto:
alex ha scritto:
Allora su win 7 la query di Sergio funziona, ma estrae tutti i p. del gruppo, non solo i miei, mentre quella di Giuseppe non da piu' errori ,ma estrae 0 pazienti. Credo che queste considerazioni vi possano essere utili.  saluti  Alessandro
Risultato atteso in quanto Non hai inserito il Tuo codice Medico e/o Nome Utente (quello con cui accedi a MW ;  prova con :


Select Distinct p.cognome, p.nome , p.nascita , Days( p.nascita , Today()+1)*24/8766 As eta ,



p.sesso, a.ac_val As valore_fumo ,



Cast(( CASE a.ac_val



WHEN 'O' THEN 'fumatore occasionale'



WHEN 'V' THEN 'fumatore passivo'



WHEN '1' THEN 'meno di 10 sigarette al giorno'



WHEN '2' THEN 'tra 10 e 20 sigarette al giorno'



WHEN '3' THEN 'oltre 20 sigarette al giorno'



WHEN 'X' THEN 'mai fumato e mai fumerà'



WHEN 'N' THEN 'mai fumato'



WHEN 'E' THEN 'ex fumatore da oltre 1 anno'



WHEN 'M' THEN 'ex fumatore'



WHEN 'F' THEN 'ex forte fumatore da oltre 10 anni'



WHEN 'Z' THEN 'ex forte fumatore da oltre 1 anno'



WHEN 'U' THEN 'ex forte fumatore'



WHEN 'P' THEN 'fumatore di pipa'



WHEN 'S' THEN 'fumatore di sigaro' END) As Char(31)) As Tipo_fumatore



FROM (( pazienti p LEFT Outer JOIN nos_002 n ON p.codice = n.codice )



LEFT Outer JOIN v_utenti u ON n.pa_medi = u.userid )



LEFT Outer JOIN cart_accert a ON p.codice = a.codice



WHERE u.codice_regionale Like '%' AND u.nome Like '%'



AND p.pa_convenzione = 'S' AND Year( p.nascita) Between 1920 And 2020



AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between



Date( Today())-365 And Today() And motivo_revoca = 'S')) And p.decesso Is Null



AND ( a.ac_des Like 'Fumo' And a.ac_val Is Not Null AND a.data_open < Today()



And Not Exists ( Select a1.codice From cart_accert a1 Where a1.codice = a.codice And a1.ac_des Like 'Fumo' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid > a.rowid)) And a1.ac_val Is Not Null ))



ORDER BY 7 , 1 , 2







Saluti ,  Sergio

PS : ho cercato di formattare la query in modo evitare l' inserimento del Carattere ASCII  DEC 160 : Non-breaking space al posto Carattere ASCII  DEC 32 : space , per evitare il blocco della query ;   ... avro'  fortuna ?
OK, ora funziona anche con win 10
grazie
Alessandro

alex
Membro Junior
Membro Junior

Messaggi : 132
Punti : 5030
Voti per importanza dei messaggi : 1
Data d'iscrizione : 23.02.11

Torna in alto Andare in basso

EX FUMATORI Empty Re: EX FUMATORI

Messaggio  Contenuto sponsorizzato


Contenuto sponsorizzato


Torna in alto Andare in basso

Torna in alto

- Argomenti simili

 
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.