SQL Tabellenname numerisch

alles was zunächst nicht kategorisierbar ist

Moderator: Moderatoren

Antworten
Bernd Reinhardt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 162
Registriert: So, 16. Apr 2006 11:12
Wohnort: Öhringen
Danksagung erhalten: 1 Mal

SQL Tabellenname numerisch

Beitrag von Bernd Reinhardt »

Hallo
Mein Kollege legt Tabellen im MS-SQL-Server (Express) an. Ich wollte Daten mit Xbase++ auslesen.
Tabellenname z. B. Aktwerte das passt. Tabellenname 0101 kann ich nicht zugreifen. Fehlermeldung im Xbase++
Die Tabellen sind vorhanden. Ich habe es über odbc und direkt versucht. Geht beides nicht.
Xbase++ V2.0 ohne weitere Tools.

Code: Alles auswählen

  
    CREATE CONNECTION INTO oSession DATASOURCE (cDsn) DIALOG
     SQL "SELECT * FROM Alarme" VIA oSession   // Das geht
    LIST ALL
    CLOSE
    wait
    SQL "SELECT * FROM 0911" VIA oSession  // Das geht nicht
    LIST ALL
    CLOSE
    wait
  
zweiter Versuch. Wenn Tabellenname Aktwerte dann funktioniert der Zugriff. Wenn Tabellenname 0101 dann geht es nicht
Fehler BASE/8999 Datei kann nicht geöffnet werden. DbUseArea

Code: Alles auswählen

        select ODBC_DATEI
         oSession := DacSession():new( cEcsConnect )
         do while oSession:isConnected() // Endlosschleife fr datenaustausch
            // altd()
            select ODBC_DATEI
            cSQL := "SELECT Datum, Menge FROM 0101 ;"  // Wenn Tabelle Aktwerte dann geht es. Tabelle 0101 geht nicht.

            USE (cSQL) ALIAS ODBCANLAGE VIA "ODBCDBE"
            dbgotop()
            if lastrec() > 0
 
Ich habe schon versucht über die TabellenId auf zuzugreifen, aber das habe ich nicht geschafft.

Code: Alles auswählen

    SQL "SELECT * FROM ecs.dbo.sysobjects WHERE xtype='U'" VIA oSession
    BROWSE()     // Das geht hier erhalte ich eine Liste mit den ID. Die eine Tabelle hat wohl die ID 2139154666
    // LIST ALL
    CLOSE
    wait  
    SQL "select * from (GET_RECORDSET_FROM_TABLE_BY_OBJECT_ID(2139154666))" VIA oSession

Irgendeine Idee wie ich an die Daten rankommen kann?

Mfg
Bernd
Bernd Reinhardt
fa.reinhardt@gmx.de
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16586
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 116 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: SQL Tabellenname numerisch

Beitrag von Martin Altmann »

Moin Bernd,
der Alias() darf nicht numerisch sein - er muss mit einem Buchstaben beginnen. Also müsstest Du (bei DBF) beim Öffnen einen alias mit angeben, der sich somit vom Dateinamen unterscheidet.
Ich arbeite bei Xbase++ nicht mit SQL - aber es sollte hier ebenfalls möglich sien, einen alias mitzugeben, der dann genutzt wird.

Viele Grüße
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Bernd Reinhardt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 162
Registriert: So, 16. Apr 2006 11:12
Wohnort: Öhringen
Danksagung erhalten: 1 Mal

Re: SQL Tabellenname numerisch

Beitrag von Bernd Reinhardt »

Hallo Martin

Hatte ich auch schon vermutet mit ALIAS ODBCANLAGE versucht.
Leider ohne Erfolg.

Code: Alles auswählen

         oSession := DacSession():new( cEcsConnect )
         do while oSession:isConnected() // Endlosschleife fr datenaustausch
            // altd()
            select ODBC_DATEI
            cSQL := "SELECT Datum, Menge FROM 0101 ;"
            USE (cSQL) ALIAS ODBCANLAGE VIA "ODBCDBE"
            dbgotop()
Gruß
Bernd
Bernd Reinhardt
fa.reinhardt@gmx.de
Bernd Reinhardt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 162
Registriert: So, 16. Apr 2006 11:12
Wohnort: Öhringen
Danksagung erhalten: 1 Mal

Re: SQL Tabellenname numerisch gelöst

Beitrag von Bernd Reinhardt »

In Hochkomma setzen dann geht es.

Code: Alles auswählen

            select ODBC_DATEI
            cSQL := "SELECT Datum, Menge FROM " + chr(34) + cTabellenname + chr(34) + " Order by Datum;"
            USE (cSQL) ALIAS ODBCANLAGE VIA "ODBCDBE"

Gruß
Bernd
Bernd Reinhardt
fa.reinhardt@gmx.de
Antworten