升级至Windows 10后MS Access XP连Oracle 9i含特殊字符记录显示#Deleted求助
Hey there, let's work through this frustrating issue you're hitting after upgrading from Windows XP to 10. Legacy Access + Oracle setups in non-English environments often run into encoding mismatches, which is almost certainly what's causing those #Deleted entries for records with French special characters. Here's how to fix it step by step:
1. Fix the 32-bit ODBC Driver's Character Set Configuration
First, you must use the 32-bit ODBC Data Source Manager—Windows 10 defaults to the 64-bit version, which won't recognize your Oracle 9i 32-bit driver. Open it by navigating to C:\Windows\SysWOW64\odbcad32.exe.
Once open:
- Locate your Oracle data source and click "Configure"
- Look for the character set setting (usually labeled "NLS_LANG" or "Character Set")
- Set it to match your Oracle database's character set and French locale:
- If your DB uses ISO-8859-1 (common for older French setups), pick
WE8ISO8859P1 - If it uses Unicode, use
AL32UTF8
- If your DB uses ISO-8859-1 (common for older French setups), pick
- Save the changes and test the connection again.
2. Disable Windows 10's UTF-8 Global Language Support
Windows 10 has a beta feature that forces UTF-8 for all apps, which breaks legacy 32-bit software like your Access XP/Oracle 9i combo:
- Open Control Panel → Region → Administrative tab
- Click "Change system locale..."
- Uncheck the box labeled "Beta: Use Unicode UTF-8 for worldwide language support"
- Restart your computer—this is critical for the change to take effect.
3. Ensure Access Field & Oracle Column Compatibility
Mismatched field types or lengths can also trigger #Deleted errors when special characters are involved:
- In Access, verify that text fields linked to Oracle
VARCHAR2columns have matching lengths (e.g., if Oracle usesVARCHAR2(50), Access should use Text(50)) - Confirm your French version of Access is set to use the correct locale: Go to File → Options → Language, and ensure "French (France)" is set as the default editing language.
4. Use Parameterized Queries Instead of Hardcoded SQL
If you're writing custom SQL, avoid hardcoding special characters directly—this can lead to encoding corruption in Windows 10. Instead, use parameterized queries to let Access handle the character encoding correctly:
PARAMETERS [NomDuChamp] Text(100); SELECT * FROM VotreTable WHERE NomDuChamp = [NomDuChamp];
This way, when you input a value like Café, Access passes it to the Oracle driver without mangling the special characters.
5. Run Access XP in Windows XP Compatibility Mode
Legacy Office apps often behave better in compatibility mode:
- Right-click your Access XP shortcut → Properties → Compatibility tab
- Check "Run this program in compatibility mode for" and select "Windows XP (Service Pack 3)"
- Also check "Run this program as an administrator" to avoid permission-related encoding issues.
Start with steps 1 and 2—those are the most common fixes for this exact scenario. If you still see #Deleted records, work through the rest of the list one by one.
内容的提问来源于stack exchange,提问作者antoine

