online 1
gast (50)

/ Forum / Datenbanken

DatenbankenDatenbanken

Fragevon Piet76 vom 14.03.2020, 09:37 Options

Access Abfrage aktualisiert Daten nicht

Hallo Zusammen,
ich habe ein Aktualisierungsproblem mit einer Access Datenbank. Eine Abfrage aktualisiert nur Daten die Bereits bei der Erstellung der Datenbank vorhanden waren.

Daten die nachträglich über ein Formular eingegeben wurden, tauchen zwar in den entsprechenden Tabellen, die miteinander verknüpft sind auf, werden aber in der Abfrage nicht berücksichtigt.


Antwort schreiben

Antwort 1 von Piet76 vom 14.03.2020, 09:38 Options

Es handelt sich um eine Datenbank die zur Erfassung von Laboraufträgen dienen Soll.

Es gibt eine Haupttabelle mit dem Namen "Aufträge".
Hier gibt es einen Primärschlüssel unter "Auftragsnummer".
Weitere Untertabellen sind Probendaten. Diese Tabelle enthält ebenfalls eine Spalte "Auftragsnummer" Die Verknüpfung besteht aus einer 1(Aufträge):n(Probendaten) Verknüpfung.

Eine weitere Untertabelle enthält "Prüfmethoden" dort wird die Anzahl an Proben für eine Prüfmethode festgehalten. Der Standardwert ist hier auf null gesetzt. Die Anzahl der Probendaten ist ebenfalls über eine 1:n Verknüpfung mit der Haupttabelle "Aufträge" über eine Spalte Auftragsnummer verknüpft.

Hier wärte glaube ich eine 1:1 Verknüpfung besser, da jeder Auftrag nur einen Datensatz enthalten darf der die Anzahl an Proben je Prüfmethode festhält.
Wie bekomme ich das am besten hin?

Des weiteren wurde eine Abfrage generiert, die die Preise für die Unterschiedlichen Prüfmethoden berechnen soll. Hier findet jedoch nach Eingabe neuer Daten über ein Formular keine Aktualisierung der Abfrage mit den neuen Daten statt.

Nochmal etwas zur Struktur.

Tabelle Aufträge: (enthält Auftragsdaten)
Auftragsnummer, Auftraggeber, Abteilung, Eingangsdatum usw.

Tabelle Probendaten: (enthält Probendaten zum zugehörigen Auftrag)
Artikelnummer, Anzahl, Zustand usw.
Es können mehrere Datensätze zu einem Auftrag gehören.

Tabelle Probenanzahl je Prüfmethode: (enthält Probenanzahlen je Prüfmethode)
Es darf nur ein Datensatz zu einem Auftrag zugeordnet werden.

Abfrage:
SELECT [1Haupttabelle Aufträge].Auftragsnummer, [Quelle Kostenstellen].Kostenstelle, [Quelle Produktname].Produkt, [Quelle Hersteller].[Hesteller:], [Quelle Artikelnummer].Artikelnummer, [1Haupttabelle Aufträge].Bearbeiter, [2Nebentabelle Probendaten].Probenanzahl, [1Haupttabelle Aufträge].Stundensatz, (IIf([18]>9,[18]*[Stundensatz]*15/600,IIf([18]<5,[18]*[Stundensatz]*15/600*1.1,IIf([18]>4,[18]*[Stundensatz]*15/600*1.05,0))))*[Probenanzahl]/[18] AS [Anlieferzustand Spalte Fehler]

Antwort 2 von Marie vom 16.03.2020, 07:08 Options

Das kann nicht sein, dass in Deiner Abfrage nicht alle aktuellen Daten angezeigt werden. Ich vermute mal, dass Du die neuen Daten durch deine If-Bedingungen ausschliesst?

Nachvollziehen kann ich das leider nicht.

Mach mal eine Kopie von Deiner Abfrage und lösch das raus, ob dann immer noch nicht aktualisiert wird:

(IIf([18]>9,[18]*[Stundensatz]*15/600,IIf([18]<5,[18]*[Stundensatz]*15/600*1.1,IIf([18]>4,[18]*[Stundensatz]*15/600*1.05,0))))*[Probenanzahl]/[18] AS [Anlieferzustand Spalte Fehler] 



gruß Marie

Antwort 3 von Piet76 vom 17.03.2020, 11:29 Options

Danke Dir Marie.

Aber das scheint nicht die Lösung zu sein.
Ich habe, wie Du mir geraten hast alle If-Bedingungen gelöscht.
Die neu eingegebenen Datensätze erscheinen jedoch weiterhin nicht in meiner Abfrage.

Der Fehler kann doch somit nur in den Tabellenverknüpfungen liegen. Oder täusche ich mich da?

Antwort 4 von Piet76 vom 17.03.2020, 11:30 Options

Ach ja ,
so schaut das ganze nun als Testabfrage aus.

SELECT [1Haupttabelle Aufträge].Auftragsnummer, [Quelle Kostenstellen].Kostenstelle, [Quelle Produktname].Produkt, [Quelle Hersteller].[Hesteller:], [Quelle Artikelnummer].Artikelnummer, [1Haupttabelle Aufträge].Bearbeiter, [2Nebentabelle Probendaten].Probenanzahl, [1Haupttabelle Aufträge].Stundensatz, [Hilfstabelle Probenanzahl je Untersuchung].[18] AS Anlieferzustand
FROM (([Quelle Abteilungskürzel] INNER JOIN ([Quelle Kostenstellen] RIGHT JOIN ([Quelle Bearbeiter] RIGHT JOIN [1Haupttabelle Aufträge] ON [Quelle Bearbeiter].ID = [1Haupttabelle Aufträge].Bearbeiter) ON [Quelle Kostenstellen].ID = [1Haupttabelle Aufträge].Kostenstelle) ON [Quelle Abteilungskürzel].ID = [1Haupttabelle Aufträge].Abteilungskürzel) INNER JOIN ([Quelle Artikelnummer] INNER JOIN ([Quelle Hersteller] RIGHT JOIN ([Quelle Produktname] RIGHT JOIN [2Nebentabelle Probendaten] ON [Quelle Produktname].ID_PK = [2Nebentabelle Probendaten].Produktname) ON [Quelle Hersteller].ID = [2Nebentabelle Probendaten].Hersteller) ON [Quelle Artikelnummer].ID = [2Nebentabelle Probendaten].Artikel_Nr) ON [1Haupttabelle Aufträge].Auftragsnummer = [2Nebentabelle Probendaten].Auftrag) INNER JOIN [Hilfstabelle Probenanzahl je Untersuchung] ON [1Haupttabelle Aufträge].Auftragsnummer = [Hilfstabelle Probenanzahl je Untersuchung].Auftrag
GROUP BY [1Haupttabelle Aufträge].Auftragsnummer, [Quelle Kostenstellen].Kostenstelle, [Quelle Produktname].Produkt, [Quelle Hersteller].[Hesteller:], [Quelle Artikelnummer].Artikelnummer, [1Haupttabelle Aufträge].Bearbeiter, [2Nebentabelle Probendaten].Probenanzahl, [1Haupttabelle Aufträge].Stundensatz, [Hilfstabelle Probenanzahl je Untersuchung].[18];

Antwort 5 von Piet76 vom 17.03.2020, 11:58 Options

So, hab das Problem gelöst.
Da gab es tatsächlich verknüpfungen zu ungültigen Tabellen.

Aber jetzt taucht ein neues Problem auf.
Ich habe bei den Probenanzahl je Untersuchung als Standardwert die Null eingetragen.
Bei der Abfrage bekomme ich nun den Feher DIV/0.

Was tun?!?
Hiiiiiilfe!

Antwort 6 von Marie vom 18.03.2020, 01:28 Options

Ja Durch 0 dividieren gibt halt nen Error, kannste aber abfangen, indem Du nur dann dividierst, wenn <> 0. Wo ist die Stelle?

Gruß Marie

Antwort 7 von Piet76 vom 18.03.2020, 07:30 Options

Prima,
ich hab den Standardwert = null rausgenommen.
Funktioniert genauso gut. die Zellen bleiben halt nur leer und werden nicht berechnet, wenn nichts drin steht.

Danke soweit!

Melde mich bestimmt wieder wenns was neues gibt.

;o)

Antwort 8 von Piet76 vom 20.03.2020, 12:50 Options

Hallöchen,
und schon gehts wieder los mit Access.
Diesmal gibt es das Problem, dass die Abfrage nach einem bestimmten Artikel keine Daten enthält, obwohl ich den Artikel in der Datenbanktabelle Probendaten stehen habe.

Liegt es diesmal daran, dass die Abfrage nichts mit leeren Datenfeldern anfangen kann?

Wie kann ich das Problem geschickt umgehen?

Antwort 9 von Piet76 vom 20.03.2020, 16:45 Options

Grüzi,
folgendes hab ich noch herausgefunden.
Wenn ich in der Abfrage z.B. nach einer Artikelnummer filtere, dann schimpft Access "Datentypen in Kriterienausdruck unverträglich".
Wenn ich aber stattdessen eine Zahl, zb. 1 eintrage erscheinen Datensätze eines Artikels, bei 2 Datensätze eines anderen Artikels.

Hierzu muss ich sagen, dass ich alle Daten die sich immer wieder wiederholen aus einer Quelltabelle beziehe in der nur diese Daten stehen.

Z.B. gibt es eine Quelltabelle für Kostenstellen, eine für Auftraggeber, eine für Artikelnummern usw.

Antwort 10 von Marie vom 22.03.2020, 05:48 Options

Die Abfrage kann schon etwas mit leeren datenfeldern anfangen, es sei denn Du hast diese ausgeschlossen. Um das aber beurteilen zu können müsstest du schon die Abfrage hier reinposten.

Gruß marie

Antwort 11 von Piet76 vom 22.03.2020, 12:08 Options

Hallo Marie,
kann man hier vielleicht auch Bilder Posten?
Dann füge ich die Ansicht der Beziehungen und den SQL-Text der Abfrage mit bei.

Antwort 12 von Marie vom 23.03.2020, 01:52 Options

geht doch aus dem SQL-Text hervor, poste den mal

Antwort 13 von Piet76 vom 25.03.2020, 07:55 Options

So schaut das ganze in SQL aus.
Aber so richtig schlau werd ich daraus nicht. SQL ist keine meiner Stärken.

SELECT [1Haupttabelle Aufträge].Auftragsnummer, [1Haupttabelle Aufträge].Eingangsdatum, [1Haupttabelle Aufträge].Bearbeiter, [1Haupttabelle Aufträge].Auftraggeber, [1Haupttabelle Aufträge].Abteilungskürzel, [1Haupttabelle Aufträge].Kostenstelle, [1Haupttabelle Aufträge].Untersuchungstyp, [2Nebentabelle Probendaten].Produktname, [2Nebentabelle Probendaten].Hersteller, [2Nebentabelle Probendaten].Artikel_Nr, [2Nebentabelle Probendaten].Probenanzahl, [1Haupttabelle Aufträge].Stundensatz
FROM ([1Haupttabelle Aufträge] INNER JOIN [2Nebentabelle Probendaten] ON [1Haupttabelle Aufträge].Auftragsnummer = [2Nebentabelle Probendaten].Auftrag) LEFT JOIN [Hilfstabelle Probenanzahl je Untersuchung] ON [1Haupttabelle Aufträge].Auftragsnummer = [Hilfstabelle Probenanzahl je Untersuchung].Auftrag
GROUP BY [1Haupttabelle Aufträge].Auftragsnummer, [1Haupttabelle Aufträge].Eingangsdatum, [1Haupttabelle Aufträge].Bearbeiter, [1Haupttabelle Aufträge].Auftraggeber, [1Haupttabelle Aufträge].Abteilungskürzel, [1Haupttabelle Aufträge].Kostenstelle, [1Haupttabelle Aufträge].Untersuchungstyp, [2Nebentabelle Probendaten].Produktname, [2Nebentabelle Probendaten].Hersteller, [2Nebentabelle Probendaten].Artikel_Nr, [2Nebentabelle Probendaten].Probenanzahl, [1Haupttabelle Aufträge].Stundensatz;

Antwort 14 von Marie vom 26.03.2020, 22:42 Options

Nach so vielen kriterien gruppiert kann ja fast nix mehr übrig bleiben.

Mach mal die gruppierungen weg, ob dann nicht genug Datensätze angezeigt werden.

Was soll das denn sein, was da angezeigt wird:
GROUP BY [1Haupttabelle Aufträge].Auftragsnummer, [1Haupttabelle Aufträge].Eingangsdatum, [1Haupttabelle Aufträge].Bearbeiter, [1Haupttabelle Aufträge].Auftraggeber, [1Haupttabelle Aufträge].Abteilungskürzel, [1Haupttabelle Aufträge].Kostenstelle, [1Haupttabelle Aufträge].Untersuchungstyp, [2Nebentabelle Probendaten].Produktname, [2Nebentabelle Probendaten].Hersteller, [2Nebentabelle Probendaten].Artikel_Nr, [2Nebentabelle Probendaten].Probenanzahl, [1Haupttabelle Aufträge].Stundensatz; 

Antwort 15 von Piet76 vom 27.03.2020, 07:59 Options

Ja, gefiltert soll nur nach einem Kriterum werden.
Z.B. Nach Artikelnummer, aber die anderen zugehörigen Datenfelder wie "Auftraggeber, Kostenstelle, usw." sollen auch angezeigt werden.

Ich probier mal ein paar dieser Daten wegzulassen.

Antwort 16 von Piet76 vom 27.03.2020, 08:48 Options

Ich habe mal alle Felder einer Abfrage gelöscht, bis auf Artikelnummer und die Preisbereichnung für diesen.

So schaut die abgespeckte Version aus:

SELECT [2Nebentabelle Probendaten].Artikel_Nr, IIf([18]>9,[18]*[Stundensatz]*15/600,IIf([18]<5,[18]*[Stundensatz]*15/600*1.1,IIf([18]>4,[18]*[Stundensatz]*15/600*1.05,0)))*[Probenanzahl]/[18] AS [Anlieferzustand Spalte Fehler]
FROM ([1Haupttabelle Aufträge] INNER JOIN [2Nebentabelle Probendaten] ON [1Haupttabelle Aufträge].Auftragsnummer = [2Nebentabelle Probendaten].Auftrag) INNER JOIN [Hilfstabelle Probenanzahl je Untersuchung] ON [1Haupttabelle Aufträge].Auftragsnummer = [Hilfstabelle Probenanzahl je Untersuchung].Auftrag
GROUP BY [2Nebentabelle Probendaten].Artikel_Nr, IIf([18]>9,[18]*[Stundensatz]*15/600,IIf([18]<5,[18]*[Stundensatz]*15/600*1.1,IIf([18]>4,[18]*[Stundensatz]*15/600*1.05,0)))*[Probenanzahl]/[18];

Wenn ich keine Kriterien in der Abfrage nach der Artikelnummer festlege, also nicht nach einem bestimmten Artikel filtere, erscheinen alle Datensätze. Sobald ich nach einer Artikelnummer filtere werden keine Daten angezeigt.
Wenn ich statt der Artikelnummer eine Zahl z.B. 1 als Filterkriterium eingebe werden immer die Daten zu einem Artikel angezeigt, bei zwei die eines anderen Artikels !?!

Antwort 17 von Piet76 vom 27.03.2020, 08:50 Options

Ich habe mal alle Felder einer Abfrage gelöscht, bis auf Artikelnummer und die Preisbereichnung für diesen.

So schaut die abgespeckte Version aus:

SELECT [2Nebentabelle Probendaten].Artikel_Nr, IIf([18]>9,[18]*[Stundensatz]*15/600,IIf([18]<5,[18]*[Stundensatz]*15/600*1.1,IIf([18]>4,[18]*[Stundensatz]*15/600*1.05,0)))*[Probenanzahl]/[18] AS [Anlieferzustand Spalte Fehler]
FROM ([1Haupttabelle Aufträge] INNER JOIN [2Nebentabelle Probendaten] ON [1Haupttabelle Aufträge].Auftragsnummer = [2Nebentabelle Probendaten].Auftrag) INNER JOIN [Hilfstabelle Probenanzahl je Untersuchung] ON [1Haupttabelle Aufträge].Auftragsnummer = [Hilfstabelle Probenanzahl je Untersuchung].Auftrag
GROUP BY [2Nebentabelle Probendaten].Artikel_Nr, IIf([18]>9,[18]*[Stundensatz]*15/600,IIf([18]<5,[18]*[Stundensatz]*15/600*1.1,IIf([18]>4,[18]*[Stundensatz]*15/600*1.05,0)))*[Probenanzahl]/[18];

Antwort 18 von Piet76 vom 27.03.2020, 08:50 Options

Wenn ich keine Kriterien in der Abfrage nach der Artikelnummer festlege, also nicht nach einem bestimmten Artikel filtere, erscheinen alle Datensätze. Sobald ich nach einer Artikelnummer filtere werden keine Daten angezeigt.
Wenn ich statt der Artikelnummer eine Zahl z.B. 1 als Filterkriterium eingebe werden immer die Daten zu einem Artikel angezeigt, bei zwei die eines anderen Artikels !?!

Antwort 19 von Piet76 vom 04.04.2020, 12:31 Options

Hmm, hat da keiner mal nen kleinen Tip?!?

Ähnliche Themen

abfrage
jasper111  19.01.2007 - 153 Hits - 3 Antworten

abfragen in access
humusandi  14.08.2007 - 60 Hits - 4 Antworten

Access mit Excel verbunden und nun Abfrage
Katja2  20.08.2007 - 320 Hits - 1 Antwort

Excel Abfrage mit Verknüpfung von Daten aus 2 Mappen
willymo  29.10.2007 - 335 Hits - 6 Antworten

access abfrage
lbw54  05.05.2008 - 153 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026