Prenotazioni posti

di il
53 risposte

53 Risposte - Pagina 2

  • Re: Prenotazioni posti

    SqlAppend = "INSERT INTO posti ([ID UTENTE], [ID spettacolo], [DATA inizio], [posto prenotato])"

    SqlAppend = SqlAppend & " VALUES (" & Utente & ", " & ID & ", " & Format(Date, "\#mm\/dd\/yyyy\#") & ", "
    SqlAppend = SqlAppend & TipoPr & ", " & Format(Me.NOME, "\#mm\/dd\/yyyy\#") & ", #" & Me.POSTO & "#)"
    Primo : il codice va inserito utilizzando il tag Code (Pulsante Code - Editor Completo).

    Secondo :
    ma li vedi gli errori "g'astronomici" della query ?
    Vuoi inserire 1 record con 4 campi e poi passi 6 valori !
    Che sintassi è quella del format della data ?
  • Re: Prenotazioni posti

    Option Compare Database

    Private Sub Comando7_Click()
    Dim Res As VbMsgBoxResult
    Dim Condizione, Messaggio As String
    Dim SqlAppend As String
    Dim NOME As String
    Dim TIPOPR As Integer



    Messaggio = "Vuoi prenotarti "



    Messaggio = Messaggio & "alla fila " & Me.NOME & " posto " & Me.POSTO & "?"
    Res = MsgBox(Messaggio, vbYesNo, "Registrazione")

    If Res = vbYes Then
    SqlAppend = "INSERT INTO [POSTI] ([ID UTENTI], [ID spettacolo], [DATA inizio], [posto prenotato])"
    SqlAppend = SqlAppend & " VALUES (" & [ID Utenti] & ", " & [ID SPETTACOLO] & ", " & [posto prenotato] & ", " & Format(Date, "\#mm\/dd\/yyyy\#") & ", "
    Debug.Print SqlAppend
    DoCmd.SetWarnings False
    DoCmd.RunSQL (SqlAppend)
    DoCmd.SetWarnings True
    On Error Resume Next
    Me.Requery


    End If
    End Sub
  • Re: Prenotazioni posti

    Purtroppo con questa parte sto avendo difficoltà, per questo sto chiedendo il vostro aiuto e spero che riusciate a darmi una mano. Io vi ringrazio sempre per ogni risposta
  • Re: Prenotazioni posti

    asteraster ha scritto:


    Ti ringrazio ancora per l'aiuto ma purtroppo ancora non mi parte. Tu, così alla cieca, come lo scriveresti? ahahhaha
    Alla cieca non mi viene proprio nulla... mi dispiace...

    comunque il debug.print non serve per "farlo partire" ma per permetterti di vedere che, come sottolineato anche da Max, il predicato SQL proprio non và... Quindi, ribadisco, usa il debug, prova a creare una query manualmente (non dal VBA) con quanto ricavato in fase di debug, correggi la query (le indicazioni di Max capitano a proposito) e infine adatta il codice VBA al fine di renderlo uguale alla correzione fatta nella query.

    Quando vedrò che da parte tua proverai a seguire le indicazioni che ti ho dato possiamo proseguire...
  • Re: Prenotazioni posti

    asteraster ha scritto:


    Purtroppo con questa parte sto avendo difficoltà, per questo sto chiedendo il vostro aiuto e spero che riusciate a darmi una mano. Io vi ringrazio sempre per ogni risposta
    Senti, sei in un forum tecnico non a un quiz ... cerca di impegnarti.
    Guarda sull help quale è la sintassi della funzione format ....
    Se scrivi nella query di insert dei campi con un certo ordine, quando metti il valore DEVI rispettare lo stesso ordine ....
    La query deve essere sintatticamente corretta ....

    SCRIVI IL TUO CODICE DENTRO IL TAG CODE !!!! (editor avanzato pulsante Code che è tra i pulsanti Quote e List)
  • Re: Prenotazioni posti

    Ovviamente il risultato del debug lo vedi nella finestra immediata... lo davo per scontato...
  • Re: Prenotazioni posti

    asteraster ha scritto:


    SqlAppend = SqlAppend & " VALUES (" & Utente & ", " & ID & ", " & Format(Date, "\#mm\/dd\/yyyy\#") & ", "
    'SqlAppend = SqlAppend & " VALUES (" & Utente & ", " & ID & ", #" & Date & "#, "
    'SqlAppend = SqlAppend & TipoPr & ", #" & Me.Data & "#, #" & Me.ORARIO & "#)"
    SqlAppend = SqlAppend & TipoPr & ", " & Format(Me.DATA, "\#mm\/dd\/yyyy\#") & ", #" & Me.ORARIO & "#)"
    Doamdona di rito:

    ma se in Utente c'e' il carattere "doppi apici" ??????

    Che succede??????

    Ma se sicuro che la stringa che ne esce sia uno statement SQL ????

    Mi sa' che ci sono ancora un sacco di patate da pelare
  • Re: Prenotazioni posti

    Option Compare Database

    Private Sub Comando7_Click()
    Dim Res As VbMsgBoxResult
    Dim Condizione, Messaggio As String
    Dim SqlAppend As String
    Dim NOME As String
    Dim TIPOPR As Integer
    Dim STRINGA

    ID = Nz(DLookup("[ID FILA]", "POSTI", "Nome = " & "'" & Me.NOME & "'"))

    Condizione = "[ID SPETTACOLO] = " & ID
    Condizione = Condizione & " AND [ID UTENTI] = " & Utente
    Condizione = Condizione & " AND [DATA INIZIO] = " & Format(Me.DATA_INIZIO, "\#mm\/dd\/yyyy\#") ' FORMATO AMERICANO!!!
    Condizione = Condizione & " AND [POSTO PRENOTATO] = " & SI

    Messaggio = "Vuoi prenotarti "



    Messaggio = Messaggio & "alla fila " & Me.NOME & " posto " & Me.POSTO & "?"
    Res = MsgBox(Messaggio, vbYesNo, "Registrazione")

    If Res = vbYes Then

    SqlAppend = "INSERT INTO POSTI ([ID UTENTI], [ID SPETTACOLO], [DATA INIZIO], [POSTO PRENOTATO])"

    SqlAppend = SqlAppend & " VALUES (" & Utente & ", " & ID & ", " & Format(Date, "\#mm\/dd\/yyyy\#") & ", " & SI & ") "


    Debug.Print SqlAppend
    DoCmd.SetWarnings False
    DoCmd.RunSQL (SqlAppend)
    DoCmd.SetWarnings True
    On Error Resume Next
    Me.Requery

    End If
    End Sub

    HO FATTO IN QUESTO MODO MA MI DA SEMPRE ERRORE.
    Angelo_Tbp ho fatto come mi hai detto tu e mi da sempre errore (giustamente) ma non riesco a capire l'errore. Questo è un argomento che faccio per la prima volta (vba) è mi sto impegnando, ma giustamente ho delle lacune che sto cercando di colmare. L'impegno c'è e glielo sto mettendo!
  • Re: Prenotazioni posti

    Dirti di inserire il codice all' interno del tag Code mi pare superfluo ..... tanto NON recepisci!
    Dirci che ti da errore NON ci (ti) aiuta.

    Mostraci che cosa contiene la variabile SqlAppend (ovvero il risultato di debug.print SqlAppend)
  • Re: Prenotazioni posti

    asteraster ha scritto:


    ..omesso

    Condizione = "[ID SPETTACOLO] = " & ID
    Condizione = Condizione & " AND [ID UTENTI] = " & Utente
    ...omesso...

    HO FATTO IN QUESTO MODO MA MI DA SEMPRE ERRORE.
    Angelo_Tbp ho fatto come mi hai detto tu e mi da sempre errore (giustamente) ma non riesco a capire l'errore. Questo è un argomento che faccio per la prima volta (vba) è mi sto impegnando, ma giustamente ho delle lacune che sto cercando di colmare. L'impegno c'è e glielo sto mettendo!
    Mi associo alla richiesta di Max circa il debug.print e aggiungo... Che te ne fai della variabile Condizione nel codice? Mi sembra che tu non l'abbia mai richiamata...

    Ps:
    Sul serio.. Capisco la difficoltà che puoi avere nell'implementare codice VBA ma non concepisco la difficoltà che hai nel taggare il codice nei tuoi post
  • Re: Prenotazioni posti

    INSERT INTO POSTI ([ID UTENTI], [ID SPETTACOLO], [DATA INIZIO], [POSTO PRENOTATO]) VALUES (, 1, #03/18/2017#, ) 
    Questo è il risultato di debug dalla finestra immediata.
  • Re: Prenotazioni posti

    Ok ora lascia un attimo d parte il VBA (dove hai detto di aver difficoltà) e crea una query di accodamento manualmente ovvero attraverso gli strumenti propri di access e metti dei valori a mano (quelli che hai tentato di mettere via codice ad esempio... oppure semplicemente settali rispettivamente a 1, 1, #3/18/2017# e 0) ai campi [ID UTENTI], [ID SPETTACOLO], [DATA INIZIO], [POSTO PRENOTATO] nella tablla Posti.... fatto questo posta il predicato SQL della query...

    Questo esula dal VBA quindi non dovresti aver problemi a farlo... mi sbaglio?

    e comunque non mi hai ancora scritto cosa intendi fare di Condizione...

    ______
    x info (ma conviene tornarci dopo che avrai provato a realizzare manualmente la query di accodamento)

    Asteraster ha scritto:


    SqlAppend = SqlAppend & " VALUES (" & Utente & ", " & ID & ", " & Format(Date, "\#mm\/dd\/yyyy\#") & ", " & SI & ") "
    - Hai notato che nel codice la variabile utente non assume nessun valore? (a tal proposito ti consiglio di usare il debog ovvero l'inserimento dei punti di interruzione)
    - inoltre devi sapere che il campo Si/NO accetta valori vero/falso oppure -1 e 0 e non SI e NO

    e a causa di ciò nel debug.print che hai postato

    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? )
    mancano i due valori...
  • Re: Prenotazioni posti

    INSERT INTO POSTI ( [ID UTENTI], [ID SPETTACOLO], [DATA INIZIO], [POSTO PRENOTATO] )
    SELECT POSTI.[ID UTENTI], POSTI.[ID SPETTACOLO], POSTI.[DATA INIZIO], POSTI.[POSTO PRENOTATO]
    FROM POSTI
    WHERE (((POSTI.[ID UTENTI])=1) AND ((POSTI.[ID SPETTACOLO])=1) AND ((POSTI.[DATA INIZIO])=#3/18/2017#) AND ((POSTI.[POSTO PRENOTATO])=True));
    
    Questo è il codice con la query di accodamento.
    Praticamente dal login l'utente si toverà sulla propria pagina utente da li, tramite un click, potrà arrivare in un'altra maschera che, dopo aver inserito il titolo dello spettacolo interessato, potrà visionare i posti disponibili, sceglierne uno e prenotarlo. Nel momento in cui fa questo, naturalmente, la tabella posti dovrà aggiornarsi, nel relativo posto prenotato, inserendo appunto l'id dell'utente, l'id dello spettacolo, la data della prenotazione (che ho accidentalmente chiamato "data d'inizio") e il campo "posto prenotato" passerà da "no" a "si"
  • Re: Prenotazioni posti

    A mano

    asteraster ha scritto:


    INSERT INTO POSTI ( [ID UTENTI], [ID SPETTACOLO], [DATA INIZIO], [POSTO PRENOTATO] )
    SELECT POSTI.[ID UTENTI], POSTI.[ID SPETTACOLO], POSTI.[DATA INIZIO], POSTI.[POSTO PRENOTATO]
    FROM POSTI
    WHERE (((POSTI.[ID UTENTI])=1) AND ((POSTI.[ID SPETTACOLO])=1) AND ((POSTI.[DATA INIZIO])=#3/18/2017#) AND ((POSTI.[POSTO PRENOTATO])=True));
    Da codice VBA

    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? )
    Noti le differenze? Nel codice hai settato i valori mediante VALUES.. Nella query fatta a mano hai accodato direttamente la select... Ed hai messo anche la clausola where questo sottolinea il fatto che con le query di access di sai districare meglio che con il VBA

    Il corretto modo di implementare la soluzione, a mio avviso è una via di mezzo tra il primo predicato SQL e il secondo...

    Sicuramente devi accodare i valori con una SELECT (e non con VALUES) ma non deve essere la select di una tabella reale ovvero della tabella posti.

    Ti dico già da subito che la clausola WHERE così come l hai fatta non mi convince... Tuttavia credo che, opportunatamente modificata, possa servire. Vuoi provare a fare la Query di accodamento cosi come descritta sopra ? Suggerimento: Quella del debug era quasi esatta ma mancano i valori che ti ho marcato in rosso... Ovviamente devi crearla da visualizzazione SQL( copia e incolla) poi guarda però anche la struttura così Vedi le differenze.. Siamo ancora in corso d'opera ma é tutto finalizzato alla tua richiesta...
  • Re: Prenotazioni posti

    Si appunto il mio problema sta nel ricollegare l'id utente che uso su values con quello dell'utente che fa la richiesta
Devi accedere o registrarti per scrivere nel forum
53 risposte