Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    6

    L'input per la query deve contenere almeno una query o una tabella

    Ciao ragazzi sono nuovo nel forum. Vi scrivo perchè, per motivi universitari, sto facendo un progetto di un database con Microsoft Access e sto avendo dei problemi con Visual Basic per creare apposite funzioni dell'applicazione Vi spiego il mio problema.
    Vorrei inserire all'interno della tabella ACQUISTA i campi:

    1. ID, proveniente dalla tabella GIOCHI
    2. ID, proveniente dalla tabella USERS
    3. Data_Acquisto, contenuto (come da nome) nella tabella acquista.


    Sto cercando di procedere a step, quindi per ora mi sto concentrando sull'ID della tabella giochi, e sulla Data di acquisto.
    Questo � il codice che ho utilizzato su Visual Basic

    -----------------------------------------------
    Private Sub Comando33_Click()
    DoCmd.RunSQL "INSERT INTO acquista (ID_Gioco,Data_Acquisto)
    VALUES((SELECT (Id)
    FROM giochi
    WHERE giochi.id = id.value, Date())"

    End Sub
    -----------------------------------------------

    Come gia' detto sto procedendo step by step, ho verificato che se eseguo i due insert separati, quindi con due "DoCmd.RunSQL", inserisce sia l'id che la data (presa dal sistema), ma in due righe differenti (come tra l'altro mi aspettavo), di conseguenza ho unito le due cose sperando che funzionasse.. A livello di sql non credo ci siano errori, forse mi sfugge qualcosa di Visual Basic.
    L'errore che continua a darmi � il seguente "l'input per la query deve contenere almeno una tabella o una query", non riesco veramente a capire cosa intenda

    Potreste aiutarmi
    PS: Sono nuovo, prima di aprire una discussione ho letto il regolamento, spero di aver fatto tutte le cose in maniera corretta, grazie in anticipo

  2. #2
    metti il codice tra i tag [ code ] altrimenti viene fuori una faccina

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    6
    [code]
    Private Sub Comando33_Click()
    DoCmd.RunSQL "INSERT INTO acquista (ID_Gioco,Data_Acquisto)
    VALUES((SELECT (Id)
    FROM giochi
    WHERE giochi.id = id.value, Date())"
    End Sub
    [code]

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    6
    Ciao, scusami eh apparte che ho sbagliato di nuovo ad inserire il codice, comunque non me lo fa modificare, mi dice SQL injection....

  5. #5
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Non capisco la tua query...
    L'ID del gioco ce l'hai già (ID.Value) quindi che senso ha fare un'ulteriore (SELECT (ID)...) ???
    Boh.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    6
    Si capisco può sembrare ambiguo hai ragione, dovevo specificare anche questa cosa scusatemi, in "ID.value", ID indica il nome della casella all'interno della maschera creata con Access, contente appunto l'id specifico che a me serve, altrimenti mi avrebbe inserito in acquista tutti gli ID della tabella giochi..

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    523
    impossibile modificare il messaggio precedente, tenetelo così com'é
    Ultima modifica di marino51; 09-01-2018 a 17:13

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    523
    che chaos modificare un messaggio ...

    considerando solo la sintassi prova così,
    codice:
    INSERT INTO acquista ( ID_Gioco, Data_Acquisto )
      SELECT
        ( SELECT Id FROM giochi WHERE giochi.id = id.value )
        , Date()

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    6
    Solito errore... cioe' che poi non ha senso un errore del genere, veramente non lo capisco..

  10. #10
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Non è ambiguo, è proprio sbagliato.
    Devi passare alla stringa SQL il valore di ID.Value, non ID.Value.
    Se tu scrivi all'interno della stringa SQL:

    codice:
    WHERE giochi.id = id.value
    stai dicendo al motore SQL che ID.Value è un campo della tabella, invece è un valore di un controllo del form, quindi devi concatenare il valore alla stringa SQL.


    Comunque, siccome questo NON è il forum di MSAccess , allora hai sbagliato forum

    Segnalo ad un moderatore che sposterà il messaggio nel forum corretto.

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.