Divisione per zero in una query

venerdì 22 maggio 2009 - 15.53

Barabas Profilo | Junior Member

Salve a tutti.
ho un database in access e un'applicazione vb.net che elabora e visualizza i dati contenuti nel db.
fa tutto tramite query scritte in SQL standard... nessuna stored procedure.
una query molto complessa ha una colonna il cui valore è calcolato tramite una formula che prevede una divisione tra i valori di altre colonne... purtroppo è possibile che la divisione venga fatta per 0, e questo naturalmente genera errore.

vorrei evitare di fare questa divisione per zero.
ho visto che con le stored procedure è possibile usare istruzioni tipo le IF ed il CASE.
SQL standard non prevede nulla di simile?

non vorrei utilizzare le stored procedure, ma continuare ad usare le normali query.

qualsiasi consiglio è bene accetto.
grazie in anticipo
ciao
Barabas

lbenaglia Profilo | Guru

>ho un database in access e un'applicazione vb.net che elabora
>e visualizza i dati contenuti nel db.
>fa tutto tramite query scritte in SQL standard... nessuna stored
>procedure.
Anche perché Access (o meglio JET) non offre le Stored Procedures

>una query molto complessa ha una colonna il cui valore è calcolato
>tramite una formula che prevede una divisione tra i valori di
>altre colonne... purtroppo è possibile che la divisione venga
>fatta per 0, e questo naturalmente genera errore.
>
>vorrei evitare di fare questa divisione per zero.
>ho visto che con le stored procedure è possibile usare istruzioni
>tipo le IF ed il CASE.
>SQL standard non prevede nulla di simile?
CASE aderisce allo standard ANSI SQL, ma JET SQL solo in parte.
Al sui posto puoi utilizzare la funzione IIF:
http://office.microsoft.com/it-it/access/HA012288531040.aspx

>grazie in anticipo
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Barabas Profilo | Junior Member

grazie per la risposta celerissima!!
però purtroppo non credo mi risolva il problema, perdonami se non sono molto esperto ma se ho capito bene la funzione IIF è una funzione di access che si usa nelle maschere...
io non ho nessuna maschera, non ho un'applicazione access, io ho un'applicazione vb.net (non vba) che effettua query su un database access + o - nel modo seguente:

dim query as string="select (campo1/campo2) as quoziente from tabella"
dim com as oledbcommand
com.command=query
dim reader as oledbdatareader=com.executereader

purtroppo la query non è così semplice (sarà lunga almeno una ventina di righe) altrimenti mi basterebbe usare la clausola where...

mi servirebbe qualcosa (sempre in SQL standard) che oltre a evitare di fare la divisione per zero sostituisca il risultato con un valore di default o un 'null'...
appunto un qualcosa tipo if , sempre che esista...

sempre grazie in anticipo
ciao

Barabas
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5