PDA

Visualizza versione completa : help!


Cucciolo
02-03-2004, 17.37.18
Access
ho un database con 3 tabelle:
A,B,C

A e' collagata molti a molti a C, cioe'

A e' collegata una a molti a B

B e' collegata una a molti a B

ecco, con una maschera M1, devo prendere l'attributo A1 dalla tabella A, C1 dalla tabella C e visualizzarli.

poi ho un'altra maschera che all'inserimento deve prendere i dati che ci sono nelle caselle di testo della maschera M2 che inserisce alcuni valori in A e altri in B prendendoli da C

e poi:
dove si mettono i comandi sql?!?!?!?

LoryOne
02-03-2004, 19.19.59
dove si mettono i comandi sql?!?!?!?

Io ce l'avrei un'idea :D

Non ho capito una mazza, soprattutto "B e' collegata una a molti a B".

Cucciolo
02-03-2004, 21.38.30
va beh...
ti spiego tutto bene:
ho due tabella con degli attributi:
Prodotto: CODICE,nome
Componenti: CODICE, prezzo1, prezzo3, descrizione e altre cose superflue

poi ho l'associazione molti a molti (un prodotto viene fatto da + componenti e + componenti sono usati x fare + prodotti) che di conseguenza diventa una tabella:
Associazione:CODICEPRODOTTO, CODICECOMPONENTI, quantità (di ogni tipo di componente)

va beh, quello che nn so fare sono le interrogazioni o query
1: dato il codice di un prodotto, calcolare i 2 totali (somma delle quantita*prezzo1,somma delle quantita*prezzo2,)
2: dato il codice del prodotto, visualizzare tutti i componenti che lo compongono.

LoryOne
03-03-2004, 08.12.43
Ora l'è un po più chiaro.
Se hai già definito le relazioni tra tabelle, la query l'imposta Access direttamente, almenoper quanto riguarda i join.

Ci sono moltissime funzioni matematiche in SQL, tipo SUM che ti servirà sicuramente:

"1: dato il codice di un prodotto, calcolare i 2 totali (somma delle quantita*prezzo1,somma delle quantita*prezzo2,)"
(Non le ricordo tutte, guarda la guida di Access.)
Ps: Attenzione che un qualunque campo calcolato necessita di un campo virtuale che contenga il risultato del calcolo, il cui nome non centra nulla con nessuno dei nomi delle tabelle che intervengono nella SQL Es:

Select SUM([Nome campo tabella]*qualcosa]) As [Nome campo virtuale] From Tabella, ecc

Una volta che hai ricavato la sintassi della SQL(te la dice Access) sei a cavallo in quanto in VBA non cambia nulla.

Cucciolo
03-03-2004, 16.23.50
1: select sum(componenti.prezzo1*associazione.quantita) as "Prezzo1" sum(componenti.prezzo2*associazione.quantita) as "prezzo2"
from prodotti innerjoin (associazioni innerjoin prodotti on prodotti.codice=associazione.codicep) on componenti.codice=associazione.codicec
group by componeti.codice
where prodotti.codice=<codice inserito>

2:select componenti.codice componenti.descrizione associazione.quantita
from componenti innerjoin (associazione innerjoin prodotti on prodotti.codice=associazione.codicep) on componenti.codice=associazione.codicec
group by componenti.codice
where prodotti.codice=<codice da inserire>

Cucciolo
03-03-2004, 17.24.12
Originariamente inviato da LoryOne
Una volta che hai ricavato la sintassi della SQL(te la dice Access) sei a cavallo in quanto in VBA non cambia nulla.
nn ho capito cosa intendi, cmq ho guardato sulla guida di access e nn c'e' niente, allora ho provato "x tentativi" (lo so, e' un po' brutto ma e' l'unico modo che mi e' rimasto)

tasto dx sulla query => visualizzazione SQL e poi ho messo cosi:
SELECT componenti.codice, componenti.descrizione, associazione.quantita, Sum([componenti.prezzo1]*associazione.quantita) AS [Somma Di prezzo1], Sum([componenti.prezzo2]*associazioni.quantita) AS [Somma Di prezzo2]
FROM prodotti INNER JOIN (componenti INNER JOIN associazione ON componenti.codcom=associazione.codcom) ON prodotti.codpro=associazione.codpro
GROUP BY componenti.descrizione, associazione.quantita;
ma poi quando lo eseguo mi esce una finestrella che mi chiede il componente.codice, e un'altra che chiede associazione.quantita
???
e poi come si fa a fare
select prodotti.* ?
l'asterisco nn funziona...

LoryOne
03-03-2004, 19.27.35
SELECT * FROM Prodotti indica di predisporre un buffer di contenimento dei valore di ogni singola colonna della tabella Prodotti.

La sintassi che hai proposto tu non è corretta.

Quando dico "sei a cavallo" intendo che sei a cavallo per quanto riguarda la programmazione in VBA, ossia la creazione di recordset basati su query SQL.
La sintassi che ti propone ACCESS è infatti la stessa che dovrai utilizzare quando creerai la query SELECT dell'oggetto Recordset. (DAO o ADO vedi tu)