aximand
Goto Top

Insert into lokale Access-Tabelle from SQL-Server Tabelle

Hallo,

momentan arbeit eich mit verknüpften Tabellen, stelle also per ODBC aus Access eine Verknüpfung zur MS-SQL Tabelle her.

Ich würde aber gerne die Daten von dem SQL-Server in die lokale Access-Tabelle schieben.

Also: Insert into lokale_Tabelle (values) select values from MSSQL_Tabelle

Hat da jemand einen Ansatz?

Content-ID: 384583

Url: https://administrator.de/contentid/384583

Ausgedruckt am: 25.11.2024 um 10:11 Uhr

eisbein
eisbein 27.08.2018 um 09:42:14 Uhr
Goto Top
Guten Morgen,

Schau dir mal diesen Link an:

https://support.office.com/de-de/article/select-into-anweisung-74d958dc- ...

Dabei ist es egal ob die Tabelle direkt von Access oder als Verknüpfung bereit gestellt wird.

Gruß
eisbein
Aximand
Aximand 27.08.2018 um 10:32:26 Uhr
Goto Top
Danke soweit, ich dachte ich muss das mit "insert into" lösen.

Allerdings ist das irgendwie nicht die primäre Problemstellung.

Dim rs As ADODB.Recordset

ConnectSQL (0) '0= OfficeLine Datenbank, 1= QS-Datenbank  

Set rs = New ADODB.Recordset
With rs
Set .ActiveConnection = conDB 'Public conDB As ADODB.Connection  
  .LockType = adLockOptimistic
  .CursorType = adOpenKeyset
  .CursorLocation = adUseClient
  .Open "Select * from vwDWDWareneingangsBelegPositionen_QSoffen" ' view aller QS_erfolgt = NULL  
 End With

Damit erhalte ich einen Recordset vom View des Sql-Servers den ich zuvor per ADO verbunden habe.

Diesen Recordset / diese Daten möchte ich jetzt aber irgendwie in die lokale Tabelle Test einspielen.
Dazu habe ich zuvor eine Access-Tabelle mit den selben Feldern wie die des Views angelegt.

Wenn ich nun sinngemäß "Select into lokaleAccessTabelle from SQL-Server-Sicht" nutze, so bekomme ich Fehlermeldungen weil die lokale Tabelle nicht bekannt ist.

Ich hab dann versucht die lokale Tabelle über DAO

Dim db As DAO.Database

auch mit in das Projekt aufzunerhmen. Dann kann ich zumindest über sb.Execute die AccessTabelle leeren.

Aber die Daten von entfernt nach lokal bekomm ich nicht geschoben face-sad
eisbein
eisbein 27.08.2018 um 11:05:28 Uhr
Goto Top
Der Syntax von SELECT INTO lautet:
SELECT Feld1[, Feld2[, ...]] INTO neue_Tabelle [IN externe_Datenbank] FROM Quelle

Wenn nun neue_Tabelle und Quelle unterschiedliche Datenbanken sind, musst du vorher eine Connect zu den jeweiligen Datenbanken aufbauen und im SQL-String mit angeben.
Du benötigst also eine Connect zur SQL-Datenbank und zu Access.
colinardo
colinardo 27.08.2018 aktualisiert um 16:21:58 Uhr
Goto Top
Oder auch alternativ zu einem SELECT INTO noch simpler geht's in Access direkt mit
DoCmd.TransferDatabase-Methode (Access)

Grüße Uwe
Aximand
Aximand 28.08.2018 um 08:52:35 Uhr
Goto Top
Jetzt hab ich mir aberecht einen abgebrochen und 3h recherchiert und trial&error betrieben:

DoCmd.TransferDatabase acImport, "ODBC-Datenbank", "ODBC;DSN=Server;UID=sa;PWD=xxx;DATABASE=Test", acTable, "vwDWDWareneingangsBelegPositionen_QSoffen", "QSerfolgtBelegePositionen"  

Das ist wohl die Lösung, jetzt muss ich final nur nochQSerfolgtBelegePositionen löschen und alles scheint soweit für den Moment gut zu sein.

2 Connects zu unterschiedlichen Datenbanken wovon eine MSSQL, die andere Access ist, hab ich überhaupt nicht hinbekommen... face-sad
thx