Juni 15, 2021, 21:21:11

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Mit VBA eine Tabelle im Backend erstellen über Frontend

Begonnen von TerraAOC, Juni 08, 2021, 07:47:38

⏪ vorheriges - nächstes ⏩

MzKlMu

Hallo,
zeige bitte den vollständigen von Dir verwendeten Code. Alle Zeilen.

Es ist mir unverständlich, warum man das nicht gleich zeigt, sonders erst auf Rückfrage. Es muss Dir doch klar sein, dass der benötigt wird, wie sonst soll man denn einen Fehler finden ?
Gruß
Klaus

TerraAOC

Juni 09, 2021, 12:11:12 #16 Letzte Bearbeitung: Juni 09, 2021, 14:55:36 von TerraAOC
Sub Test123()
DoCmd.TransferText acLinkDelim, "Import", "Testtabelle", "Q:\CSVImport\TestCSV.txt", True
CurrentDb.Execute "SELECT * INTO Testtabelle IN 'C:\Users\tests\Front und Backend Test\Datenbank - Kopie_be.accdb' FROM TestCSV", dbFailOnError
End Sub

Das rufe ich über den Button mit:
Private Sub Befehl2_Click()
Call Test123
End Sub
auf

Die CSV wird verlinkt, aber danach kommt ein Fehler und der Debugger markiert mir die Execute Zeile

MzKlMu

Hallo,
schreibe statt des * die Feldnamen (kommagetrennt). Wie in #6.

PS:
danach kommt ein FehlerDas ist auch so eine Antwort, die für erhöhten Blutdruck sorgt.
Bitte die Fehlermeldung exakt zitieren.
Gruß
Klaus

TerraAOC

Juni 09, 2021, 12:35:02 #18 Letzte Bearbeitung: Juni 09, 2021, 14:55:19 von TerraAOC
ZitatBitte die Fehlermeldung exakt zitieren.
Laufzeitfehler '3010'
Die Tabelle Testtabelle existiert bereits.

Eigentlich die Wahrheit, denn sie wurde im Schritt davor erstellt.

Statt des * die Feldnamen hat nichts geändert.

MzKlMu

Gruß
Klaus

TerraAOC

Juni 09, 2021, 12:40:58 #20 Letzte Bearbeitung: Juni 09, 2021, 14:55:13 von TerraAOC
Ja, gut. das klappt, habe nicht gesehen das er die Tabelle im Backend schon erstellt hat, denn die wurde nicht automatisch verknüpft.

Es funktioniert also jetzt, aber die Tabelle ist nicht verknüpft, also werden Abfragen im Frontend nicht darauf zugreifen können. Wie verknüpfe ich diese mit VBA?

Beaker s.a.

ZitatWie verknüpfe ich diese mit VBA?
Diese Frage in einer Suchmaschine ergibt mehrere Tsd. Treffer.
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

TerraAOC

Ich dachte ich bin hier in einem Forum wo mir geholfen wird?? Da kann ich mir doch eigentlich googlen sparen.

HB9876

Zitat von: TerraAOC am Juni 11, 2021, 07:57:45Ich dachte ich bin hier in einem Forum wo mir geholfen wird?? Da kann ich mir doch eigentlich googlen sparen.

Das denke ich bist du auch, zumindest ist das mein Eindruck und Erfahrung.
Aber ein Forum ist Hilfe zur Selbsthilfe, versuch doch mal einen Ansatz zu finden und frage dann spezifisch nach wenn es Fragen/Probleme gibt.
Wenn ich deine Post lese (sorry, mit allen Respekt) moechtest du Loesungen praesentiert bekommen.
Das sollte man dann doch eher einkaufen und nicht aus einem Forum erwarten/verlangen.

Just my 2 cents,
Mit jeder Antwort komme ich weiter und lerne.

Danke!!!

TerraAOC

Juni 14, 2021, 11:59:02 #24 Letzte Bearbeitung: Juni 14, 2021, 12:05:19 von TerraAOC
Guten Tag zusammen. Ich habe es jetzt so versucht:
Sub Verknüpfen()
  Dim db As Database
  Dim Tabellenname As String
  Dim Verbindungsinformation As String
  Dim Name_Quelltabelle As String
  Dim neue_Tabelle As TableDef

  'Beispiele für Verbindungsinformationen
  Tabellenname = "Meine_Tabelle"                'Name der Tabelle
  Name_Quelltabelle = "externe_Tabelle"         'Name der Originaltabelle

  'MS Access DB
  Verbindungsinformation = ";DATABASE=C:\Users\Datenbank - Kopie_be"
  'Datenbankobjekt ermitteln
  Set db = CurrentDb

  'Neues Tabellenobjekt anlegen
  Set neue_Tabelle = db.CreateTableDef
  neue_Tabelle.Name = "Testtabelle"                  'Tabellenname festlegen
'  neue_Tabelle.Connect = Verbindungsinformation     'Verbindungsinformation festlegen
  neue_Tabelle.SourceTableName = "TesttabelleCSV"  'Name der Quelltabelle
  'Tabelle anlegen
  db.TableDefs.Append neue_Tabelle
  db.TableDefs.Refresh

  'Speicher freigeben
  Set db = Nothing
End Sub

Aufruf über einen Button

Allerdings bekomme ich immer beim Ausführen des Buttons
den Fehler '3264'
Kein Feld definiert: TableDef- oder Index-Objekt kann nicht angefügt werden.

Und der Debugger markiert mir db.TableDefs.Append neue_Tabelle

Brauche bitte weitere Hilfe

Code von hier: http://www.makrothek.de/index.php/programmiertipps/vba-tipps/17-tabelle-mittels-vba-verkn%C3%BCpfen

Edit: Der Name bei SourceTableName passt zu 100%

PhilS

Warum weist du die Verbindungsinformation zum Backend (Connect-Property) nicht zu?
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!

TerraAOC

Ich weiß nicht was da reinkommt. Das Backend benötigt weder ein Passwort noch sonst irgendwas

PhilS

Zitat von: TerraAOC am Juni 14, 2021, 12:57:14Ich weiß nicht was da reinkommt. Das Backend benötigt weder ein Passwort noch sonst irgendwas
;DATABASE=C:\pfad\zur\Datenbank.accdb
War doch in dem von dir verwendeten Beispielcode enthalten. Sogar in deiner Fassung des Codes ist es drin, allerdings solltest du noch eine Dateinamenerweiterung ergänzen.
Access DevTools - Find and Replace
Komfortables Suchen und Ersetzen in den Entwurfseigenschaften von Access-Objekten. In Abfragen, Formularen, Berichten und VBA-Code - Überall und rasend schnell!

TerraAOC

Ah danke. Ich glaub da war ich blind.

Jetzt bekomme ich eine andere Fehlermeldung
'3011'
Konnte das Objekt "TesttabelleCSV" nicht finden.....

Dabei ist die Tabelle als CSV verknüpft und soll jetzt als Tabelle im Backend erstellt werden.
Also eigentlich müsste das Objekt doch gefunden werden. Ist schließlich vorhanden und kann ich auch ohne Probleme öffnen

Beaker s.a.

Hier fehlt der Punkt
ZitatTesttabelle.CSV
Prüfe ob der im Code auch fehlt.
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.