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.
Hallo,
wenn du mehrere Tabellen hast, so musst du auch Beziehungen angelegt haben.
Zeige daher bitte mal ein Bild des Beziehungsfensters.
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?
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/
Grundlagen - SQL ist leicht (4) - Aktualisierung einer Tabelle (https://www.ms-office-forum.net/forum/showthread.php?t=304156)
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?
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 ?
Hallo! Danke für die Hilfe! Ja, es ist immer nur ein Buchstabe gefolgt von max. 2 Ziffern
Hallo,
sortiere die Abfrage wie folgt:
.... ORDER BY Left([Standnummer],1), Mid([standnummer],2)
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.
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
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.
Hallo
zeige die vollständige Abfrage (SQL).
Ps:
Die Feld und Objektnamen sind eine mittlere Katastrophe.
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];
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.
ZitatDie Tabellen/Abfragenamen und Feldnamen sind wirklich grausig.
Nicht nur das, die Benamsung legt ausserdem die Vermutung nahe, dass
das Datenmodell eher suboptimal ist.
ZitatBesser wäre aber Du würdest in der Tabelle für die Standnummer 2 Felder anlegen.
Das hat auch damit zu tun, dass man dann für diese Felder Indizes beim Sortieren und weiteren vergleichenden Operationen nutzen könnte, was der Performance unheimlich dienen kann - für jene, die Datenmengen über Spaßgrenzen hinaus verwenden, manche ja auch unbedarft und unfreiwillig.
Auf berechnete Felder entfällt eine Indexnutzung.
Wie soll ich denn meine Feldnamn etc. ändern damit die nicht "grausig" sind? Dann ändere ich das in meiner Tabelle. Sorry, für mich ist das alles Neuland
Das andere gebe ich auf.....
Hallo,
was genau steht dann in den Feldern für die Standnr wo es nicht funktioniert.
Das ganze Datenmodell dürfte verkorkst sein.
Es gibt in der Tabelle offensichtlich für jede Halle eine Feld.
[8-10-23 Messehalle], [Standnr 8-10-23]
[26-3-23 Messehalle], [Standnr 26-3-23]
Kann es sein, dass die Zahlen einem Datum entsprechen?
Das ist natürlich in einer Datenbank völlig unbrauchbar.
Hier fehlen weitere Tabellen.
Aber wenn Du einen Vorschlag haben willst, musst Du die Zusammenhänge genauer erklären.