Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Problemi di inserimento record

    Sto cercando di inserire un record in una tabella SQl che si chiama VISITE avente quattro campi:
    IdVisita (chiave primaria che si autoincrementa),
    DataVisita di tipo smalldatetime
    OraVisita di tipo datetime
    IpVisita di tipo char
    con il seguente codice:
    <%@LANGUAGE="VBSCRIPT"%>
    <html>
    <head>
    <title>Documento senza titolo</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>

    <%
    dim ip, datavis, oravis
    ip = Request.ServerVariables("REMOTE_ADDR")
    datavis = Date()
    oravis = Time()

    Dim conn, rs
    conn = "Provider=SQLOLEDB;data Source=ServerSQL;Initial Catalog=Pippo;User Id=Pluto; Password=Paperino"
    SQL = "INSERT INTO visite(datavisita, oravisita, ipvisita) VALUES (datavis, oravis, ip)"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open SQL, conn, 3, 3

    rs.Close()
    Set rs = Nothing
    %>

    <body>
    Prova Inserimento
    </body>
    </html>

    All'apertura della pagina mi viene visualizzato il seguente messaggio:

    Microsoft OLE DB Provider for SQL Server error '80040e14'
    The name 'datavis' is not permitted in this context. Only constants, expressions, or variables allowed here. Column names are not permitted.
    /insdata.asp, line 18

  2. #2
    Utente di HTML.it L'avatar di pip19
    Registrato dal
    Dec 2001
    Messaggi
    512
    cambia nome alla colonna...

    a me capitava con il campo NOTE...

    lui lo riconosceva con un NOT, come un'operatore

  3. #3
    Devi inserirli come VALORI di variabili...

    Inoltre me ti trovi un errore per il campo IpVisita perché se lo hai dichiarato char devi fare l'inserimento attraverso gli apici singoli '

    SQL = "INSERT INTO visite(datavisita, oravisita, ipvisita) VALUES (" & datavis & ", " & oravis & ", '" & ip & "')"

    Ciao
    Lele
    Emanuele Boccaletti
    _____________________________________
    www.i23.eu
    emanuele@i23.eu

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    In SQL Server le date vanno tra apici.

    Roby

  5. #5
    Ho corretto la stringa Sql nel seguente modo ed ora il messaggio di errore è il seguente:

    Microsoft OLE DB Provider for SQL Server error '80040e14'
    Line 1: Incorrect syntax near '.17'.
    /insdata.asp, line 19

    Da notare che ogni volta che aggiorno la pagina varia il valore nella seconda riga di errore '.17'.

    Grazie per le risposte

    Franco

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Ovvio stai inserendo l'orario...
    Posta la stringa che usi.

    Roby

  7. #7
    Utente bannato
    Registrato dal
    Oct 2003
    Messaggi
    372
    quel'è il "seguente modo"?

  8. #8
    Questi sono i messaggi di errore ad ogni aggiornamento della pagina:

    alla prima richiesta:

    Microsoft OLE DB Provider for SQL Server error '80040e14'
    Line 1: Incorrect syntax near '.56' .
    /InsData.asp, line 19

    se aggiorno la pagina:

    Microsoft OLE DB Provider for SQL Server error '80040e14'
    Line 1: Incorrect syntax near '.44' .
    /InsData.asp, line 19

    se aggiorno ancora:

    Microsoft OLE DB Provider for SQL Server error '80040e14'
    Line 1: Incorrect syntax near '.34' .
    /InsData.asp, line 19

    La stringa che uso è la seguente

    SQL = "INSERT INTO visite(datavisita, oravisita, ipvisita) VALUES (" & datavis & "," & oravis & ",'" & ip & "')"

    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open SQL, conn, 3, 3

  9. #9
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559

    Prima ti ho detto che la data e l'ora vanno tra apici in SQL Server.

    Roby

  10. #10
    Finalmente correggendo la stringa nel modo seguente il record viene inserito:

    SQL = "INSERT INTO visite(datavisita, oravisita, ipvisita) VALUES ('" & datavis & "','" & oravis & "','" & ip & "')"


    Per quanto riguarda il campo OraVisita di tipo datetime e che dovrebbe contenere l'ora della visita ad esempio 12.15.00,
    il valore rilevato dalla variabile oravis = Time() che se visualizzato è corretto, viene inserito come se fosse una data ad esempio 14/12/2004. Forse non è giusto il tipo di dato?
    Faccio presente che il server Sql è in inglese e per inserire la data della visita nel campo DataVisita ho dovuto invertire il giorno ed il mese.

    Inoltre se non chiudo il recordset la pagina viene visualizzata senza errori, se lo chiudo:

    rs.Close()
    Set rs = Nothing

    viene visualizzato il messaggio seguente

    ADODB.Recordset error '800a0e78'
    Operation is not allowed when the object is closed.
    /insdata.asp, line 21

    Chiedo scusa per le troppe domande, ma come avrete capito sono un principiante inesperto.

    Grazie per l'attenzione.

    Franco

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 © 2025 vBulletin Solutions, Inc. All rights reserved.