FIX: Errore di # eliminato quando l'inserimento di record con chiave primaria CHAR

Traduzione articoli Traduzione articoli
Identificativo articolo: 264766 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo è stato archiviato. L?articolo, quindi, viene offerto ?così come è? e non verrà più aggiornato.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Quando si inserisce un nuovo record in una tabella ODBC collegata contenente un campo di testo di lunghezza fissa (CHAR) come chiave primaria, # eliminato viene visualizzato nella tutti i campi nel nuovo record.

Nota Se quindi si chiude e si riapre la tabella collegata, il record appena inserito viene visualizzato e sia inserito correttamente.

Cause

Molti driver ODBC aggiungere spazi per (o "riempire") un campo CHAR quando il numero di caratteri che vengono inserite è minore della lunghezza massima del campo. Microsoft Jet 4.0 in modo non corretto nuovamente legge il valore inserito, spaziatura e lo confronta con il valore originale, unpadded. Poiché i due valori sono diversi, Jet segnala a Microsoft Access Impossibile trovare il record appena inserito.

Risoluzione

Per risolvere questo problema, è necessario installare il service pack più recente per Jet 4.0. Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
239114Procedura: Ottenere il Service Pack più recente per il motore di Database Microsoft Jet 4.0

Workaround

Utilizzare un campo di testo di lunghezza variabile (VARCHAR) come chiave primaria per la tabella.

Status

Microsoft ha confermato che questo problema riguarda i prodotti Microsoft elencati all'inizio di questo articolo. Questo problema è stato risolto in Jet 4.0 Service Pack 6 (SP6).

Informazioni

Procedura per riprodurre il problema

È possibile riprodurre il problema tramite il collegamento a un database DB2, Oracle o Microsoft SQL Server. Il problema sembra non verificarsi se non si dispone almeno 60 o più record nella tabella collegata.

Se si esamina un'analisi ODBC eseguita durante l'operazione di inserimento, vedrete che Jet consente di inserire e reselects il record corretto e che non si verificano errori nella traccia. Il problema si verifica dopo Jet recuperato il record e tenta di confrontare il valore di chiave reselected con il valore immesso dall'utente.

Per riprodurre il problema, procedere come segue:
  1. Eseguire il codice Microsoft Visual Basic riportato di seguito per generare la tabella test e il record:
    Sub GenerateTestTable()
    Dim conn As Object
    Dim i As Long, sql as String
       Set conn = CreateObject("adodb.connection")
       ' Change connection string to point to your SQL Server if needed.
       conn.Open "Provider=SQLOLEDB;Server=(Local);Database=Pubs;UID=sa;PWD=;"
       On Error Resume Next
       conn.Execute "drop table tmp_chartest"
       On Error GoTo 0
       sql = "create table tmp_chartest(f1 char(5) primary key, f2 char(10))"
       conn.Execute sql
        For i = 1 To 70
            sql = "insert into tmp_chartest (f1,f2) values ('"
            sql = sql & Format(i, "000") & "','XXXXXXXXXX')"
            conn.Execute sql
        Next i
        conn.Close
        Set conn = Nothing
    End Sub
    					
  2. Avviare Microsoft Access 2000 e collegamento alla tabella tmp_chartest creato con il passaggio precedente.
  3. Aprire la tabella appena collegato e Scorri fino all'ultimo record della tabella.
  4. Aggiungere un nuovo record con campo F1 = 071 e campo F2 = XXXXXXXXXX.
  5. Scheda dal record, e deve essere visualizzato # Eliminato visualizzata in tutti i campi.

Proprietà

Identificativo articolo: 264766 - Ultima modifica: lunedì 24 febbraio 2014 - Revisione: 3.1
Le informazioni in questo articolo si applicano a:
  • Microsoft Access 2000 Service Pack 1
  • Microsoft Access 2002 Standard Edition
Chiavi: 
kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbbug kbdatabase kbfix kbjet KB264766 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 264766
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com