none
Tabelle vohanden (vollständig angelegt)?

    Frage

  • Hallo Forum,

    es wird ein Teil einer Tabelle aus einer Access-DB A in eine Acces-DB B übertragen mit

    SELECT DISTINCT Feld1 INTO ....

    Danach wird mit SELECT COUNT(*) FROM MSysObjekt ... das Vorhandensein der neuen Tabelle geprüft.

    Das unmittelbar folgende SQL Statement mit dem die neue Tabelle gelesen wird meldet:

    Das Microsoft Jet Datenbankmodul findet doe Eingangstabelle oder Abfrage 'neue_Tabelle_' nicht. Stellen Sie sicher, dass sie existiert ....

    Wie kann man feststellen, dass die neue Tabelle für SQL Zugriffe bereit ist?

    Sage jetzt schon vielen Dank für eine Antwort.

    Grüße

    • Verschoben Stefan FalzMVP Freitag, 17. März 2017 14:18 Keine SQL Server, sondern eine ACC Frage
    Freitag, 17. März 2017 14:08

Alle Antworten

  • Hallo Adam,

    was hat die Frage mit dem SQL Server zu tun?

    Ich persönlich würde nach einer Aktion wie oben einfach einen Zugriff auf die neue Tabelle versuchen, bspw. per:

    SELECT 1
    FROM   NeueTabelle
    WHERE  1 = 0

    Durch "WHERE 1 = 0" würde kein Datensatz selektiert, da es eh nur darum geht, kommt ein Fehler oder nicht. Falls ein Fehler auftritt, müsste man noch den Fehlercode prüfen.

    Falls die Systemtabelle sagt, dass die Tabelle da wäre, ein SELECT auf die Tabelle aber fehlschlägt, ist die Tabelle dann wohl doch nicht da. In dem Fall denke ich, dass Du dich beim Tabellennamen verschrieben hast.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Freitag, 17. März 2017 14:18
  • Hallo Stefan,

    vielen Dank für Deine Antwort.

    Lasse nun

    SELECT 1
    FROM   NeueTabelle
    WHERE  1 = 0

    in einer Schleife ausführen. Nach dem ersten Lesen kömmt der Fehler:

    -2147217865: Das Microsoft Jet-Datenbankmodul findet die Eingangstabelle oder Abfrage 'Objekte_mit_Rechnungen_' nicht. Stellen Sie sicher, dass sie existiert und der Name richtig eingegeben wurde.

    Erst wenn Fehler = 0 wird das Programm mit dem eigentlichen SELECT fortgesetzt.

    Nochmal zu dem vorigen Prüfen mit SELECT COUNT(*) FROM MSysObjekt ..

    Hab das Ergebnis in einer MsgBox anzeigen lassen. Tabelle wird als vorhanden angezeigt.

    Bei einer sofortigen Bestätigung erzeugt der nächste SELECT Befehl einen Fehler. Wartet man 21, 22, 23 ab - funktioniert auch das nächste SELECT fehlerfrei.

    Grüße

    Montag, 20. März 2017 13:36
  • Hallo Adam,

    probier mal, die Connection zu schließen (Dispose aufrufen) und dann eine neue Connection zu erzeugen.

    Die Jet Engine (dürfte bei ACE nicht anders sein) hat bei Access Datenbanken manchmal Cacheprobleme.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Montag, 20. März 2017 13:49
  • Hallo Stefan,

    das mit dem Warten in einer Schleife auf Error = 0 funktioniert nicht im Echtbetrieb.

    Ein Schliessen der Connection würde alle Recordsets entladen.

    Habe mal versucht den Zugriff auf die 2.te DB in das SQL Statement einzubauen

    ... AND Spalte IN (SELECT Spalte FROM [DB2].Tabelle)

    Das würde sogar gehen, wenn die DB2 ohne Kennwort angelegt ist.

    Im Echtbetrieb ist aber ein Kennwort vergeben.

    Wie kann ich das Kennwort der DB2 in mein SQL Statment einbauen?

    Grüße

    Adam

    Dienstag, 21. März 2017 10:10
  • Habe was im Internet gefunden. Etwa so ...

    .... [";PWD=TestPass;DATABASE=C:\Docs\database2.mdb"].table2

    Damit funktioniert das SELECT aus 2 Datenbanken und das Herüberholen einer Tabelle (bzw. ein Teil einer Tabelle) erübrigt sich.

    Grüße

    Adam


    • Bearbeitet Adam Loch Dienstag, 21. März 2017 14:33
    Dienstag, 21. März 2017 14:32