Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

"Aktualisieren von Daten einer Tabelle mit den Daten einer anderen" umsetzen?

Begonnen von Martin2023, Januar 04, 2023, 01:11:36

⏪ vorheriges - nächstes ⏩

Martin2023

Hallo! Ich bin durch die Websuche auf dieses Forum gestoßen, mache gerade meine ersten Schritte mit Access 2016 und bin eher der normale User ohne großartige Kenntnisse in der Programmierung etc.
Zu meinem Problem: Ich möchte gerne die Daten in einer Tabelle mit den Daten einer anderen Tabelle aktualisieren, versuche das schon seit Stunden mit Hilfe von Erstellung einer Abfrage unter Zuhilfenahme des Abfragetyps "aktualisieren" hinzubekommen aber komme absolut nicht weiter - vielleicht hat jemand einen Tipp für mich?
Access möchte ich für die Verwaltung von meinen Kundendaten für regelmäßig stattfindende Ausstellungen/Märkte etc. nutzen, hier habe ich mir eine Tabelle für alle allgemeinen Kundendaten erstellt und mehrere Tabellen mit verschiedenen Daten für einzelne Veranstaltungstermine die ich nicht in den allgemeinen Kundendaten drin haben möchte, daher die mehreren Tabellen.

MzKlMu

Hallo,
wenn du mehrere Tabellen hast, so musst du auch Beziehungen angelegt haben.
Zeige daher bitte mal ein Bild des Beziehungsfensters.
Gruß Klaus

Martin2023

Vielen Dank für die schnelle Antwort. Wie geschrieben bin da absoluter Anfänger und finde zu "Aktualisieren von Daten einer Tabelle mit den Daten einer anderen" kaum Infos im Web. Das mit den Beziehungen wusste ich z.B. nicht - wie gehe ich da vor bzw. auf was muss ich achten?
Ein weiterer Fehler den ich vielleicht drin habe:Ich habe das mit dem Primärschlüssel noch nicht so recht verstanden, ich habe in meiner Haupttabelle einen Primärschlüssel beim Feldnamen ID gesetzt mit Autowert. Diese habe ich in den "Untertabellen" aber genau so gemacht - ist das richtig?   

MzKlMu

Hallo,
ZitatDas mit den Beziehungen wusste ich z.B. nicht - wie gehe ich da vor bzw. auf was muss ich achten?
Du musst Dich mit den Grundlagen zu Access beschäftigen. Access muss man lernen. Access ist keine fertige Anwendung wie z.B. Excel oder Word und lässt sich nicht intuitiv bedienen. Access ist ein Programm zur Entwicklung bzw. Herstellung relationaler Datenbanken. Mit Access wird sozusagen die Anwendung erstellt und das muss gelernt werden.

Hier mal 2 Links dazu:
Etwas mehr Theorie:
https://www.hdm-stuttgart.de/~riekert/lehre/db-kelz/
Mehr Praxis:
https://www.access-tutorial.de/
Gruß Klaus


Martin2023

OK, hab schon befürchtet das es nicht so einfach ist. Hab da mal drübergeschaut und rumprobiert aber bin nicht weiter gekommen, für mich lohnt es sich auch nicht da weiter einzusteigen da ich die Sachen nur einmalig benötige. Habe mit meine Datenbank ohne Untertabellen erstellt, da ich nur selber damit arbeiten muss komme ich so gut klar, auch Abfragen und Berichte erstellen klappt.
Nur eine Kleinigekeit die ich nicht behoben bekomme: Es geht in meiner Datenbank um Markt und Messeaussteller, ich habe mir eine Abfrage erstellt die nach meinen Standnummern sortiert, diese sehen folgendermaßen aus: Immer ein Großbuchstabe gefolgt von einer Zahl im Bereich von 1-30 also z.B. A4 oder B8 oder D13 oder R15 etc. Wenn ich nun die Abfrage ausführe (ich habe beim erstellen der Abfrage in dem Feld Standnummer die Sortierreihenfolge aufsteigend aktiviert) sortiert er mir es in folgender Beispiehreihenfolge: A1 A10 A11 A12 A2 A3 A4 A5 A6 A7 A8 A9 (wenn ich die Standnummern A1-A12 vergeben habe), es soll aber so sortiert werden: A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
Gibt es da einen Workaround diese Sortierung anders auszugeben?   

MzKlMu

Hallo,
das kommt davon, wenn man die notwendige Normaliserung auser acht lässt. Ein Tabellenfeld sollte immer nur einen Wert enthalten (1.Normalform), daher wäre das Feld in 2 Felder aufzuteilen, eines für den Buchstaben und eines für die Zahl. Zur Ansicht kannst Du das einfach zur Standnummer zusammenfügen.
So wie das jetzt ist, musst Du die Zahl in einer Abfrage mit Mid abtrennen und dann erst nach Buchstaben und dann nach der Zahl sortieren. Ist das immer nur ein Buchstabe vorn ?
Gruß Klaus

Martin2023

Hallo! Danke für die Hilfe! Ja, es ist immer nur ein Buchstabe gefolgt von max. 2 Ziffern

MzKlMu

Hallo,
sortiere die Abfrage wie folgt:
.... ORDER BY Left([Standnummer],1), Mid([standnummer],2)
Gruß Klaus

ebs17

Mid ... gibt einen Wert vom Typ Variant (String) zurück.
Wenn man also eine numerische Sortierung mag, sollte man an eine zusätzliche Typkonvertierung denken.
? Mid("R17",2), VarType(Mid("R17",2))
17             8
' 8 entspricht vbString

Oder man setzt Normalisierung auch praktisch um und hätte von Haus aus ein Feld (Text) für die Buchstaben und ein Feld (Long) für die Zahlen. Dann würde beinahe jedem eine Sortierung über beide ohne Nachschulung gelingen.
Mit freundlichem Glück Auf!

Eberhard

Martin2023

Puh, komme nicht weiter, bin leider echt absoluter Newbie auf dem Gebiet.
Ich habe nun meine Abfrage geöffnet und bin in die "SQL-Ansicht" gegangen.
Da steht folgendes drin:
ORDER BY [Aussteller 26-2-23 nach Namen].[Standnr 26-2-23];
Ich habe diese Zeile gegen die von Klaus vorgeschlagene ausgetauscht:
ORDER BY Left([Standnummer],1), Mid([standnummer],2)
Aber danach ist in der Datenblattansicht gar nichts mehr sortiert

ebs17

Sortieren ist nun keine Besonderheit und kein Problem spezifisch in VBA oder SQL.

Wenn Du mal ein Telefonbuch gesehen hast: Die Sortierung von Texten (= alphanumerischen Zeichenketten) ist etwas anders als bei Zahlen, weil von A nach Z und von vorne nach hinten.
Mit freundlichem Glück Auf!

Eberhard

MzKlMu

Hallo
zeige die vollständige Abfrage (SQL).

Ps:
Die Feld und Objektnamen sind eine mittlere Katastrophe.
Gruß Klaus

Martin2023

SELECT [Aussteller 26-2-23 nach Namen].[Standnr 26-2-23], [Aussteller 26-2-23 nach Namen].[Standinfo 26-2-23], [Aussteller 26-2-23 nach Namen].Nachnamen, [Aussteller 26-2-23 nach Namen].Vornamen, [Aussteller 26-2-23 nach Namen].[Zahlungsstatus 26-2-23], [Aussteller 26-2-23 nach Namen].Bemerkung, [Aussteller 26-2-23 nach Namen].Dauerbucher
FROM [Aussteller 26-2-23 nach Namen]
WHERE ((([Aussteller 26-2-23 nach Namen].[26-2-23 Messehalle])=True))
ORDER BY [Aussteller 26-2-23 nach Namen].[Standnr 26-2-23];

MzKlMu

Hallo,
ein Feld Standnummer gibt es doch gar nicht. Also kann man doch nicht danach sortieren.
Versuche es mal so:
SELECT [Standnr 26-2-23]
    ,[Standinfo 26-2-23]
    ,Nachnamen
    ,Vornamen
    ,[Zahlungsstatus 26-2-23]
    ,Bemerkung
    ,Dauerbucher
FROM [Aussteller 26-2-23 nach Namen]
WHERE [26-2-23 Messehalle] = True
ORDER BY Left([Standnr 26-2-23],1), Val(Mid([Standnr 26-2-23],2))

Besser wäre aber Du würdest in der Tabelle für die Standnummer 2 Felder anlegen.

PS:
In SQL kann man auf die Angabe der Tabelle vor den Feldnamen verzichten, wenn es nur eine Tabelle/Abfrage ist und somit die Feldnamen eindeutig sind.
Die Klammerinflation in der Where Klausel kann man auch beseitigen. Und dann noch den SQL Text formatiert mit Codetags darstellen.
Die Tabellen/Abfragenamen und Feldnamen sind wirklich grausig.
Gruß Klaus