MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 12.09.2017, 09:46   #1
Haxnwirt
MOF User
MOF User
Standard Acc2013 - Tabelle mit einer anderen Tabelle aktualisieren

Hallo beisammen,

ich habe wahrscheinlich die gleiche Frage wie "Forelle"

Als ich die Datenbank erstellt habe, habe ich eine Anfügeabfrage über den Abfrage-Assitenten erstellt, die auch funktioniert hat. Die Daten wurden von der Tabelle "Grunddaten" in die Tabelle "Planung" kopiert.

Die "Grunddaten"-Tabelle hat 2168 Einträge.
Die "Planung"-Tabelle 268 Einträge


Kopieren möchte ich eigentlich nicht. So fällt eigentlich "Insert Into" raus.

Ich habe es zum Test trotzdem gemacht. in VBA.

Code:

strSQL = "INSERT INTO Planung " & _
"SELECT * " & _
"FROM  Grunddaten ;"
Das Ergebnis war nicht so erfolgreich, da er nur eine Zeile kopiert hat.

Mein nächster Versuch, bei dem ich glaube, dass "Update" die richtige Aufforderung ist.

Code:

strSQL = "UPDATE Grunddaten INNER JOIN Planung ON (Grunddaten.Maß3 = Planung.Maß3) AND (Grunddaten.Maß2 = Planung.Maß2) " & _
"AND (Grunddaten.Maß1 = Planung.Maß1) AND (Grunddaten.Menge = Planung.Menge) AND (Grunddaten.Rolljahr = Planung.Rolljahr) " & _
"AND (Grunddaten.Rollmonat = Planung.Rollmonat) AND (Grunddaten.Rolltag = Planung.Rolltag) AND (Grunddaten.Dekor = Planung.Dekor) " & _
"AND (Grunddaten.Bauteilnr = Planung.Bauteilnr) AND (Grunddaten.Bestellnr = Planung.Bestellnr) SET Grunddaten.Bestellnr = Planung.Bestellnr, " & _
"Grunddaten.Bauteilnr = Planung.Bauteilnr, Grunddaten.Dekor = Planung.Dekor, Grunddaten.Rolltag = Planung.Rolltag, Grunddaten.Rollmonat = Planung.Rollmonat, " & _
"Grunddaten.Rolljahr = Planung.Rolljahr, Grunddaten.Menge = Planung.Menge, Grunddaten.Maß1 = Planung.Maß1, Grunddaten.Maß2 = Planung.Maß2, Grunddaten.Maß3 = Planung.Maß3;"
Wurde ausgeführt. Es ist aber nichts passiert.

Ich möchte nur die Differenzdatensätze anfügen/aktualisieren.

Beide SQL-Anweisungen werden auch in der Entwurfsansicht der Abfrage ausgeführt.

Was muss ich noch beachten.

Vielen Dank für eure Antworten im Voraus

Leonard (Haxnwirt)
Haxnwirt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.09.2017, 10:08   #2
Nouba
MOF Guru
MOF Guru
Standard

Wer soll diesen Abfragekladderadatsch denn entziffern und lesen? Ist Dein Editor in der Werkstatt?

Ansonsten führen Aktionsabfragen genau das aus, was in ihnen angewiesen wird und keine Regelverletzung in betroffenen Tabellen hervorruft.

PS: Und warum verwendest Du keine gespeicherten Abfragen?
Nouba ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.09.2017, 10:15   #3
Haxnwirt
Threadstarter Threadstarter
MOF User
MOF User
Standard

Zitat: von Nouba Beitrag anzeigen

Wer soll diesen Abfragekladderadatsch denn entziffern und lesen? Ist Dein Editor in der Werkstatt?

Das wäre ich auch

Zitat:

Ansonsten führen Aktionsabfragen genau das aus, was in ihnen angewiesen wird und keine Regelverletzung in betroffenen Tabellen hervorruft.

Davon gehe ich aus.

Zitat:

PS: Und warum verwendest Du keine gespeicherten Abfragen?

Das würde ich machen, wenn ich weiß, dass sie so funktioniert, wie ich das möchte.
Haxnwirt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.09.2017, 10:56   #4
maikek
MOF Guru
MOF Guru
Standard

Was genau willst du denn jetzt eigentlich damit erreichen?
Neue Datensätze in Planung einfügen? -> Anfügeabfrage (INSERT INTO)
Alte bestehende Datensätze von Planung ändern? -> Aktualisierungsabfrage (UPDATE)
Und wieso überhaupt den ganzen Kram in zwei Tabellen? Dafür gibt es doch Schlüssel.
maike

__________________

Bitte dein Thema auf erledigt setzen, wenn's durch ist!
MOF Access Stammtisch in Bremen
maikek ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.09.2017, 13:09   #5
ebs17
MOF Guru
MOF Guru
Standard

Grundlagen - SQL ist leicht (4) - Aktualisierung einer Tabelle

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.09.2017, 13:15   #6
Haxnwirt
Threadstarter Threadstarter
MOF User
MOF User
Standard

Aha, lese ich mir ma durch
Haxnwirt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.09.2017, 13:21   #7
Haxnwirt
Threadstarter Threadstarter
MOF User
MOF User
Standard

Zitat: von maikek Beitrag anzeigen

Neue Datensätze in Planung einfügen? -> Anfügeabfrage (INSERT INTO)
Alte bestehende Datensätze von Planung ändern? -> Aktualisierungsabfrage (UPDATE)
Und wieso überhaupt den ganzen Kram in zwei Tabellen? Dafür gibt es doch Schlüssel.
maike

Wie meinst du das mit den Schlüssel?

Code:

Was genau willst du denn jetzt eigentlich damit erreichen?
Wir bekommen von unserer Vorabteilung eine Excel-Tabelle mit den Aufträgen der Woche. Diese lade ich in Access in die Grunddaten-Tabelle. Anschließend sollen diese Daten in die Planung-Tabelle, um dort den Schlüssel anzufügen, das Datum zu erstellen, daraus dann die KW zu errechnen und alle weiteren Felder zu füllen, wie Auslieferungstag, Arbeitsplatz, Priorisierung.
Haxnwirt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.09.2017, 13:34   #8
maikek
MOF Guru
MOF Guru
Standard

Ok, dass das ein Excel-Import ist, war mir nicht klar.

Dann willst du jedenfalls die Datensätze zunächst mal von tblGrunddaten in die tblPlanung anfügen. Wenn die SQL-Anweisung wie gezeigt nicht funktioniert, solltest du versuchen, den Grund dafür herauszufinden (Schlüssel?, Datentypen?, Feldnamen?, ...):
Code:

Currentdb.Execute strSQL, dbFailOnError
ergibt eine Fehlermeldung?

Danach dann diese Datensätze in tblPlaung möglicherweise noch mit weiteren Werten aktualisieren? Wobei dein UPDATE-Statement eher so aussieht, als wenn du da eigentlich auch anfügen wolltest ...

maike

__________________

Bitte dein Thema auf erledigt setzen, wenn's durch ist!
MOF Access Stammtisch in Bremen
maikek ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.09.2017, 14:24   #9
Haxnwirt
Threadstarter Threadstarter
MOF User
MOF User
Standard

Zitat: von maikek Beitrag anzeigen

Ok, dass das ein Excel-Import ist, war mir nicht klar.

Dann willst du jedenfalls die Datensätze zunächst mal von tblGrunddaten in die tblPlanung anfügen. Wenn die SQL-Anweisung wie gezeigt nicht funktioniert, solltest du versuchen, den Grund dafür herauszufinden (Schlüssel?, Datentypen?, Feldnamen?, ...):

Code:

Currentdb.Execute strSQL, dbFailOnError
ergibt eine Fehlermeldung?

Danach dann diese Datensätze in tblPlaung möglicherweise noch mit weiteren Werten aktualisieren? Wobei dein UPDATE-Statement eher so aussieht, als wenn du da eigentlich auch anfügen wolltest ...

maike

Zu deinen Fragen:

1.
Code:

strSQL = "INSERT INTO Planung " & _
"SELECT * " & _
"FROM  Grunddaten ;"
Wird ohne Fehlermeldung ausgeführt, hängt einen Datensatz an.

2.
Code:

strSQL = "UPDATE Grunddaten INNER JOIN Planung ON (Grunddaten.Maß3 = Planung.Maß3) AND (Grunddaten.Maß2 = Planung.Maß2) " & _
"AND (Grunddaten.Maß1 = Planung.Maß1) AND (Grunddaten.Menge = Planung.Menge) AND (Grunddaten.Rolljahr = Planung.Rolljahr) " & _
"AND (Grunddaten.Rollmonat = Planung.Rollmonat) AND (Grunddaten.Rolltag = Planung.Rolltag) AND (Grunddaten.Dekor = Planung.Dekor) " & _
"AND (Grunddaten.Bauteilnr = Planung.Bauteilnr) AND (Grunddaten.Bestellnr = Planung.Bestellnr) SET Grunddaten.Bestellnr = Planung.Bestellnr, " & _
"Grunddaten.Bauteilnr = Planung.Bauteilnr, Grunddaten.Dekor = Planung.Dekor, Grunddaten.Rolltag = Planung.Rolltag, Grunddaten.Rollmonat = Planung.Rollmonat, " & _
"Grunddaten.Rolljahr = Planung.Rolljahr, Grunddaten.Menge = Planung.Menge, Grunddaten.Maß1 = Planung.Maß1, Grunddaten.Maß2 = Planung.Maß2, Grunddaten.Maß3 = Planung.Maß3;"
Wir ausgeführt, ändert nichts

3.
Code:

strSQL = "INSERT INTO Planung (Bestellnr, Bauteilnr, Dekor, Rolltag, Rollmonat, Rolljahr, Menge, Maß1, Maß2, Maß3) " & _
        "SELECT Grunddaten.Bestellnr, Grunddaten.Bauteilnr, Grunddaten.Dekor, Grunddaten.Rolltag, Grunddaten.Rollmonat, Grunddaten.Rolljahr, Grunddaten.Menge, " & _
        "Grunddaten.Maß1, Grunddaten.Maß2, Grunddaten.Maß3 " & _
        "FROM Grunddaten LEFT JOIN Planung ON Grunddaten.Bauteilnr = Planung.Bauteilnr and Grunddaten.Bestellnr = Planung.Bestellnr and Grunddaten.Dekor = Planung.Dekor and " & _
        "Grunddaten.Rolltag = Planung.Rolltag and Grunddaten.Rollmonat = Planung.Rollmonat and Grunddaten.Rolljahr = Planung.Rolljahr and Grunddaten.Menge = Planung.Menge and " & _
        "Grunddaten.Maß1 = Planung.Maß1 and Grunddaten.Maß2 = Planung.Maß2 and Grunddaten.Maß3 = Planung.Maß3 WHERE Planung.Bauteilnr is NULL;"
Wir ohne Fehler ausgeführt, hängt einen Datensatz an.

Code:

Debug.Print strSQL
db.Execute strSQL
Ohne Fehler.

Was ich aber erreichen möchte ist, dass er 1000 Datensätze anhängt.

Damit stehe ich wieder bei meiner Eingangsfrage.

@Eberhard: Ich habe deine Grundlagen zu SQL verwendet und in der 3ten SQL-Anweisung angewandt. Es führt zum gleichen Ergebnis wie Anweisung 1.
Haxnwirt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.09.2017, 15:16   #10
maikek
MOF Guru
MOF Guru
Standard

Wieso joinst du da über alle Felder ... ?
Code:

strSQL = "INSERT INTO Planung (Bestellnr, Bauteilnr, Dekor, Rolltag, Rollmonat, Rolljahr, Menge, [Maß1], [Maß2], [Maß3]) " & _
        "SELECT G.Bestellnr, G.Bauteilnr, G.Dekor, G.Rolltag, G.Rollmonat, G.Rolljahr, G.Menge, " & _
        "G.[Maß1], G.[Maß2], G.[Maß3] " & _
        "FROM Grunddaten AS G;"
sollte völlig ausreichen.

EDIT: Führ doch spaßeshalber die SELECT Grunddaten. ... FROM Grunddaten LEFT JOIN Planung ... mal als reine Select-Abfrage aus. Da kommt vermutlich genau ein Datensatz bei rum.

maike

__________________

Bitte dein Thema auf erledigt setzen, wenn's durch ist!
MOF Access Stammtisch in Bremen

Geändert von maikek (12.09.2017 um 15:20 Uhr).
maikek ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.09.2017, 15:46   #11
Haxnwirt
Threadstarter Threadstarter
MOF User
MOF User
Standard

Zitat: von maikek Beitrag anzeigen

Wieso joinst du da über alle Felder ... ?

Code:

strSQL = "INSERT INTO Planung (Bestellnr, Bauteilnr, Dekor, Rolltag, Rollmonat, Rolljahr, Menge, [Maß1], [Maß2], [Maß3]) " & _
        "SELECT G.Bestellnr, G.Bauteilnr, G.Dekor, G.Rolltag, G.Rollmonat, G.Rolljahr, G.Menge, " & _
        "G.[Maß1], G.[Maß2], G.[Maß3] " & _
        "FROM Grunddaten AS G;"
sollte völlig ausreichen.

EDIT: Führ doch spaßeshalber die SELECT Grunddaten. ... FROM Grunddaten LEFT JOIN Planung ... mal als reine Select-Abfrage aus. Da kommt vermutlich genau ein Datensatz bei rum.

maike

Danke für deine Antwort. Ist ein wenig kürzer und sieht professioneller aus.

Ach maike, I bin deppert. Wenn ich zum Test immer wieder die gleichen Datensätze in die Grundtabelle lade und dann versuche, den Bearbeitungsschlüssel ohne Duplikate zu definieren, wird das nedda passen net.
Haxnwirt ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.09.2017, 15:53   #12
maikek
MOF Guru
MOF Guru
Standard

Manchmal hilft ein Gang um den Block und eine Tasse Kaffee .
maike

__________________

Bitte dein Thema auf erledigt setzen, wenn's durch ist!
MOF Access Stammtisch in Bremen
maikek ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:30 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.