PDA

Visualizza la versione completa : [access] formule diverse in una query


jhonnyjab
13-11-2009, 17:24
Ciao ragazzi,

vi spiego qual il problema!

Un tabella cos composta

http://www.allfreeportal.com/imghost/images/43918Immagine4.GIF (http://allfreeportal.com)

Vorrei creare una query per farmi restituire un valore che dovrebbe calcolare il peso per ogni categoria di prodotto!

Dovrei creare qualcosa del genere:

se categoria=lamiera allora fai la moltiplicazione col1*colo3*col5*pesospecifico

se categoria=tubo allora fai e metto la formula per calcolare il peso di un tubo!

Chi mi aiuta?

Non sono molto pratico per le formule di access!

Grazie

123delphi321
13-11-2009, 17:40
ma parli di scrivere una formula di access, o di effettuare una query sql?

jhonnyjab
13-11-2009, 18:24
no una formula di access!

Ma anche sql va bene, se mi spiegate come si fa :)

jhonnyjab
17-11-2009, 11:00
Le formule sono le seguenti:



LAMIERA= DIM1*DIM2*DIM3*0.00000785

TUBO= DIM1^2-(DIM1-2*DIM2)^2*PIGRECO*0.25*DIM3*0.00000785

TONDO= DIM1^2*PIGRECO*0.25*DIM2*0.00000785

TUBO RETTANGOLARE= [DIM1*DIM2-(DIM1-DIM3*2)*(DIM2-DIM3*2)]*DIM4*0.00000785

PIATTO= DIM1*DIM2*DIM3*0.00000785 uguale alla lamiera

ANELLO= (DIM1^2-DIM3^2)*PIGRECO*0.25*DIM2*0.00000785

DISCO= DIM1^2*PIGRECO*0.25*DIM2*0.00000785 uguale al tondo



Questo il codice sql della query



SELECT dettaglirda.quantita, dettaglirda.udm, dettaglirda.idcategoria AS rda_idcategoria, dettaglirda.idprofili, categoria.[1], dettaglirda.dim1, categoria.[2], dettaglirda.dim2, categoria.[3], dettaglirda.dim3, categoria.[4], dettaglirda.dim4, dettaglirda.idqualitamateriale, 0 AS [Peso Unitario], [Peso Unitario]*[quantita] AS [Peso Totale], dettaglirda.dataconsegna
FROM categoria INNER JOIN dettaglirda ON categoria.idcategoria = dettaglirda.idcategoria;




Questa l'immagine della tabella che ho modificato


http://www.allfreeportal.com/imghost/images/349486Immagine10.JPG (http://allfreeportal.com)



Help :bh:

123delphi321
17-11-2009, 17:26
ciao,

vorrei aiutarti, ma purtroppo non conosco affatto access, ne tantomeno le possibilita di inserire l'opportuna grammatica sql.

io utilizzo Firebird sql, e nel mio caso il tuo problema sarebbe risolvibile utilizzanto il comando 'if' o 'case' all'interno della query.

prova a dare un'occhiata qui

http://bytes.com/topic/access/answers/526598-access-sql-version-case


prova a cercare su google 'access sql if case'

ciao

jhonnyjab
21-11-2009, 12:20
Problema risolto con una formula di questo tipo

Calcolo: IIf([2a dettOrdineCliente].[idmateriali]=1 Or [2a dettOrdineCliente].[idmateriali]=5;[2a dettOrdineCliente].[dim1]*[2a dettOrdineCliente].[dim2]*[2a dettOrdineCliente].[dim3]*0,00000785;IIf([2a dettOrdineCliente].[idmateriali]=2;([2a dettOrdineCliente].[dim1]^2-([2a dettOrdineCliente].[dim1]-2*[2a dettOrdineCliente].[dim2])^2)*3,14*0,25*[2a dettOrdineCliente].[dim3]*0,00000785;IIf([2a dettOrdineCliente].[idmateriali]=3 Or [2a dettOrdineCliente].[idmateriali]=7;[2a dettOrdineCliente].[dim1]^2*3,14*0,25*[2a dettOrdineCliente].[dim2]*0,00000785;IIf([2a dettOrdineCliente].[idmateriali]=4;([2a dettOrdineCliente].[dim1]*[2a dettOrdineCliente].[dim2]-([2a dettOrdineCliente].[dim1]-[2a dettOrdineCliente].[dim3]*2)*([2a dettOrdineCliente].[dim2]-[2a dettOrdineCliente].[dim3]*2))*[2a dettOrdineCliente].[dim4]*0,00000785;IIf([2a dettOrdineCliente].[idmateriali]=6;([2a dettOrdineCliente].[dim1]^2-[2a dettOrdineCliente].[dim3]^2)*3,14*0,25*[2a dettOrdineCliente].[dim2]*0,00000785;0)))))

Ciao e grazie :ciauz:

Loading