ERRORE QUERY VB.NET

di il
12 risposte

ERRORE QUERY VB.NET

Buon pomeriggio a tutti,

su Visual Studio 2010 sto tentando di eseguire questa query:

SELECT TES.DO11_NUMREG_CO99, TES.DO11_NUMDOC, TES.DO11_DATADOC, TES.DO11_CLIFOR_CG44, AN.CG16_RAGSOANAG,
AD.DO14_VETTORE1_MG14, ANV.CG16_RAGSOANAG AS 'VETTORE', TESORD.DO18_DATACONSINT, TESORD.DO18_DATACONS,
AD.DO14_CODPORTO_MG91, DE.MG22_DESTRAGSOC, AN.CG16_PROV, DE.MG22_DESTPROV FROM DO11_DOCTESTATA AS TES 
INNER JOIN CG44_CLIFOR AS CL ON TES.DO11_DITTACF_CG44 = CL.CG44_DITTA_CG18 AND TES.DO11_CLIFOR_CG44 = CL.CG44_CLIFOR 
AND TES.DO11_TIPOCF_CG44 = CL.CG44_TIPOCF 
INNER JOIN CG16_ANAGGEN AS AN ON CL.CG44_CODICE_CG16 = AN.CG16_CODICE 
INNER JOIN DO18_DOCTESORD AS TESORD ON TES.DO11_DITTA_CG18 = TESORD.DO18_DITTA_CG18 AND TES.DO11_NUMREG_CO99 = TESORD.DO18_NUMREG_CO99 
INNER JOIN DO14_DOCDATIACC AS AD ON TES.DO11_DITTA_CG18 = AD.DO14_DITTA_CG18 AND TES.DO11_NUMREG_CO99 = AD.DO14_NUMREG_CO99
LEFT OUTER JOIN MG14_VETTORI AS VE ON AD.DO14_VETTORE1_MG14 = VE.MG14_CODICE
LEFT OUTER JOIN CG16_ANAGGEN AS ANV ON VE.MG14_CODICE_CG16 = ANV.CG16_CODICE 
LEFT OUTER JOIN MG22_CLIFORDEST AS DE ON TES.DO11_DITTACF_CG44 = DE.MG22_DITTA_CG18 AND TES.DO11_TIPOCF_CG44 = DE.MG22_TIPOCF_CG44 
AND TES.DO11_CLIFOR_CG44 = DE.MG22_CLIFOR_CG44 AND TES.DO11_CLIFORDEST = DE.MG22_CODDESTIN 
LEFT OUTER JOIN DO66_DOCTESTABLOCCHI AS BL ON TES.DO11_DITTA_CG18 = BL.DO66_DITTA_CG18 AND TES.DO11_NUMREG_CO99 = BL.DO66_NUMREG_CO99 
LEFT OUTER JOIN DO16_DOCTESTAVISTI AS VI ON TES.DO11_DITTA_CG18 = VI.DO16_DITTA_CG18 AND TES.DO11_NUMREG_CO99 = VI.DO16_NUMREG_CO99
WHERE TES.DO11_DITTA_CG18 = 1 AND TEST.DO11_DOCUM_MG36 = 'CLI-ORDINE'
AND TESORD.DO18_FLGNONPIUEV = 0 AND TESORD.DO18_FLGEVASTOT = 0
AND ((BL.DO66_PROG = 1 OR BL.DO66_PROG IS NULL) AND (BL.DO66_FLGBLOCCATO = 0 OR BL.DO66_FLGBLOCCATO IS NULL))
AND ((VI.DO16_PROG = 1 OR VI.DO66_PROG IS NULL) AND (VI-DO16_FLGVISTO = 1 OR VI.DO16_FLGVISTO IS NULL))

Eseguendo il bottone che mi deve caricare questa quey, visual studio mi restituisce l'errore generico ‘Sintassi non corretta in prossimità della parola chiave ’JOIN'; a vedere così a me sembra corretto eventualmente riuscite a darmi una mano anche voi?

Grazie mille in anticipo a tutti quelli che risponderanno :)

12 Risposte

  • Re: ERRORE QUERY VB.NET

    Compro una vocale…

    Ma scrivere in modo più comprensibile?

    Tipo

    Select xyz

    Fron tabella

    Inner join tabella2

          On ecc…

    Inner join eccc…

    Where

    Ecc…

    Hai più join,  i nomi dei campi sono giusti?

    Left outer join cosa dovrebbe fare? 

  • Re: ERRORE QUERY VB.NET

    Eh lo so ci sono 2 mila giunzioni tra diverse tabelle…ma i nomi dei campi sono corretti, tant'è che la query su sql viene eseguita correttamente senza problemi…i left join sono stati messi per congiungere solo i campi in comune di alcune tabelle particolari come ad esempio i blocchi sui documenti ordini, le relative anagrafiche e le destinazioni dei clienti…

    La query su sql funziona quindi non ci vedo errori particolari sinceramente…

  • Re: ERRORE QUERY VB.NET

    Allora l'hai scritta male nel codice. Il pulsante passa parametri?

  • Re: ERRORE QUERY VB.NET

    Forse lo fai già ma se così non fosse ti consiglierei di eseguire il sqlcommand dentro un try catch e vedere bene cosa contiene l'exception e l' innerexception (magari anche un codice errore)

  • Re: ERRORE QUERY VB.NET

    27/07/2023 - DiegoLuppi1993 ha scritto:


    Eh lo so ci sono 2 mila giunzioni tra diverse tabelle…ma i nomi dei campi sono corretti, tant'è che la query su sql viene eseguita correttamente senza problemi…i left join sono stati messi per congiungere solo i campi in comune di alcune tabelle particolari come ad esempio i blocchi sui documenti ordini, le relative anagrafiche e le destinazioni dei clienti…

    La query su sql funziona quindi non ci vedo errori particolari sinceramente…

    salve,

    per formattare quella sblaterata di roba basta poco… vedi anche https://www.dpriver.com/pp/sqlformat.htm

    e va messa nei tag di codice :D

    salutoni romagnoli
    --
    Andrea

  • Re: ERRORE QUERY VB.NET

    27/07/2023 - asql ha scritto:


    per formattare quella sblaterata di roba basta poco… vedi anche https://www.dpriver.com/pp/sqlformat.htm

    Edit:

    my error … clamoroso , scusate !!! ;-))

  • Re: ERRORE QUERY VB.NET

    27/07/2023 - asql ha scritto:


    per formattare quella sblaterata di roba basta poco… vedi anche https://www.dpriver.com/pp/sqlformat.htm

    Ce ne sono un'infinità di “formattatori” per SQL, in locale io uso il plugin di notepad++ Poor man's T-SQL formatter, se il web non fosse disponibile. Ovviamente in quel sito c'è molto di più del semplice formattatore SQL.

    28/07/2023 - By65Franco ha scritto:


    ti risulta questo probabile errore ? 

    @By65Franco, cos'hai pubblicato? quel “disegno” (SQLFlow?) non corrisponde alla query dell'autore del post. 

  • Re: ERRORE QUERY VB.NET

    28/07/2023 - Philcattivocarattere ha scritto:


    @By65Franco, cos'hai pubblicato?

    oh ohi ohi…. fermoooo…. allora lo tolgo subito  ;-)

    non avevo fatto caso.  Grazie!!!

  • Re: ERRORE QUERY VB.NET

    Questa ti risulta corretta ? messo “-” invece di “.”   ???AND ((VI.DO16L))

    27/07/2023 - DiegoLuppi1993 ha scritto:


    AND ((VI.DO16_PROG = 1 OR VI.DO66_PROG IS NULL) AND (VI-DO16_FLGVISTO = 1 OR VI.DO16_FLGVISTO IS NULL))

    questa ???   va bene DO16 or DO66 ?

    27/07/2023 - DiegoLuppi1993 ha scritto:


    AND ((VI.DO16_PROG = 1 OR VI.DO66_PROG IS NULL) AND (VI-DO16_FLGVISTO = 1 OR VI.DO16_FLGVISTO IS NULL))

  • Re: ERRORE QUERY VB.NET

    28/07/2023 - By65Franco ha scritto:


    Questa ti risulta corretta ? messo “-” invece di “.”   ???AND ((VI.DO16L))

    27/07/2023 - DiegoLuppi1993 ha scritto:


    AND ((VI.DO16_PROG = 1 OR VI.DO66_PROG IS NULL) AND (VI-DO16_FLGVISTO = 1 OR VI.DO16_FLGVISTO IS NULL))

    questa ???   va bene DO16 or DO66 ?

    27/07/2023 - DiegoLuppi1993 ha scritto:


    AND ((VI.DO16_PROG = 1 OR VI.DO66_PROG IS NULL) AND (VI-DO16_FLGVISTO = 1 OR VI.DO16_FLGVISTO IS NULL))

    Allora sulla prima si faccio mea culpa non me ne ero accorto subito ma ieri sera mentre ricontrollavo con calma fuori da lavoro ho notato quell'errore li…stessa cosa per il secondo…ma non capisco dove stia il problema nella formattazione proprio…allora l'ho riscritta così:

    SELECT TES.do11_numreg_co99,
           TES.do11_numdoc,
           TES.do11_datadoc,
           TES.do11_clifor_cg44,
           AN.cg16_ragsoanag,
           AD.do14_vettore1_mg14,
           ANV.cg16_ragsoanag AS 'VETTORE',
           TESORD.do18_dataconsint,
           TESORD.do18_datacons,
           AD.do14_codporto_mg91,
           DE.mg22_destragsoc,
           AN.cg16_prov,
           DE.mg22_destprov
    FROM   do11_doctestata AS TES
           INNER JOIN cg44_clifor AS CL
                   ON TES.do11_dittacf_cg44 = CL.cg44_ditta_cg18
                      AND TES.do11_clifor_cg44 = CL.cg44_clifor
                      AND TES.do11_tipocf_cg44 = CL.cg44_tipocf
           INNER JOIN cg16_anaggen AS AN
                   ON CL.cg44_codice_cg16 = AN.cg16_codice
           INNER JOIN do18_doctesord AS TESORD
                   ON TES.do11_ditta_cg18 = TESORD.do18_ditta_cg18
                      AND TES.do11_numreg_co99 = TESORD.do18_numreg_co99
           INNER JOIN do14_docdatiacc AS AD
                   ON TES.do11_ditta_cg18 = AD.do14_ditta_cg18
                      AND TES.do11_numreg_co99 = AD.do14_numreg_co99
           LEFT OUTER JOIN mg14_vettori AS VE
                        ON AD.do14_vettore1_mg14 = VE.mg14_codice
           LEFT OUTER JOIN cg16_anaggen AS ANV
                        ON VE.mg14_codice_cg16 = ANV.cg16_codice
           LEFT OUTER JOIN mg22_clifordest AS DE
                        ON TES.do11_dittacf_cg44 = DE.mg22_ditta_cg18
                           AND TES.do11_tipocf_cg44 = DE.mg22_tipocf_cg44
                           AND TES.do11_clifor_cg44 = DE.mg22_clifor_cg44
                           AND TES.do11_clifordest = DE.mg22_coddestin
           LEFT OUTER JOIN do66_doctestablocchi AS BL
                        ON TES.do11_ditta_cg18 = BL.do66_ditta_cg18
                           AND TES.do11_numreg_co99 = BL.do66_numreg_co99
           LEFT OUTER JOIN do16_doctestavisti AS VI
                        ON TES.do11_ditta_cg18 = VI.do16_ditta_cg18
                           AND TES.do11_numreg_co99 = VI.do16_numreg_co99
    WHERE  TES.do11_ditta_cg18 = 1
           AND test.do11_docum_mg36 = 'CLI-ORDINE'
           AND TESORD.do18_flgnonpiuev = 0
           AND TESORD.do18_flgevastot = 0
           AND ( ( BL.do66_prog = 1
                    OR BL.do66_prog IS NULL )
                 AND ( BL.do66_flgbloccato = 0
                        OR BL.do66_flgbloccato IS NULL ) )
           AND ( ( VI.do16_prog = 1
                    OR VI.do16_prog IS NULL )
                 AND ( VI.do16_flgvisto = 1
                        OR VI.do16_flgvisto IS NULL ) ) 
  • Re: ERRORE QUERY VB.NET

    28/07/2023 - DiegoLuppi1993 ha scritto:


    Allora sulla prima si faccio mea culpa non me ne ero accorto subito ma ieri sera mentre ricontrollavo con calma fuori da lavoro ho notato quell'errore li…stessa cosa per il secondo…ma non capisco dove stia il problema nella formattazione proprio…allora l'ho riscritta così:

    non ho capito una cosa… ma questo serve per capire se noi siamo all'altezza di leggere e scrivere una stringa sql ? 

    Oppure ti fa fatica andare a controllare le sintassi ?

    Devo aggiungere che è forviante dire che in sql ti funziona e in vb.net no… 

    Per me questo Thread o è un Test di valutazione o una Supercazzola… delle due una ;))


    Comunque poniamo che tu sia in buona fede ….   ;-)

    28/07/2023 - DiegoLuppi1993 ha scritto:


    WHERE TES.do11_ditta_cg18 = 1 AND test.do11_docum_mg36 = 'CLI-ORDINE'

    Ma la tabella text esiste ? 

  • Re: ERRORE QUERY VB.NET

    27/07/2023 - DiegoLuppi1993 ha scritto:


    La query su sql funziona quindi non ci vedo errori particolari sinceramente…

    Non solo è forviante dire ciò, ma sostenere che non ci siano errori …. insomma, anche se una stringa sql fosse lunga 1 Km ciò non toglie che va scritta con i nomi dei campi corretti…  non ti pare ? ;-))

    Comunque rimango della mia idea…  delle due una (riferito al post precedente)
    ;-)


    p.s. A parte gli scherzi… mi sembra di essere in spiaggia sotto all'ombrellone con il cruciverba sotto mano a fare “Trova le Differenze” ;-)) 

    (scherzooooo)

Devi accedere o registrarti per scrivere nel forum
12 risposte