Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    322

    [ACCESS-SQL] divisione per zero

    Sono connesso tramite access ad un db in sql-server. Eseguo una query di ricerca dove divido il campo prezzo / il campo costo:

    codice:
    select codart, descri, prezzo, costo, (prezzo/costo) as calcolo from artic
    succede però che a volte nel campo costo ci sia il valore nullo o uguale a zero e quindi la query mi restituisce errore. come posso fare per evitare questo ed eseguire la mia query normalmente?? magari sostituendo un messaggio nel campo calcolo invece che l'errore?

    grazie

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Prima ancora di questo problema, si dovrebbe comprendere lo scopo e la reale utilità del campo PREZZO.
    Cosa contiene?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    322
    sono solo 2 valori numerici che ne so, prezzo 10,20 e costo 8,5. il calcolo che devo fare non è proprio prezzo/costo era solo x dare un idea. il problema è che la divisione potrebbe avere come costo null o un valore uguale a zero quindi devo trovare il sistema di eseguire la divisione senza generare l'errore

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da dadepax
    sono solo 2 valori numerici che ne so, prezzo 10,20 e costo 8,5. il calcolo che devo fare non è proprio prezzo/costo era solo x dare un idea. il problema è che la divisione potrebbe avere come costo null o un valore uguale a zero quindi devo trovare il sistema di eseguire la divisione senza generare l'errore
    Ma è proprio questo il problema: non dovresti ritrovarti nella necessità di eseguire un calcolo che può sfociare in una divisione per zero; devi controllare a priori che il campo del dividendo sia maggiore di zero.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    322
    è un po difficile, è un calcolo che effetto su un archivio di 10000 articoli su un database dove possono essere articoli che vengono inseriti ma che momentaneamente non hanno un costo.. la query viene eseguita in momenti diversi e quindi non posso avere questo controllo. non esiste un costrutto tipo IF che mi permette di scrivere in quel campo una stringa o ad esempio un -1 ad indicarmi che a quel record c'è un costo uguale a zero?? io sono abbastanza alle prime armi con SQL.

    grazie ancora

  6. #6
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,523
    Ci sono vari modi per controllare il risultato della divisione evitando l'errore di divisione per zero
    Prova a vedere questo, è proprio il tuo caso

    http://www.experts-exchange.com/Data..._21734139.html

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    322
    ho provato con lo script indicato,xò non funziona:

    codice:
    Select Distinct CustomerName, CustomerNumber, FeeGoal_IL AS FG, FeeSchedule,(cast(FeeGoal_IL as numeric(30,10)) / FeeSchedule) * 100 AS gt
    l'errore mi viene generato relativamente ad AS numeric(30,10) in quanto mi dice che è un utilizzo scorretto di AS

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Prova con

    codice:
    SELECT  
    Campo1/
    CASE Campo2 WHEN 0
    	THEN NULL
    	ELSE Campo2
    END
    AS Risultato
    FROM Tabella
    In cui Campo1 e Campo2 sono i due campi da dividere e Tabella la tua tabella ...

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    322
    ok ho provato sembrerebbe funzionare. mi è uscita una query lunghissima xò sembra ok.

    grazie a tutti

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Di nulla ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.