Kopieren und entfernen Zeilen in Access 2003

Hallo alle,

ich bin ganz Anfanger mit Access und VBA (wie auch mit der deutscher Sprache, entshuldigung…), brauchte aber dringend eine Lösung in meiner Arbeit:

Ich habe zwei Tabelle in Access. Sie sind ansonsten genau gleiche, die „History“ hat nur „Week Number“ -Spalte vorne, das die „Current“ hat nicht.

Das Makro ich brauchte, würde alle Zeile von „Current“ erst kopieren zu „History“ nach die alte Einträge (aber ab zweite Spalte, so das es würde noch Platz für „week Number“ geben) und danach alles von „Current“ entfernen.

Was noch, benötigte ich InputBox (diese habe ich schon geschafft…), wohin die Benutzer sollten die „Week Number“ sie dahin vorne in „History“ möchten, eingeben.

Ich habe schon mit diese versucht, aber etwas ist falsch…

Dim SQL As String

Sql = „INSERT INTO [History] ([hier alle Spalte außer Week Number von History]) SELECT [hier Spalte von Current] FROM Current“

DoCmd.RunSQL Sql

Vielen Dank im Voraus!

Moin, jari,

Ich habe schon mit diese versucht, aber etwas ist falsch…

fürs nächste Mal: Der Spruch nützt gar nichts. Kopier die komplette Fehlermeldung hierhin.

[hier alle Spalte außer Week Number von History]

Und wer gibt dem SQL die Weeknumber?

… EingegebeneWeekNr.txt & String[hier alle Spalte außer Week Number von History] & EingegebeneWeeknumber & …

Gruß Ralf

Hi Ralf,

danke für die Antwort.

Sorry, die Fehlermeldung lautet „Syntax Error 3134 in INSERT INTO Statement“

Ich habe jetzt erst neue Query mit option New Table gemacht (weil das funktioniert), danach der Code zu VBA Editor kopiert und versucht das zu korrekt machen, leider ohne erfolg.

Ich habe auch ca. 40 Spalten in der Tabelle Current, ist das ein Problem?

Eine Teil des Codes ich habe benutzt:

Sub History ()

strWeek = Inputbox („Give the correct week number“)
Dim MySQL As String

MySQL = "INSERT INTO HISTORY (Contract Identifier, Contract Name, Delivery Date) "
MySQL = MySQL & " SELECT CURRENT.[Contract Identifier], CURRENT.[Contract Name] "
MySQL = MySQL & " CURRENT.[Delivery Date] FROM CURRENT "

DoCmd.RunSQL MySQL

End Sub

Moin, jari,

Ich habe schon mit diese versucht, aber etwas ist falsch…

fürs nächste Mal: Der Spruch nützt gar nichts. Kopier die
komplette Fehlermeldung hierhin.

[hier alle Spalte außer Week Number von History]

Und wer gibt dem SQL die Weeknumber?

Wenn ich richtig verstanden habe, der SQL braucht die Nummer nicht, weil er nur kopiert alle Zeilen von Current, aber so, dass erste Zeile ist leer gelassen. Danach würde das Makro die korrekte Nummer in die Zeile einfügen. Geht das so?

… EingegebeneWeekNr.txt & String[hier alle Spalte außer Week
Number von History] & EingegebeneWeeknumber & …

Gruß Ralf

Moin, jari,

MySQL = „INSERT INTO HISTORY (Contract Identifier, Contract
Name, Delivery Date) "
MySQL = MySQL & " SELECT CURRENT.[Contract Identifier],
CURRENT.[Contract Name] x
MySQL = MySQL & " CURRENT.[Delivery Date] FROM CURRENT "

wo ich das x gemalt habe, fehlt ein Komma.

Wenn ich richtig verstanden habe, der SQL braucht die Nummer
nicht, weil er nur kopiert alle Zeilen von Current, aber so,
dass erste Zeile Spalte ist leer gelassen. Danach würde das Makro die
korrekte Nummer in die Zeile einfügen. Geht das so?

Da hast Du was aufgeschnappt und missverstanden.

Wenn History.WeekNr den Datentyp Autowert hat, dann wird dieser Wert vom SQL ohne Dein Zutun gesetzt. Allerdings steht dann nicht die Wochennummer drin, sondern eine Zahl, die der Zugangsfolge entspricht.

Damit kann man durchaus leben, ist sogar zu empfehlen. Dazu solltest Du die Spalte aber umbenennen in History_Id, sie zum Schlüssel machen und die WeekNr als eigene Spalte mitführen.

Gruß Ralf