|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jul 2001
Messaggi: 88
|
aiuto scrivere query access
ciao a tutti,
non riesco a scrivere una query che faccia quello che voglio.. ho una query GIACENZE con i seguenti campi: cod_articolo|descrizione|quantità ____________________________________________________ una query IMPEGNATI con i seguenti campi: cod_articolo|descrizione|quantità ____________________________________________________ una query DISPONIBILITAGIUSTA con i seguenti campi : cod_articolo|descrizione|giacenze|impegnato |disponibile SELECT impegnati.cod_articolo, impegnati.descrizione, IIf(IsNull([Giacenze.quantità]),0,[giacenze.quantità]) AS GIACENZE, IIf(IsNull([impegnati.quantità]),0,[impegnati.quantità]) AS IMPEGNATO, Sum(nz([giacenze.Quantità],0)-nz([impegnati.quantità],0)) AS DISPONIBILE FROM giacenze RIGHT JOIN impegnati ON giacenze.cod_articolo = impegnati.cod_articolo GROUP BY impegnati.cod_articolo, impegnati.descrizione, impegnati.Quantità, giacenze.Quantità; ____________________________________________________ una query RIORDINO con i seguenti campi : cod_articolo|descrizione|giacenze|impegnato|disponibile|scorta_min|riordino SELECT scorta_min.cod_articolo, scorta_min.descrizione, disponibilitagiusta.giacenze AS GIACENZE, disponibilitagiusta.IMPEGNATO, IIf(IsNull([disponibilitagiusta.disponibile]),0,[disponibilitagiusta.disponibile]) AS DISPONIBILE, scorta_min.scorta_min, nz([scorta_min]![scorta_min],0)-nz([disponibilitagiusta]![Disponibile],0)+1 AS Riordino FROM disponibilitagiusta RIGHT JOIN scorta_min ON disponibilitagiusta.cod_articolo = scorta_min.cod_articolo ORDER BY scorta_min.cod_articolo; Il prob è con questa query (RIORDINO), in quanto si appoggia alla query DISPONIBILITAGIUSTA. Quando imposto un articolo di cui voglio il riordino in automatico che e' presente nella query GIACENZE ma non nella query DISPONIBILITAGIUSTA il valore in giacenza di quest' articolo mi ritorna 0 anche se in GIACENZE il prodotto risulta presente. Questo accade perche il prodotto non e' presente nella giacenza della query DIASPONIBILITAGIUSTA spero che qualcuno mi possa aiutare... ringrazio anticipatamente |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Aug 2001
Città: Gerenzano
Messaggi: 129
|
Se ho ben capito, il problema consiste (Come tu stesso dici) nel fatto che la query DISPONIBILITAGIUSTA non estrae dei prodotti perchè sono presenti in GIACENZA ma non in IMPEGNATO.
Per capirci meglio se x esempio hai una condizione di questo tipo: * qryGiacenze* Codice | Qt C1 | 10 C2 | 20 C3 | 30 * qryImpegnato* Codice | Qt C1 | 4 C2 | 6 La query DISPONIBILITA' GIUSTA (con i dati di esempio) sarà di questo tipo: * qryDisponibilità giusta * Codice | Qt disponibile C1 | 6 C2 | 14 o sbaglio qualcosa? Non capisco (Se ci ho azzeccato) perchè non riporti nella query della disponibilità giusta anche i record dove non c'è la corrispondenza con il prodotto e ciòè invece di fare un RIGHT JOIN da qryImpegnato a qryGiacenze '...FROM giacenze RIGHT JOIN impegnati ON giacenze.cod_articolo = impegnati.cod_articolo... ' perchè non fai un LEFT JOIN ' ...FROM giacenze LEFT JOIN impegnati ON giacenze .cod_articolo = impegnati .cod_articolo..' ??? x ottenere una cosa simile: * qryDisponibilità giusta * Codice | Qt disponibile C1 | 6 C2 | 14 C3 | 30 ![]()
__________________
E' quasi tutto relativo! |
![]() |
![]() |
![]() |
#3 | |
Member
Iscritto dal: Jul 2001
Messaggi: 88
|
grazie per la tua disponibilità
Quote:
potrei inviarti il db per farti capire meglio? e' di solo 126k |
|
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Aug 2001
Città: Gerenzano
Messaggi: 129
|
Invia pure!
![]()
__________________
E' quasi tutto relativo! |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Jul 2001
Messaggi: 88
|
mi potresti dire la tua e-mail, oppure se preferisci parliamo in mirc
|
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Aug 2001
Città: Gerenzano
Messaggi: 129
|
Manda pure a 'cisky77@libero.it' / tramite PVT /direttamente come allegato alla discussione.
Fai come preferisci.
__________________
E' quasi tutto relativo! |
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Jul 2001
Messaggi: 88
|
ciao ciscky77 hai dato un'occhiata al db?
attendo ![]() ![]() |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8878
|
se vuoi manda anche a me
![]() ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
![]() |
![]() |
![]() |
#9 |
Member
Iscritto dal: Aug 2001
Città: Gerenzano
Messaggi: 129
|
Ti ho mandato una mail in risposta il 23/01 sera.
Credo che non ti sia arrivata (Forse ho sbagliato a inviarla.. strano!) Te l'ho rispedita, se non ti arriva fammi sapere! Ciao ![]()
__________________
E' quasi tutto relativo! |
![]() |
![]() |
![]() |
#10 |
Member
Iscritto dal: Jul 2001
Messaggi: 88
|
tnx cisky..
l' E-mail era arrivata.. il prob era mio questa sera che ho un po di tempo la leggo con calma e ti faccio sapere x fenomeno85: per ora seguo i consigli di cisky.. tnx lo stesso |
![]() |
![]() |
![]() |
#11 |
Member
Iscritto dal: Jul 2001
Messaggi: 88
|
ciao cisky
ho letto i tuoi consigli e hai proprio ragione.. (campi ripetuti nelle tabelle, campo testo che dovrebbe essere numerico) ma purtroppo ho dovuto fare cosi perche il db lo interfaccio con vb.. e lo gestisco tutto con vb. intercettazione errori , inserimento, interrogazione, ecc.. ho seguito il tuo consiglio delle union e' funziona.. ti ringrazio, Ho un altra domanda da farti ![]() se volessi aggiornare l'impegnato con lo scarico come potrei fare? es. impegnato cod_articolo |descrizione |quantita |cliente| data 5050 | DDR 128Mb PC 2100 FULL BRAND| 5 | tizio|12/12/2003 scarico cod_articolo |descrizione| n_serial | cliente |data 5050 | DDR 128Mb PC 2100 FULL BRAND| 3sd9rf| tizio|2212/2003 5050 | DDR 128Mb PC 2100 FULL BRAND| 2s89rf| tizio|2212/2003 impegnato 5 - scarico 2 = impegnato 3 grazie anticipatamente Ultima modifica di gbv : 27-01-2004 alle 20:47. |
![]() |
![]() |
![]() |
#12 |
Member
Iscritto dal: Aug 2001
Città: Gerenzano
Messaggi: 129
|
PREMESSA:
Anche se probabilmente questa risposta sarà incomprensibile a molti utenti perchè solo io ho avuto la possibilità di visionare il DB tramite messaggio privato, ho deciso di postare ugualmente nel caso in cui a qualcuno possa risultare di aiuto (Non si sa mai) ---------------------------------------- RISPOSTA: Se il tuo problema consiste nella creazione di una query che visualizzi la situazione aggiornata dei dati Impegnati - Scarico non c'è problema, ti illustro come puoi fare.Se invece vuoi aggiornare direttamente i dati della tabella Impegnati allora la cosa è più complessa. Dico che la cosa è più complessa perchè attualmente nella tabella Impegnati possono essere presenti più record per lo stesso codice prodotto (con valori di Qt diversi) e quindi dovresti creare una procedura che vada ad eliminare i record in questa tabella (In modo che il totale delle Qt dei record rimanenti coincida con la differenza tra Impeganto e Scarico) e credo proprio (Praticamente certo) che questa cosa non si possa fare direttamente in access(Ma devi farla via Codice VB) perchè il DB "a mio avviso" non è strato progettato in maniera "ottimale". * Comunque se il tuo problema è creare una query, queste sono le operazioni da fare: 1) Siccome i record della tabella scarico possono essere molteplici per ogni codice prodotto, la prima cosa da fare è creare una query che conteggi la somma dei record per codice articolo(In questo modo ottieni la quantità da scaricare).Chiamerò questa query 'qry_totScarico' [qryTotScarico] SELECT cod_articolo, COUNT(cod_articolo) AS QtScarico FROM scarico GROUP BY cod_articolo 2) Una volta che hai creato la query che visualizza i totali scaricati (x articolo), semplicemente crei una nuova query (che chiamerò 'qryQtAggiornate') utilizzando la query 'qryTotScarico' e la query IMPEGNATI'.La query che "comanda" è quella degli impegnati, che sarà collegata con un LEFT JOIN a quella dello Scarico. Con una semplice sottrazione calcoli quindi la QT impegnata dopo lo scarico. [qryQtAggiornate] SELECT Impegnati.cod_articolo, Impegnati.Quantità AS Qtimpegnato, qry_TotScarico.QtScarico, (Impegnati.Quantità-nz(qry_TotScarico.QtScarico,0)) AS QtAggiornata FROM Impegnati LEFT JOIN qry_TotScarico ON Impegnati.cod_articolo = qry_TotScarico.cod_articolo; * Se il tuo problema invece è aggiornare direttamente la tabella impegnato, fammi sapere, che proverò a darti una mano. ![]() Ciao! ![]()
__________________
E' quasi tutto relativo! Ultima modifica di cisky : 28-01-2004 alle 00:22. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:52.