Query di aggiornamento

di il
16 risposte

Query di aggiornamento

Access 2007

salve ragazzi
qualcuno sa dirmi come faccio a specificare un determinato campo in una query di aggiornamento tramite una maschera non associata?

mi spiego meglio:
ho una query di aggiornamento con due campi: tavolo1 e tavolo2
ho creato una maschera che esegue la query di aggiornamento con due campi non associati: numero tavolo e nome cliente
il problema è che non riesco a far scegliere alla maschera su quale tavolo inserire il nome del cliente!
ovvero se nella maschera inserisco tavolo1 e nome cliente, la query mette lo stesso nome su tutti e due i tavoli.... help....

16 Risposte

  • Re: Query di aggiornamento

    Non ho capito cosa devi fare.
    Puoi fare un'esempio chiaro....?
  • Re: Query di aggiornamento

    Ops ero fuso di cervello
    allora esempio: ho una tabella con 5 campi: nometavolo1 ; coperti1 ; nometavolo2 ; coperti2 ; data
    poi ho una maschera con 4 campi: data inizio; data fine; nome cliente e numero coperti (tutti campi non associati).
    in pratica apro la maschera e prenoto il tavolo1 dal giono x al giorno y col nome del cliente e il numero dei coperti utilizzanzo una query di aggiornamento.
    e fin qui tutto ok!
    adesso se voglio fare la stessa cosa sul tavolo2 devo creare un'altra query di aggiornamento perchè se utilizzo quella del tavolo1, questa mi aggiorna tutti e due i tavoli con lo stesso nome cliente e numero dei coperti che metto nella maschera! in pratica non riesco a dire alla maschera (o alla query di aggiornamento) su quale tavolo si deve piazzare per aggiornare i dati.
    siccome i tavoli sono 90 non c'è un altro modo per evitare di fare 90query di aggiornamento per il pranzo? (e altri 90 per la cena!)
    grazie a tutte le anime buone che mi risponderanno
  • Re: Query di aggiornamento

    Ciao

    Crea una semplice tabella con

    Id(contatore - chiave primaria) - numero_tavolo - numero_coperti - data - ora

    in questo modo ti basta andare in cerca del numero di tavolo in una determinata data-ora modificando solo i parametri passati alla query. es.

    insert into Tavoli (numero_tavolo, numero_coperti, data,ora) values(13, 2, '01/01/2012', '20:00')

    update Tavoli Set numero_coperti=3 Where numero_tavolo=13 And data='01/01/2012' And ora = '20:00'

    Questo è solo un esempio, ovviamente. Le date e ore, francamente, non ricordo come le tratta access, sono andato a memoria. Siccome è praticamente impossibile che un tavolo sia occupato alla stessa ora dello stesso giorno, direi che è più che sicura la cosa. Per liberare il tavolo puoi o aggiungere un campo che indichi se è libero o no oppure eliminare la riga. Io consiglio l'aggiunta del campo, in modo da crearti uno storico.

    Spero di essere stato chiaro, altrimenti sono qua
  • Re: Query di aggiornamento

    Scusa ma hai solo 2 Tavoli...?

    Scherzi a parte... se i Tavoli sono MOLTI no puoi pensare di aggiungere un CAMPO o due ogni volta che aggiungi un nuovo Tavolo...!
    La struttura dovrebbe essere in Verticale... non orizzontale.
    Tabella Tavoli
    Tabella Prenotazioni

    Tabella Tavoli
    
    IdTavolo [Campo PK=Counter]
    NumeroTavolo
    NumeroCoperti

    Tabella Prenotazioni
    
    IdPrenotazione [Campo PK=Counter]
    IdTavolo [Campo FK Numerico Intero Lungo]
    DataPRenotazione
    DataRichiesta
    Nominativo
    RiferimentoTelefonico
    ecc...
    In questo modo per ogni Tavolo usando una Maschera con SottoMaschera puoi definitr le prenotazioni.

    Da quì ora il tuo problema mi sfugge ancora, ma se non hai questa struttura il problema è a monte...
  • Re: Query di aggiornamento

    Matius, ascolta il suggerimento di Alex, dalla fretta m'è sfuggita la necessita della seconda tabella Avevo puntato alla semplicità, mea culpa
  • Re: Query di aggiornamento

    Ragazzi vi ringrazio tutti per le dritte ma limitatevi al problema che vi ho posto....
    se c'è soluzione bene altrimenti per ora farò tutte le query necessarie
    alex hai pienamente ragione a dire che la struttura dovrebbe essere verticale ma purtroppo mi è stato chiesto di modificare entro giugno un vecchio database di gestione tavoli che funziona in base alla loro disposizione grafica su una maschera.
    detto questo capisci bene che non posso creare sottomaschere altrimenti il mio capo non capisce fisicamente in quale parte della sala ho piazzato il cliente.
    magari l'anno prossimo mi ci metto e lo rifaccio come Cristo comanda....
    a proposito i tavoli sono 90 e non 2 ! volevo semplificare l'esempio
    grazie anche a te fonzarelli!
  • Re: Query di aggiornamento

    Beh, avere una tabella diversa non vuol dire avere anche una sottomaschera. La soluzione che ti abbiamo dato si limita al tuo problema. Te fai queste due tabelle, ti crei la rappresentanza grafica del locale, ad ogni tavolo disegnalo gli dai un id univoco, il quale corrisponderà ad un record nella tabella tavoli. Recuperato il tavolo corrispondente ti vai a interagire con la tabella prenotazioni. Non devi cambiare nulla a livello grafico.
  • Re: Query di aggiornamento

    fonzarelli ha scritto:


    beh, avere una tabella diversa non vuol dire avere anche una sottomaschera. La soluzione che ti abbiamo dato si limita al tuo problema. Te fai queste due tabelle, ti crei la rappresentanza grafica del locale, ad ogni tavolo disegnalo gli dai un id univoco, il quale corrisponderà ad un record nella tabella tavoli. Recuperato il tavolo corrispondente ti vai a interagire con la tabella prenotazioni. Non devi cambiare nulla a livello grafico.

    cioè in parole povere dovrei fare per ogni tavolo due tabelle con relazione uno a molti e poi piazzarle fisicamte su una maschera?
    tieni presente che io adesso ho una maschera con 180 campi (90 campi tavoli + 90 campi coperti) piazzati nella maschera esattamente come sono nella sala....
    scusami ma le mie capacità hanno un limite
  • Re: Query di aggiornamento

    No, non ci siamo capiti

    a ogni tavolo corrisponde un record nella tabella tavoli, non due tabelle a quel tavolo sarà associato un id che corrisponde al record

    Per record si intende una riga, se era questo che ti mandava in confusione
  • Re: Query di aggiornamento

    fonzarelli ha scritto:


    no, non ci siamo capiti

    a ogni tavolo corrisponde un record nella tabella tavoli, non due tabelle a quel tavolo sarà associato un id che corrisponde al record

    Per record si intende una riga, se era questo che ti mandava in confusione
    credo di aver capito.... dovrei lavorarci un po anzi dovrei rifarlo completamente
    cmq mi pare di capire che non c'è modo di farlo con una query di aggiornamento... sai se riesco a sfruttare questo già fatto (anche se fa schifo) tanto meglio
  • Re: Query di aggiornamento

    Come dici te basta che rendi parametrico i valori per la query. Diciamo che per rendere il tutto dinamico devi scrivere anche del codice, ma ci rimetterai in prestazioni molto molto presto, non so se ne convenga
  • Re: Query di aggiornamento

    fonzarelli ha scritto:


    .... devi scrivere anche del codice, ma ci rimetterai in prestazioni molto molto presto, non so se ne convenga
    infatti speravo in qualche dritta via codice ..... ma perchè dici che ci rimetto in prestazioni? tutti i libri che ho letto non dicono altro!
  • Re: Query di aggiornamento

    Perchè non è una tabella normalizzata, e come tale le probabilità di perdere prestazini sono alte per via del gran numero di record che vi saranno presenti

    Per quanto riguarda il codice, di vba ormai sono arrugginito. A meno che non ti interfacci con qualche altro tipo di linguaggio, tipo visual basic o C# francamente non ho capito bene com'è composto il tuo progetto
  • Re: Query di aggiornamento

    matius ha scritto:


    fonzarelli ha scritto:


    .... devi scrivere anche del codice, ma ci rimetterai in prestazioni molto molto presto, non so se ne convenga
    infatti speravo in qualche dritta via codice ..... ma perchè dici che ci rimetto in prestazioni? tutti i libri che ho letto non dicono altro!
    Tutti i libri che hai letto partono dal PRESUPPOSTO che la struttura sia PERFETTA.

    La risposta di Fonzarelli va interpretata non presa così in modo ASETTICO.

    La sostanza è che se parti da un progetto SBAGLIATO, l'unico modo che hai per poi trovarci i piedi e farlo funzionare è andare a scrivere QUINTALI di CODICE per aggirare gli errori strutturali.

    Questo è palesemente INEFFICIENTE.
Devi accedere o registrarti per scrivere nel forum
16 risposte