Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Come risolvere 'Microsoft JET Database Engine (0x80040E14) '

    Allora dopo tante peripezie sono venuto a capo del problema (almeno il mio).

    Prima precisazione: il db è access 2000
    Seconda precisazione: solo Dio sa perchè usando una semplice connessione con dsn l'errore non si verifica

    Il codice che uso per inserire 4 campi in una tabella di access è il seguente:

    ---------------------------------------------------
    <%

    set Command1 = Server.CreateObject("ADODB.Command")
    Command1.ActiveConnection = MM_conn_strl_STRING
    Command1.CommandText = "INSERT INTO Tabella1 (cognome, nome, pws, user) VALUES (" + Replace(Command1__a, "'", "''") + ", " + Replace(Command1__b, "'", "''") + ", " + Replace(Command1__c, "'", "''") + ", " + Replace(Command1__d, "'", "''") + ") "
    Command1.CommandType = 1
    Command1.CommandTimeout = 0
    Command1.Prepared = true
    Command1.Execute()

    %>

    ----------------------------------------------------

    L'errore è quello che leggete nel titolo del topic.

    Se si aggiungono le parentesi quadre al codice l'errore non si verifica più. Non chiedetemi il motivo. Forse è access che di punto in bianco diventa bizzoso.

    Ad ogni modo il codice giusto è il seguente:

    ----------------------------------------------------

    <%

    set Command1 = Server.CreateObject("ADODB.Command")
    Command1.ActiveConnection = MM_conn_strl_STRING

    'Questa è la riga incriminata che così funziona

    Command1.CommandText = "INSERT INTO Tabella1 ([cognome], [nome], [pws], [user]) VALUES ('" + Replace(Command1__a, "'", "''") + "', '" + Replace(Command1__b, "'", "''") + "', '" + Replace(Command1__c, "'", "''") + "', '" + Replace(Command1__d, "'", "''") + "') "

    ' fine riga

    Command1.CommandType = 1
    Command1.CommandTimeout = 0
    Command1.Prepared = true
    Command1.Execute()

    %>
    --------------------------------------------------

    Spero che questa mia dritta possa aitarvi.
    Alfonso

  2. #2
    o il campo user o pws (non ricordo bene...) è riservato per access, quindi lo devi mettere fra quadre. In altre parole dovresti poter togliere le quadre agli altri e tenerle per il campo con il nome riservato in modo che lo interpreti come il nome di un campo anzichè quello della parola chiave. Lo stesso problema dovrebbe esistere per campi che si chiamano "note", "memo" e altri.

  3. #3
    Hai perfettamente ragione.

    mi spieghi però perchè senza le quadre con una connessione dsn funziona e con una oledb no?

    inoltre stesso problema lo riscontro quando cerco di inserire i recod dopo aver cambiato user con nome_utente.

    Quella dei termini riservati è la prima cosa che ho valutato.

    Ai poster :gren: l'ardua sentenza.

  4. #4
    credo che con dsn funzioni perchè fa alcune modifiche sintattiche (ottimizzazioni) alle query prima di eseguirle sul DB. Quindi credo che con il dsn anche se tu nella query non metti le quadre, le aggiunga automaticamente il driver odbc prima di effettuarla.


    se ti da problemi anche dopo che user -> nome_utente allora forse era pws il campo riservato... te l'ho detto, non ricordo bene quale dei 2.. (o entrambi )

  5. #5
    http://support.microsoft.com/default...b;EN-US;248738

    la parola riservata è user.

    L'importante comunque è aver risolto.

    Thanks

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.