Access-query's met een jokerteken exporteren geen gegevens naar een XML-document


BUG #: 8808 (content Maintenance)bug #: 232596 (officenet) dit artikel is alleen van toepassing op een Microsoft Access-database (. mdb).Gemiddeld: vereist basisvaardigheden voor macro's, codering en interoperabiliteit.

Symptomen


Wanneer u een Access-query naar een XML-document exporteert en de query een Microsoft Jet-jokerteken zoals een sterretje (*) in de criteria bevat, worden de gegevens niet geëxporteerd naar het XML-document. Daarom bevat het resulterende XML-document geen gegevens. De query functioneert correct als u dezelfde query uitvoert met behulp van Access.

Oorzaak


Dit probleem treedt op wanneer u naar XML exporteert. XML maakt gebruik van ActiveX Data Objects (ADO) om de gegevens uit de database op te vragen. Wanneer u een Jet-specifieke jokerteken in de Access-query gebruikt, retourneert de query geen records. Dit probleem treedt op omdat ADO alleen de jokertekens American National Standards Institute (ANSI) 92 herkent.

Workaround


Gebruik een van de volgende methoden om dit probleem te omzeilen.

Methode 1

U de query herschrijven om het Jet-specifieke jokerteken te vervangen door het jokerteken ANSI 92. De oorspronkelijke query kan er bijvoorbeeld als volgt uitzien met het jokerteken *:
SELECT Customers.CustomerIDFROM CustomersWHERE (((Customers.CustomerID)  Like "A*"));
U de query als volgt herschrijven:
SELECT Customers.CustomerIDFROM CustomersWHERE (((Customers.CustomerID)  Like "A%"));
Opmerking Als de Access-database niet is geconfigureerd voor compatibiliteit met ANSI 92, worden er geen gegevens geretourneerd wanneer u de herschreven query uit Access uitvoert. Het geëxporteerde XML-document dat is gebaseerd op de herschreven query retourneert echter de verwachte resultaten.

Methode 2

U de query zo herschrijven dat het criterium van de query geen jokertekens bevat. De oorspronkelijke query kan er bijvoorbeeld als volgt uitzien met het jokerteken *:
SELECT Customers.CustomerIDFROM CustomersWHERE (((Customers.CustomerID)  Like "A*"));
U de query als volgt herschrijven:
SELECT Customers.CustomerIDFROM CustomersWHERE Left(CustomerID,1) = "A";

Methode 3

Wanneer u gegevens naar een XML-document exporteert, u opgeven of u een bestaand filter op het object wilt toepassen. In plaats van een jokerteken in de criteria van de query op te geven, u een filter maken met de filtertekenreeks equivalent aan de criteria die u wilt (zoals ' A * ') en vervolgens dit filter toepassen tijdens het exporteren van XML-proces. Hiertoe gaat u als volgt te werk, afhankelijk van de versie van Access.

Toegang tot 2003

  1. Open de voorbeelddatabase Noordenwind.
  2. Klik op queryin het menu Invoegen .
  3. Selecteer in het dialoogvenster nieuwe query de optie ontwerpweergaveen klik op OK.
  4. Klik in het menu beeld op SQL-weergave.
  5. Plak de volgende query in het query venster:
    SELECT Customers.CustomerIDFROM Customers;
    Opmerking U zien dat het criterium van de query wordt verwijderd. Daarom bevat de query geen jokertekens.
  6. Klik op Opslaanin het menu bestand .
  7. Typ query1in het vak query naam van het dialoogvenster Opslaan als en klik op OK.
  8. Klik in het menu beeld op gegevensbladweergave.
  9. Wijs filteraan in het menu records en klik vervolgens op Geavanceerde filter/sorteervolgorde.
  10. Selecteer CustomerIDin de lijst met velden .
  11. Plak de volgende code in het vak criteria onder CustomerID:
    Like "A*"
  12. Klik op filter toepassen/sorterenin het menu filter .
  13. Klik op Opslaanin het menu bestand .
  14. Klik in het menu Bestand op de optie Sluiten.
  15. Klik in het database venster op query's.
  16. Klik met de rechtermuisknop op query1en klik vervolgens op exporteren.
  17. In de exporteren query ' query1 ' naar dialoogvenster, selecteer XML in de Opslaan als type lijst en klik vervolgens op exporteren.
  18. Klik in het dialoogvenster XML exporteren op meer opties.
  19. Selecteer in het dialoogvenster XML exporteren het tabblad gegevens . Schakel onder te exporteren recordshet selectievakje bestaand filter toepassen in en klik op OK.

Toegang tot 2007

  1. Open de voorbeelddatabase Noordenwind.
  2. Klik op het tabblad maken op queryontwerpenklik vervolgens op sluiten.
  3. Klik op het tabblad ontwerp op SQL-weergave in de groep resultaten .
  4. Plak de volgende query in het query venster:
    SELECT Customers.[First Name]FROM Customers;
    Opmerking U zien dat het criterium van de query wordt verwijderd. Daarom bevat de query geen jokertekens.
  5. Klik op de Microsoft Office-knopen klik vervolgens op Opslaan.
  6. Typ query1in het vak query naam van het dialoogvenster Opslaan als en klik op OK.
  7. Klik op het tabblad Start in de groep weer gaven op beelden klik vervolgens op gegevensbladweergave.
  8. Op de Start tabblad Geavanceerd in de sorteren & filter groep en klik vervolgens op Geavanceerde filter/sorteren.
  9. Selecteer in de lijst met velden de optie eerste naam
  10. Plak de volgende code in het vak criteria onder voor naam:
    Like "A*"
  11. Op de Start tabblad Geavanceerd in de sorteren & filter groep en klik vervolgens op filter toepassen/sorteren.
  12. Klik op de Microsoft Office-knopen klik vervolgens op Opslaan.
  13. Klik met de rechtermuisknop op query1, wijs exporterenaan, klik op XML-bestanden klik op OK.
  14. Klik in het dialoogvenster XML exporteren op meer opties.
  15. Klik op het tabblad gegevens in het dialoogvenster XML exporteren .
  16. Selecteer onder records die u wilt exporterende optie bestaand filter toepassen en klik op OK.
  17. Klik op sluitenin het dialoogvenster export-XML-bestand .

Status


Microsoft heeft bevestigd dat dit een fout is in de Microsoft-producten die aan het begin van dit artikel worden vermeld.

Meer informatie


Stappen voor het reproduceren van het probleem in Access 2003

  1. Open de voorbeelddatabase Noordenwind.
  2. Klik opqueryin het menu Invoegen .
  3. Selecteer in het dialoogvenster nieuwe query de optieontwerpweergave en klik vervolgens op OK.
  4. Klik in het menu beeld op SQL-weergave.
  5. Plak de volgende query in het query venster:
    SELECT Customers.CustomerIDFROM CustomersWHERE (((Customers.CustomerID)  Like "A*"));
  6. Klik op Opslaan in het menu bestand.
  7. Typ in het vak query naam in het dialoogvensterOpslaan alsquery1.
  8. Klik op Sluiten in het menu Bestand.
  9. Klik met de rechtermuisknop op query1 en klik vervolgens op exporteren.
  10. In de export query ' query1 ' naar... in het dialoogvenster, selecteer XML in de Opslaan als type lijst en klik vervolgens op exporteren.
  11. Klik in het dialoogvenster XML exporteren opOK om de XML-gerelateerde bestanden op de standaardlocatie op te slaan.
  12. Open het geëxporteerde XML-bestand in Microsoft Internet Explorer. U zien dat het geëxporteerde XML-bestand dat is gebaseerd op de opgegeven query geen records bevat.

Verwijzingen


Als u meer informatie wilt over de syntaxis van ANSI 92, typt u de ANSI SQL-querymodus in de Office-assistent en klikt u op zoeken.