Neuigkeiten:

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

Mobiles Hauptmenü

Anfügeabfrage erzeugt keinen neuen Datensatz

Begonnen von nimora, Juli 15, 2015, 11:44:43

⏪ vorheriges - nächstes ⏩

nimora

Hallo,

ich habe einen Anfügeabfrage erstellt, um die daten aus einer quell-tabelle (dies sich permanent erweitert) in eine ziel-datei zu übertragen. das klappt auch.

sagen wir in der quelle sind 5 datensätze vorhanden, ich führe die anfügeabfrage aus, somit sind auch 5 datensätze in der ziel-dateil. füge ich jetzt in der ziel-tabelle selbst einen datensatz ein, hat dieser die id6. kommen in der zwischenzeit in der quelle datensatz 6 und 7 dazu und führe ich die anfügung aus, wird nur datensatz 7 übertragen, 6 wird ignoriert. Ich nehme an, da id6 schon belegt ist.

wie kann ich es evtl. so einstellen, dass neue datensätze aus der quelle im ziel an alle bisherigen, auch manuell vermerkten datensätz angehängt wird?

Danke

MaggieMay

Hi,

du kannst die IDs aus der Quelltabelle nicht übernehmen, wenn du auch manuell oder auf anderem Wege Datensätze in die Zieltabelle einfügst.
Freundliche Grüße
MaggieMay

nimora

#2
Hi und danke.

bei der anfügeabfrage lasse ich die ID bereits außen vor. ich übernehme zur zwei felder, dennoch habe ich den oben beschriebenen effekt.

gibt es noch eine andere möglichkeit für dieses problem? :/

edit:
vielleicht liegt es hieran, ich führe die aktualiesierung mittels button und script durch. kann das problem dadurch ausgelöst sein?
Private Sub Befehl7_Click()
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "Abfrage1", acNormal, acEdit
    DoCmd.SetWarnings False
    DoCmd.RunCommand acCmdSaveRecord 'Speichern
    Forms![ziel].Requery 'Datenquelle aktualisieren
End Sub


noch mal edit:

mit dem script hat es nix zu tun, geht auch nicht, wenn ich die abfrage händisch ausführe.

allerdings habe ich festgestellt, dass die mehrfache ausführung der abfrage dazu führt, dass alle datensätze aus der quelldatei nochmals! in die zieldatei geschrieben werden. das ist ja noch unnützer. einmal ausführen, 5 datensätze, noch mal ausführen, 10 datensätze.

wo liegt denn nun schon wieder mein denkfehler?  :(

MaggieMay

Du solltest mal den SQL-Code der Anfügeabfrage zeigen, denn wenn sich die Quelltabelle erweitert, darfst du ja nur die neuen Datensätze hinzufügen. Und wie sieht es aus mit Änderungen?
Freundliche Grüße
MaggieMay

nimora

also ich habe die abfrage mit boardmitteln erstellt. wie komme ich denn an den passenden sql-code?

MaggieMay

Öffne die Abfrage im Entwurf und wechsle über "Ansicht" auf die SQL-Ansicht.
Freundliche Grüße
MaggieMay

nimora

ahhh, wieder was gelernt. danke.

hier der code:
INSERT INTO ziel ( bew_name, bew_ort )
SELECT quelle.bew_name, quelle.bew_ort
FROM quelle;


auf diese weise werden bei jedem aufruf erneut die datensätze in die ziel-tabelle kopiert und zwar an die bereits bestehenden, aber die quelle hat sich nicht verändert. es werden immer wieder dieselben datensätze in das ziel getragen, sodass ich dann jeden eintrag aus quelle mehrfach in der ziel-tabelle habe.

wenn ich die id mit in die Abfrage einbeziehe, passiert das nicht, aber dann habe ich den eingangs beschriebenen effekt, dass bereits belegte id´s im ziel nicht mehr durch gleiche id´s aus der quelle ersetzen werden können. das ist ja auch logisch, aber wie kann ich daten aus der quelle an manuelle einträge im ziel anhängen?

ebs17

Nur neue Datensätze: Datensätze aus A, die nicht in B sind

Kleiner Tipp nebenbei: Access ist eine Entwicklungsumgebung und stellt, wenn man etwas einigermaßen Gescheites auf die Beine stellen will, durchaus einige Anforderungen. Da genügt es nicht sich etwas zu denken und dann und wann nachzufragen, sondern man sollte sich begleitend Grundlagen beibringen:
- Bücher,
- Hilfen,
- Tutorials,
- Eigenrecherchen im Internet mit aktuellen Stichworten,
- Forenbeiträge lesen, auch fremde. Auch dafür sind Foren da.
Mit freundlichem Glück Auf!

Eberhard

MaggieMay

Hi,

wenn die Abfrage tatsächlich so simpel ist wie du gezeigt hast, so kannst du einen eindeutigen Mehrfelderindex über Name und Ort anlegen, damit keine Duplikate gespeichert werden.
Freundliche Grüße
MaggieMay

nimora

#9
danke maggie, dann muss ich mal schauen, welches feld sich da eignet, da namen und/oder ort schon auch mehrfach auftreten können. Macht aber sinn, da irgendwo einen passenden index zu setzen.

danke auch an ebs17, genau das versuche ich ja, mir etwas beizubringen, dazu nutze ist Anleitungen, video-tut´s und bücher, auch an vba versuche ich mich anzunähern, aber irgendwo muss man ja anfangen und nebenbei möchte ich auch mein projekt umsetzten und das nicht erst, wenn ich alles gelesen und gesehen habe, was es gibt. daher frage ich auch hier nach, was mir hilft, dinge besser zu verstehen. werde deinen link mit freuen durchforsten.

Nachtrag: konnte es nun so lösen, dass ich mittels Abfrage, dank der Tips von euch eine neue Tabelle füllen kann, mit der ich nach herzenslust arbeiten kann.

danke