 | |
Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum |
[Access][Newbie] Tabella percorsi Clicca QUI per vedere il messaggio nel forum |
Dodo |
da poco mi sono messo a utilizzare access, e mi viene una domanda che cmq riguarda i database in generale penso, cmq tenendo conto che devo farlo in access....
è possibile inserire in un campo più valori? mi spiego...
sto faceno il carsharing e per la tabella percorsi come faccio a dire che il
percorso1 è fatto da Tratta1-Tratta2-Tratta3...
soluzione della mia mente (malata ? :D ): in un campo inserisco più valori, inserendo quindi una colonna dal nome Tratte: e come valore una sequenza degli ID dei nodi... si può fare? se si... devo usare una sintassi particolare per separare i valori?
grazie... |
futurbaggio |
Originally posted by Dodo
in un campo inserisco più valori, inserendo quindi una colonna dal nome Tratte: e come valore una sequenza degli ID dei nodi... si può fare? se si... devo usare una sintassi particolare per separare i valori?
Non voglio scoraggiarti ma memorizzando così i dati fare una query diventa un gran casino... la logica relazionale vuole che tu crei una tabella percorsi con un campo id, questo campo id verrà poi riportato in un'altra tabella chiamata tratte, in cui avrai:
tratta1, idpercorso
tratta2, idpercorso
tratta3, idpercorso_2
trattaN, idpercorso_N
E' una relazione uno a molti...
Roberto |
sarah |
Domanda: Ma come posso fare poi a vedere se ci sono altri conducenti che fanno esattamente il mio stesso percorso (nel caso in cui ti serve modificare o cancellare il percorso).
Io ho l'id del percorso che voglio modificare!
Dovrei vedere se nella tabella OrdineTratte (IdPercorso,IdTratta,NumeroTratta)
ci sono altri IdPercorso che hanno le stesse tratte e allo stesso numero tratta!
come funziona???
ciao grazie
sarah |
Dodo |
Originally posted by futurbaggio
Non voglio scoraggiarti ma memorizzando così i dati fare una query diventa un gran casino... la logica relazionale vuole che tu crei una tabella percorsi con un campo id, questo campo id verrà poi riportato in un'altra tabella chiamata tratte, in cui avrai:
tratta1, idpercorso
tratta2, idpercorso
tratta3, idpercorso_2
trattaN, idpercorso_N
E' una relazione uno a molti...
Roberto
giusto.. grazie.. il bello è che nello schema E-r ho fatto così :oops:
va beh.. grazie ancora :D |
Dodo |
scusa Roberto ma in questo modo come faccio ad associare più percorsi ad una tratta?
eidt: risolto creando una tabella relazionale a parte...
|
foolish |
io avrei pensato invece che il percorso lo avrebbe indicato direttamente l'utente...
mi spiego: nella fase di inserimento dati l'utente, tramite un'opportuna interfaccia, inserisce i luoghi che incontra lungo il percorso e dove ha intenzione di fermarsi, nel caso, per raccogliere e quindi dare il passaggio alle altre persone.
quindi avremmo un atabella utenti che offrono il passaggio e di utenti che al contrario lo richiedono.
inoltre avremo un altra tabella composto da:
- id Ute Che Offre Il Passaggio
- posto in cui passa
- numero del passaggio
se noi avremmo le due corrispondenze tra luogo di partenza e luogo d'arrivo controlleremo l'affinità con l'orario, prevedendo magari una possibilità di ritardo accettabile.
io l'avevo npensato così.... |
futurbaggio |
Originally posted by sarah
Dovrei vedere se nella tabella OrdineTratte (IdPercorso,IdTratta,NumeroTratta)
ci sono altri IdPercorso che hanno le stesse tratte e allo stesso numero tratta!
come funziona???
Oltre a quello che tu hai già detto devi confrontare anche che l'orario di partenza sia lo stesso e che l'eventuale percorso alternativo abbia un numero di posti sufficienti per trasportare anche le persone prenotate per il percorso che vuoi modificare.
Buona fortuna! :twisted:
Roberto
PS. Dodo, tu vai alla grande! |
sarah |
Sì ok Roberto, fin lì ci sono!
Quello che non riesco a fare è:
come faccio a confrontare più tuple di una tabella (in questo caso le tuple che hanno tutte lo stesso idPercorso in OrdineTratte)
con tutte le altre tuple?
alcuni suggerirebbero di usare gli array...che però non so usare :P
...come si fa?...
ciao ciao
sarah |
futurbaggio |
Originally posted by sarah
come faccio a confrontare più tuple di una tabella (in questo caso le tuple che hanno tutte lo stesso idPercorso in OrdineTratte)
con tutte le altre tuple?
Il tutto con una ed una sola istruzione SQL, nn so come è la tua base di dati a questo punto, cmq si tratta di fare una SELECT su due istanze dei percorsi (usando gli alias), che:
- seleziona il percorso da modificare
- seleziona i percorsi con lo stesso orario di quello da modificare
- seleziona le tratte del percorso da modificare e le confronta con quelle degli altri percorsi
- seleziona i posti disponibili per gli altri percorsi e confronta se bastano per trasportare i prenotati del percorso da modificare.
Non è una query banale e quindi nn ci puoi mettere 2 minuti, io ne ho impiegati 15!
Roberto
PS per chi ama gli array, io nn ne ho usato nemmeno uno in 1500 righe di codice! |
sarah |
Ok grazie mille Futurbaggio!Me la sto cavicchiando solo che mi sono bloccata a questo punto:
nel momento in cui devo aggiornare la tabella prenotazioni e modificare idPercorso vecchio con quello nuovo....
rs.close
rs.open "Update Prenotazioni set IdPercorso=(select IdPercorso from Percorsi where idPercorso="&Pippo&") and PostiRimasti="&PostiDisp&" where IdPercorso="&IdPercurs&"",conn
mi dice che "Per l'operazione è necessaria una query aggiornabile!" che significa?
ciao ciao grazie
sarah |
futurbaggio |
Originally posted by sarah
mi dice che "Per l'operazione è necessaria una query aggiornabile!" che significa?
Mancano i permessi di scrittura sulla cartella che contiene il BD?!?!?!
Roberto |
sarah |
Non è il primo update che faccio nella cartella, ma solo in questo mi da questo errore! |
futurbaggio |
Originally posted by sarah
Non è il primo update che faccio nella cartella, ma solo in questo mi da questo errore!
...codice, please... |
sarah |
Ciao!!!
Ma vuoi il codice di quello che viene o di quello che non viene?
Beh dai te li metto tutti e due!
Questo funziona
mysql="Update Percorsi set Ora=#"& NuovaOra &"# where IdPercorso="& IdPercurs &""
conn.execute mysql
Questo non funziona:
rs.close
rs.open "Update Prenotazioni set IdPercorso=(select IdPercorso from Percorsi where idPercorso="&Pippo&") and PostiRimasti="&PostiDisp&" where IdPercorso="&IdPercurs&"",conn
e mi dice, come ti ho detto sopra, che c'è bisogno di una query aggiornabile!!!
ciao ciao sarah |
sarah |
anzi guarda, ti dirò di più:
se faccio due query separate:
mysql="Update Prenotazioni set IdPercorso="&Pippo&" where IdPercorso="&IdPercurs&" "
conn.execute mysql
mysql="Update Prenotazioni set PostiRimasti="&PostiDisp&" where IdPercorso="&Pippo&" "
conn.execute mysql
funziona tutto! Se invece provo a fare aggiornare due campi nella stessa query, inizia a sclerare!
Mi sembra stupido farlo separatamente, no? Non so, succede solo a me?
ciao ciao
grazie sarah |
futurbaggio |
E grazie metti codice sbagliato :twisted:
Update tabella Set campo=val, campo2=val2, etc WHERE ...
Non va messo AND tra i vari campi da aggiornare e poi nn mi pare si possa mettere una select per assegnare un valore ad un campo...
Roberto |
sarah |
Grazie mille me ne sono accorta anch'io :) |
|
|
|
|