Artikel-ID: 235960 - Geändert am: Mittwoch, 24. Januar 2007 - Version: 5.1

ACC97: "ORDER BY-Klausel ist ungültig..." Fehler bei verknüpfte Tabelle

Erweiterte: Erfordert Experten Codierung und Interoperabilität sowie Mehrbenutzerfähigkeiten.

Auf dieser Seite

Alles erweitern | Alles schließen

Problembeschreibung

Wenn Sie eine Abfrage, die eine ORDER BY-Anweisung in einer verknüpften Tabelle verwendet ausführen, erhalten Sie folgende Fehlermeldung:
Die ORDER BY-Klausel ist ungültig, da "Col Name," Spalte nicht Teil der Ergebnistabelle ist.

Ursache

Sie können nicht zum Verwenden der ORDER BY-Anweisung in einem nicht-Primärschlüssel-Feld. Microsoft Jet macht nicht die erforderliche ODBC-Aufruf SQLGetInfo(SQL_ORDER_BY_COLUMNS_IN_SELECT) zum Abrufen der Informationen erforderlich, ORDER BY enthalten Spalten in der SELECT-Anweisung.

Beim Ausführen einer Abfrage mithilfe von Jet 3.5 X Jet Tabellenindizes erhält und Probleme mit einem "Pre-query", die die indizierten Spalten markiert und behält den verbleibenden Teil der Abfrage von Access ausgestellt. Beispielsweise, wenn die folgende Abfrage aus Access für eine Tabelle namens Test1 mit Felder A, B, C, D, E und F ausgegeben wird, müssen einen eindeutigen Index nach A, B und C
Wählen Sie aus Test1 Order by-D, E, F D, E, F
"vor Abfrage" wäre:
Wählen Sie A, B, C von Test1 Reihenfolge von D, E, F
"Pre-query" die ANSI-92-Standards hinausgeht und wird von einigen relationale Datenbank-Managementsysteme, z. B. DB2 zurückgewiesen. Anderen relationalen Datenbank Management-Systemen wie Microsoft SQL Server, ORACLE und andere, können diese "pre-query" erfolgreich ausgeführt werden kann. (Strikt ANSI-92-Kompatibilität bestimmt, dass ORDER BY-Spalten auch in der SELECT-Liste sein müssen.)

Lösung

Installieren Sie zuerst die neueste Version von Microsoft Data Access Components, MDAC 2.1.2.4202.3 (GA). Sie können MDAC 2.1.2.4202.3 (GA) aus folgenden Microsoft-Website herunterladen:
http://msdn.microsoft.com/dataaccess (http://msdn.microsoft.com/dataaccess)
Dann, wenn Sie Microsoft Windows 95, Microsoft Windows 98 ausführen oder und Microsoft Windows NT, das Microsoft Jet 3.5 SP3-Update zu installieren. Dies ist nicht erforderlich, wenn Sie Microsoft Windows 2000 ausführen. Weitere Informationen dazu, wie Sie das SP3-Update Microsoft Jet 3.5 erhalten können, finden Sie in folgendem Artikel der Microsoft Knowledge Base:
172733  (http://support.microsoft.com/kb/172733/EN-US/ ) ACC97: Neuere Version der Microsoft Jet 3.5 für Download

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.

Weitere Informationen

Zusätzlich zu den in "Lösung" aufgeführten Jet-Update zu erhalten, wenn Sie IBM DB2-OS/390 ODBC-Treiber verwenden, müssen Sie auch ein IBM-Treiber-Update (Fixpack 9) installieren. IBM DB2-OS/390 ODBC-Treiber Version v5.1.2 gibt falsch zurück "N" anstatt "Y" beim reagieren auf einen Aufruf von SQLGetInfo(SQL_ORDER_BY_COLUMNS_IN_SELECT) .

Zum Reproduzieren des Problems erforderliche Schritte

  1. Klicken Sie auf Start , zeigen Sie auf Einstellungen und klicken Sie auf Systemsteuerung .
  2. Doppelklicken Sie in der Systemsteuerung auf das Symbol ODBC-Datenquellen (32-Bit) .
  3. Klicken Sie im Dialogfeld ODBC- klicken Sie auf die Registerkarte Ablaufverfolgung , und klicken Sie anschließend auf Ablaufverfolgung jetzt beginnen .
  4. Öffnen Sie Query Manager in SQLServer 7.0 oder ISQL/w in SQL Server 6.x.
  5. Führen Sie den folgenden Code, um eine neue Tabelle zu erstellen:
    CREATE TABLE test1
    
        ( 
    
         Field1 char(4),
    
         Field2 char(4),
    
         Field3 char(4),
    
         Field4 char(4),
    
         Field5 char(4),
    
         Field6 char(4)
    
        )
    
    GO
    
    CREATE UNIQUE INDEX testCompIdx
    
        ON Test1 (Field1,Field2,Field3)
    
    GO
    
    INSERT INTO Test1 (Field1,Field2,Field3,Field4,Field5,Field6)
    
           VALUES ('A','B','C','D','E','F')
    					
  6. Öffnen Sie eine Access 97-Datenbank und verknüpfen Sie eine Tabelle mit der SQL Server-Tabelle, die Sie in Schritt 4 erstellt haben.
  7. Erstellen Sie eine neue Abfrage Abfrage1 ohne Hinzufügen von Tabellen in der Entwurfsansicht aufgerufen.
  8. Wählen Sie in der Abfrage Abfrage1 im Menü Ansicht SQL, und geben Sie Folgendes ein:
    SELECT Field4, Field5, Field6
    FROM dbo_Test1
    ORDER BY Field4, Field5, Field6
  9. Speichern Sie und führen Sie Abfrage1.
  10. Öffnen Sie ODBC-Protokolldatei in Editor die Abfrage überprüfen. Sehen Sie den folgenden Text:
    SELECT "Dbo"."Test1"."Field1","Dbo"."Test1"."Field2","Dbo"."Test1"."Field3 "FROM"Dbo"."Test1 "ORDER BY"Field4","Field5"," Field6 "
  11. Schließen Sie die Datenbank und löschen Sie das Protokoll der ODBC-Ablaufverfolgung.

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Access 97 Standard Edition
Keywords: 
kbmt kbbug kbfix KB235960 KbMtde
Maschinell übersetzter ArtikelMaschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 235960  (http://support.microsoft.com/kb/235960/en-us/ )
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Retired KB ArticleDisclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.
 

SPRACHE AUSWÄHLEN