Prenotazioni posti

di il
53 risposte

53 Risposte - Pagina 3

  • Re: Prenotazioni posti

    Buongiorno...
    Quando scrivevo di tentare la creazione di una query di accodamento inserendo i valori mi riferivo a qualcosa del genere:
    INSERT INTO POSTI ( [ID UTENTI], [ID SPETTACOLO], [DATA INIZIO], [POSTO PRENOTATO] )
    SELECT 1 AS Espr1, 1 AS Espr2, #3/18/2017# AS Espr3, -1 AS Espr4;
    
    Nella formula c'è SELECT e non VALUES ma, come puoi vedere, la SELECT non va a selezionare alcuna tabella reale ma seleziona, per l'appunto, dei valori inseriti esplicitamente dal programmatore della query. .. i vari "Espr" li mette access autonomamente quando crei la query manualmente.

    Come puoi vedere é abbastanza simile al debug (salvo l'uso di "VALUES" e l'omissione dei parametri utente e SI/NO) ch per memoria riposto nuovamente...
    Codice del Debug

    asteraster ha scritto:


    INSERT INTO POSTI ([ID UTENTI], [ID SPETTACOLO], [DATA INIZIO], [POSTO PRENOTATO]) VALUES (dov'il valore dell'utente?, 1, #03/18/2017#, dov'è il valore SI? )
    e se la trasformi in struttura vedrai che era anche semplice da realizzare (ovviamente mi riferisco al codice in alto e non a quello del debug)... ora le differenze dovrebbero essere più evidenti.

    Ora Non ti rimane che cambiare i valori inseriti manualmente con i riferimenti della maschera ... (mi riferisco a 1, 1, #3/18/2017# e -1 )Vuoi tentare?

    Ps:
    Per correttezza d'informazione ho cambiato il mio ultimo post per quanto attiene la parte relativa a "VALUES"
  • Re: Prenotazioni posti

    Condizione = "[ID SPETTACOLO] = " & ID
        Condizione = Condizione & " AND [ID UTENTI] = " & Utente
        Condizione = Condizione & " AND [DATA INIZIO] = " & Format(Me.DATA_INIZIO, "\#mm\/dd\/yyyy\#")
        Condizione = Condizione & " AND [POSTO PRENOTATO] = " & -1
    Ma già così non sto facendo riferimento?
    SqlAppend = SqlAppend & " VALUES (" & Utente & ", " & ID & ", " & Format(Date, "\#mm\/dd\/yyyy\#") & ", " & -1 & ") "
    Nell'ignoranza mi sembra tutto quadrare quando non lo è

    L'ID utente non va inserito manualmente, il codice dovrebbe fare in modo di leggere quello dell'id collegato.
  • Re: Prenotazioni posti

    Si ma con CERTEZZA posso dirti due cose errate che ho visto nel tuo codice:
    - Condizione non viene integrata in SqlAppend infatti in debug.print non la vedi... Motivo per cui ti chiedevo e ti chiedo ancora cosa ne fai di condizione all'interno del codice una volta che le hai assegnato il valore?
    - la variabile utente é vuota.

    Perché non fai la query suggerita nrll ultimo post?
  • Re: Prenotazioni posti

    Sto inoltre usando una query di aggiornamento (update) invece che con Insert into. Ho visto, sempre dalla query manuale che, per quello che voglio fare, è la soluzione migliore. Il discorso non cambia vero?
  • Re: Prenotazioni posti

    Faccio lo stesso la query con quello che mi hai detto nell'ultimo post
  • Re: Prenotazioni posti

    L'ho fatto e naturalmente così funziona tranquillamente
  • Re: Prenotazioni posti

    Quindi ora hai una query update invece di una di accodamento ed hai anche inserito i riferimenti della maschera come suggerito nell'ultimo post? Vuoi gentilmente postare il predicato SQL? Cosi vediamo se e come integrarlo nel codice...
  • Re: Prenotazioni posti

    UPDATE POSTI SET POSTI.[ID UTENTI] = 1, POSTI.[DATA INIZIO] = #9/29/2017#, POSTI.[ID SPETTACOLO] = 1, POSTI.[POSTO PRENOTATO] = -1;
    
    Spero intendessi questo
  • Re: Prenotazioni posti

    Più o meno

    Il consiglio è di risolvere il problema prima mediante le query manuali e poi trasformiamo il tutto in codice VBA se è quello che vuoi.
    Dico questo non per farti perdere tempo ma perché il codice VBA che andremo a scrivere non fa altro che replicare quello che sto cercando di farti fare manualmente e, consentimi, se hai difficoltà a farlo manualmente figurati direttamente in VBA!!!

    Quindi, continuando a lasciare da parte VBA e armati di calma e sangue freddo cerchiamo di procedere per gradi.

    Abbiamo una query di UPDATE. E' sufficiente? Sicuramente no.

    Allora cerco di dedurre quanto NON hai scritto. Se hai una query di UPDATE che aggiorna la tabella "posti" probabilmente avrai, nella stessa tabella, un elenco di record ben definito dove ci sono già tutti i posti inseriti ma io per il momento, riguardo ai campi della tabella hai scritto solo ID UTENTI, DATA INIZIO, ID SPETTACOLO, POSTO PRENOTATO e ho scoperto rovistando nel tuo codice che forse hai anche un [ID FILA]... ci sono per caso altri campi nella tabella POSTI che devi dire? Prova a spiegare con parole tue e in maniera dettagliata cosa vuoi fare scrivendo tutti i nomi propri delle tabelle che stai usando e le eventuali relazioni intercorrenti... Non aver paura di sembrare ridondante o altro...cerca piuttosto, nel tuo interesse, di essere più dettagliato e cristalline che puoi. Altrimenti si rischia di incentrare il lavoro su una query di accodamento invece che una di Aggiornamento o ancora peggio si rischia di dover rifare tutto dall'inizio poiché si è affrontato il problema costruendo delle fondamenta completamente errate... mi riferisco a Tabelle (e relativi campi) e Relazioni.
  • Re: Prenotazioni posti

    Nella tabella posti ho:
    Id posti
    id fila ( relazione con tb. Fila per identificare il nome della fila rispetto all'd)
    id abbonamento ( a seconda dell'abbonamento l'utente abbonato avrà un posto prenotato per tutti gli spettacoli del suo abbonamento
    id spettacolo (per il biglietto singolo)
    data inizio
    posto prenotato (si/no) [quindi alcuni posti saranno prenotati per li abbonati, gli altri saranno liberi e riservati per chi vorrà prendere il biglietto che è quello che sto cercando di fare]
  • Re: Prenotazioni posti

    Ok. Ma ho ancora delle cose che non ho compreso:

    -[Id spettacolo] lo intendi come un campo che rappresenta il numero del singolo biglietto preso da un blocchetto di un abbonamento..... Oppure é l'identificativo di un biglietto acquistato singolarmente e quindi non facente parte di un abbonamento.... oppure é l'identificativo di un determinato spettacolo teatrale?

    -La tabella posti ha già tutti i records relativi a tutti i posti disponibili in teatro per tutti gli spettacoli? (condizione necessaria per il buon funzionamento di una query di aggiornamento che, come dice la parola, aggiorna dei record già esistenti e non ne aggiunge di nuovi come accade nella query di accodamento)

    Infine, e non di minore importanza, servirebbero i nomi propri dei controlli (che hai nella maschera visibile all'utente che deve effettuare la prenotazione) che vuoi utilizzare per valorizzare da codice i campi della query di aggiornamento.
  • Re: Prenotazioni posti

    - identificativo di uno spettacolo teatrale

    - ha già tutti i record per tutti i posti disponibili

    -Nella maschera dei posti liberi sono presenti:

    - Nome fila ( il nome proprio è "nome")
    - posto (il nome proprio è "posto")
    - data inizio (il nome proprio è "data")
    - pulsante prenota (nome proprio "comando7")

    La maschera funziona come una query parametrica, prima mi dice di inserire il nome dello spettacolo interessato e poi apre la schermata con i dati detti sopra
  • Re: Prenotazioni posti

    Non so perché ma ho il presentimento che nella maschera tu abbia dei controlli che non restituiscono direttamente un valore numerico... lo dimostra il fatto che nel codice hai scritto:
    ID = Nz(DLookup("[ID FILA]", "POSTI", "Nome = " & "'" & Me.NOME & "'"))
    ...il che fa presupporre che nella tabella posti hai anche un campo "Nome"... vero?

    ...spero di sbagliarmi... potresti dirmi il tipo di dato restituito da ogni controllo nella maschera?

    ,, per come è concepita la query è necessario passarle dei valori numerici per [ID UTENTI] e [ID SPETTACOLO]; un tipo Data per il campo [Data] e in realtà avrebbe bisogno anche di un indice univoco che si riferisca al posto da prenotare altrimenti non saprebbe quale spuntare a SI.. non è che per caso si tratta di "posto"? ed in caso affermativo.. è univoco?
  • Re: Prenotazioni posti

    No, non ho un campo nome nella tabella posti. "Nome" è il nome della casella che contiene i valori del campo "posto". Per fare questo mi sono aiutato da internet ma a quanto pare ho sbagliato. Se per indice univoco ti riferisci alla pk, allora si è "ID POSTI"
  • Re: Prenotazioni posti

    Angelo_Tbp ha scritto:


    ... potresti dirmi il tipo di dato restituito da ogni controllo nella maschera?
    l'origine controllo sarebbe anche meglio...
Devi accedere o registrarti per scrivere nel forum
53 risposte