Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: JessMind am November 26, 2014, 10:17:48

Titel: Was stimmt nicht mit meinem Insert?
Beitrag von: JessMind am November 26, 2014, 10:17:48
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
Titel: Re: Was stimmt nicht mit meinem Insert?
Beitrag von: MaggieMay am November 26, 2014, 10:33:08
Hallo,

wieso gibst du zwei (unverknüpfte!) Tabellen im From-Teil an? Ist eine davon leer?
Titel: Re: Was stimmt nicht mit meinem Insert?
Beitrag von: JessMind am November 26, 2014, 10:38:39
genau! die _alt Tabelle ist leer. Ich würde die auch bei jedem Vorgang vorher ausleeren und neu befüllen!
Titel: Re: Was stimmt nicht mit meinem Insert?
Beitrag von: MaggieMay am November 26, 2014, 10:44:02
Du hast die erste Frage nicht beantwortet, warum tust da das?

Nimm die _alt-Tabelle aus der From-Anweisung raus.
Titel: Re: Was stimmt nicht mit meinem Insert?
Beitrag von: JessMind am November 26, 2014, 10:48:17
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!
Titel: Re: Was stimmt nicht mit meinem Insert?
Beitrag von: MaggieMay am November 26, 2014, 11:15:12
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"
Titel: Re: Was stimmt nicht mit meinem Insert?
Beitrag von: JessMind am November 26, 2014, 11:44:42
so einfach wäre es gewesen! :)

SUPER! Danke!
Titel: Re: Was stimmt nicht mit meinem Insert?
Beitrag von: ebs17 am November 26, 2014, 11:45:12
Zitatum nachher ein Update auszuführen und danach zu prüfen, was sich geändert hat

Das Update ist wohl eine sehr unbewusste Aktion ...?
Titel: Re: Was stimmt nicht mit meinem Insert?
Beitrag von: JessMind am November 26, 2014, 11:47:01
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!)
Titel: Re: Was stimmt nicht mit meinem Insert?
Beitrag von: MaggieMay am November 26, 2014, 11:58:03
Man könnte natürlich auch vor dem Update prüfen was sich ändern würde.
Titel: Re: Was stimmt nicht mit meinem Insert?
Beitrag von: JessMind am November 26, 2014, 13:35:11
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
Titel: Re: Was stimmt nicht mit meinem Insert?
Beitrag von: DF6GL am November 26, 2014, 13:47:11
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...
Titel: Re: Was stimmt nicht mit meinem Insert?
Beitrag von: JessMind am November 26, 2014, 13:56:02
'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.
Titel: Re: Was stimmt nicht mit meinem Insert?
Beitrag von: MaggieMay am November 26, 2014, 13:59:20
Neue oder fehlende Datensätze kannst du mit einer Inkonsistenzabfrage herausfinden.
Titel: Re: Was stimmt nicht mit meinem Insert?
Beitrag von: DF6GL am November 26, 2014, 14:05:42
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...
Titel: Re: Was stimmt nicht mit meinem Insert?
Beitrag von: JessMind am November 26, 2014, 14:18:33
Ja, ich verstehe es auch nicht. Dient wohl der Absicherung.

die Datenbank bezieht von SAP als Quellsystem - Archivierung möchte ich daher keine machen. Die Daten sind in SAP ohnehin archiviert.

ich habe ja jetzt zwei Tabellen - einmal den alten Stand, einmal den neuen.

Meine Idee war, dass ich mit einer (oder drei ;)) Abfragen prüfe: welche Mat sind in der neuen, aber nicht in der alten? (neue)
Welche Mat sind in der alten, aber nicht in der neuen? (gelöschte)
Welche Mat sind in beiden Tabellen? (gleiche)

vllt mache ich da ja auch zu kompliziert :(
Titel: Re: Was stimmt nicht mit meinem Insert?
Beitrag von: DF6GL am November 26, 2014, 14:57:07
Hallo,

es sollte helfen für
1), 2)

http://www.donkarl.com/?FAQ3.16


für 3)

Select * from Tabelle1 inner join Tabelle2 on Tabelle1.MatNr = Tabelle2.MatNr
Titel: Re: Was stimmt nicht mit meinem Insert?
Beitrag von: JessMind am November 26, 2014, 15:20:25
TAUSEND Dank! Das hat funktioniert - bei mir ist das mit den Joins definitiv zu lange her (8 jahre ...)

Jetzt muss ich nur noch zählen! Und Tadaaaa! Fertig!