Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Was stimmt nicht mit meinem Insert?

Begonnen von JessMind, November 26, 2014, 10:17:48

⏪ vorheriges - nächstes ⏩

JessMind

Hi,

ich bin am Verzweifeln, echt :(

Ich versuche gerade die Daten einer Tabelle in eine andere zu kopieren (um nachher ein Update auszuführen und danach zu prüfen, was sich geändert hat)

Ich nutze diesen Insert:

INSERT INTO tbl_manuelleDaten_alt ( manArtikelnummer, manShore, manKommentar, manBranchen, manAnzeige, manWerk, manProdukthierarchie, manZeichnung, manYXZSchutz, manMaterialtext, manProfilabmessung1, manProfilabmessung2, manProfilabmessung3, manMatType1, manMatType2, manMatType3, manWerkuebergr, manGueltigabUeb, manWerksspez, manGueltigabspez, manStatus )
SELECT tbl_manuelleDaten.manArtikelnummer, tbl_manuelleDaten.manShore, tbl_manuelleDaten.manKommentar, tbl_manuelleDaten.manBranchen, tbl_manuelleDaten.manAnzeige, tbl_manuelleDaten.manWerk, tbl_manuelleDaten.manProdukthierarchie, tbl_manuelleDaten.manZeichnung, tbl_manuelleDaten.manYXZSchutz, tbl_manuelleDaten.manMaterialtext, tbl_manuelleDaten.manProfilabmessung1, tbl_manuelleDaten.manProfilabmessung2, tbl_manuelleDaten.manProfilabmessung3, tbl_manuelleDaten.manMatType1, tbl_manuelleDaten.manMatType2, tbl_manuelleDaten.manMatType3, tbl_manuelleDaten.manWerkuebergr, tbl_manuelleDaten.manGueltigabUeb, tbl_manuelleDaten.manWerksspez, tbl_manuelleDaten.manGueltigabspez, tbl_manuelleDaten.manStatus
FROM tbl_manuelleDaten_alt, tbl_manuelleDaten;

Was mache ich falsch, verdammt? :(

Ich bekomme immer die Meldung, dass 0 Datensätze geändert wurden.

Hier mein Code dazu:

   Dim db As DAO.Database

     Set db = CurrentDb

     db.Execute "tbl_manuelleDaten sichern"

     MsgBox "Es wurden " & db.RecordsAffected & " Datensätze angelegt."

     Set db = Nothing


LG

MaggieMay

Hallo,

wieso gibst du zwei (unverknüpfte!) Tabellen im From-Teil an? Ist eine davon leer?
Freundliche Grüße
MaggieMay

JessMind

genau! die _alt Tabelle ist leer. Ich würde die auch bei jedem Vorgang vorher ausleeren und neu befüllen!

MaggieMay

Du hast die erste Frage nicht beantwortet, warum tust da das?

Nimm die _alt-Tabelle aus der From-Anweisung raus.
Freundliche Grüße
MaggieMay

JessMind

sorry - ich wüsste nicht, warum ich sie verknüpfen sollte? was wäre der vorteil?

die eine Tabelle dient nur zum Vergleichen mit der anderen.

die _alt ist also der stand vor der aktualisieren. die andere tabelle aktualisiere ich im anschluss. Danach schaue ich nach, welche Artikel dazu gekommen sind. welche weg sind. welche sich geändert haben! :)

Jedenfalls hat die Korrektur beim FROM geholfen! Danke!

MaggieMay

Du könntest auch die Tabelle komplett kopieren und vorher die alte löschen:
DoCmd.DeleteObject acTable, "tbl_manuelleDaten_alt"
DoCmd.CopyObject , "tbl_manuelleDaten_alt", acTable, "tbl_manuelleDaten"
Freundliche Grüße
MaggieMay

JessMind

so einfach wäre es gewesen! :)

SUPER! Danke!

ebs17

Zitatum nachher ein Update auszuführen und danach zu prüfen, was sich geändert hat

Das Update ist wohl eine sehr unbewusste Aktion ...?
Mit freundlichem Glück Auf!

Eberhard

JessMind

Was meinst du mit "unbewusst"?

Es ist eine Produktdatenbank - da fallen manchmal Produkte weg, manche kommen zu, andere ändern sich.

Diese Änderungen muss ich jedenfalls jetzt noch feststellen (ich gebe aber zu, dass ich gerade erst herauszufinden versuche, wie ich das nun eigentlich anstelle!)

MaggieMay

Man könnte natürlich auch vor dem Update prüfen was sich ändern würde.
Freundliche Grüße
MaggieMay

JessMind

Am Ende brauche ich drei Zähler und ein Feld soll als "Neu" beschrieben werden, wenn der Datensatz neu hinzugekommen ist - die Frage ist, ob ich das vor dem Aktualisieren so abfragen kann?

1. Zähler: alle gleichen Datensätze
2. Zähler: Datensätze, die entfallen sind
3. Zähler: Datensätze, die hinzugekommen sind

DF6GL

Hallo,

ZitatEs ist eine Produktdatenbank - da fallen manchmal Produkte weg, manche kommen zu, andere ändern sich.


wozu brauchst Du dafür 3 "Zähler"?

Führe eine Feld "Status" mit, in dem der akt. Zustand diesbezüglich festgehalten wird.

Oder auch zwei Datumsfelder ("ErstelltAm" und "geändertAm") .

"ErstelltAm" wird gesetzt, wenn der DS neu angelegt wird, geändertAm wird in der "Form_AfterUpdate"-Ereignisprozedur gesetzt.

Wenn Du eine "Historie" brauchst, dann schreib den nicht geänderten DS (Oldvalue) in der Form_BeforeUpdate-Ereignisprozedur in eine Historientabelle... Eine datenreduzierte (datenoptimierte) wäre eine "Audit"-Funktion, die in einer Tabelle das Datum, den alten Wert und den neuen Wert bei einer Textfeld-Änderung (bei dessen BeforeUpdate-Ereignis) festhält...

JessMind

'Ich' brauche die Zähler nicht. Das ist Kundenanforderung (interner Kunde).

Damit krieg ich aber nur heraus, was neu ist und was geändert. Die fehlenden kommen doch dabei nicht raus, oder?

Ein Status-Feld an sich habe ich. Ich weiß nur nicht, wie ich es updaten soll - das versuche ich gerade zu eruieren.

MaggieMay

Neue oder fehlende Datensätze kannst du mit einer Inkonsistenzabfrage herausfinden.
Freundliche Grüße
MaggieMay

DF6GL

Hi,

mhmm, und ich versteh die "Kundenanforderung" nicht..  Wozu brauchst Du "fehlende" (heißt das "gelöschte")  Datensätze?

Wenn die Dinger weiterhin gebraucht werden, dürfen sie halt nicht gelöscht werden... Um sie zu löschen (soll heißen "ungültig machen") und doch wiederum zu behalten, kann das über einen "gelöscht"-Merker (Ja/Nein-Feld) erledigt werden.


Anzudenken wäre hier auch eine periodische Archivierung der gesamten Datenbank...