Homepage  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


.dsy:it. .dsy:it. Archive > Didattica > Corsi A - F > Basi di dati ~ comunicazione digitale
 
[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 :)

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate