Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: HaNe am Januar 27, 2020, 07:49:12

Titel: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Januar 27, 2020, 07:49:12
Hallöchen,
ich habe folgendes Problem. Mit einer Anfügeabfrage möchte ich Daten (ca. 50 Datensätze) an eine vorhandene Tabelle (Fertigungsauftrag) anfügen. Diese Tabelle besitzt ein indiziertes Feld -Ohne Duplikate-(FaNr), welches eine bestimmte fortlaufende Nr. besitzt. Ich will nun bei dieser Anfügeabfrage diesen Wert automatisch immer um 1 erhöhen: Mein Gedanke geht in diese Richtung:
FaNrNeu: Nz(DomMax("FaNr";"Fertigungsauftrag");0)+1
Ergebnis, wenn ich diese Abfrage als Auswahlabfrage erstelle: der größte Wert wird aus der vorhandenen Tabelle um 1 für alle ermittelten Datensätze erhöht. z.B. größter Wert in Tabelle= 1000, ermittelter Wert zum Anhängen liegt bei allen Datensätzen bei 1001.
Was mache ich hier falsch?

Grüße aus dem Erzgebirge
Hagen
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: DF6GL am Januar 27, 2020, 08:08:17
Hallo,

das Ergebnis ist nicht falsch...  Eine Abfrage besitzt keinen prozeduralen Charakter, somit wird nicht jedes Mal beim Anfügen eines DS die maximale Anzahl der aktuellen DS ermittelt.

Als Alternative:
Verwende eine kleine Recordset-Schleife, in der der Feldwert jeweils um 1 erhöht  und  die Daten an die Tabelle angefügt werden.
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Januar 27, 2020, 09:04:51
Hallo nochmal,
vielen Dank für die schnelle Antwort. Leider bin ich im Bereich Schleifen noch kpl. unerfahren.
Gibt es irgendwo ein Beispiel, wo Datensätze mittels einer Schleife an das Ende einer Tabelle angefügt werden? Ich würde das dann für meine DB zurecht basteln.
Vielen Dank

Gruß
Hagen
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: Beaker s.a. am Januar 27, 2020, 12:20:04
Hallo Hagen,
Falls es mit Abfragen bei dir besser bestellt ist als mit Schleifen, hilft vielleicht dies:
https://www.ms-office-forum.net/forum/showthread.php?t=298414 (https://www.ms-office-forum.net/forum/showthread.php?t=298414)
gruss ekkehard
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Januar 27, 2020, 12:54:44
Hallo Ekkehard,
vielen Dank für die Hilfe. Ich muss mir das mal in Ruhe durcharbeiten. Aktuell sind das alles "böhmische Dörfer" für mich - hat aber nix mit der Nähe zur tschechischen Grenze zu tun ;D
Das mit den Schleifen klingt für mich sehr plausibel. Ich such mal weiter, ob ich da ein Beispiel im Net finde.

Gruß aus dem Erzgebirge
Hagen
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: DF6GL am Januar 27, 2020, 12:57:09
Hallo,

hier ein Minimal-Beispiel mit VBA  (Luftcode,  Feldnamen anpassen, Datentypen beachten!  Hochkommata bei TEXT-Feldern Feld2 und Feld3 nicht vergessen ):


Dim rs as Dao.Recordset, db as Database, i as Long


Set db = CurrentDb
Set rs = db.Openrecordset ("Select *, Max([IndizFeld]) as MaxAnz from tblDeineImporttabelle", dbOpenSnapshot)
i= rs!MaxAnz

Do Until rs.Eof
   i=i+1
   db.Execute "Insert into Fertigungsauftrag (IndizFeld, Feld1, Feld2, Feld3, Feld4) Values (" & i & "," & rs!Feld1 & ",'" & rs!Feld2 & "','" & rs!Feld3 & "'," & rs!Feld4 & ")",dbFailOnError
   rs.Movenext
Loop

rs.Close
Set rs = Nothing
Set db = Nothing

Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Januar 27, 2020, 13:10:24
Hallo DF6GL,
vielen Dank für das Beispiel. Ich arbeite hier mit Access 2007. Funktioniert da dieser Code auch?

Vielen Dank
Gruß
Hagen
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: DF6GL am Januar 27, 2020, 13:14:17
Hallo,

ausprobieren hilft...  8)


Ja, warum nicht?
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Januar 31, 2020, 10:09:49
Hallo DF6GL,
leider kam ich gestern Abend erst zum Testen. Wie vermutet, funktioniert das "noch" nicht so, wie ich das gern möchte. Kann auch sein, ich habe mich falsch ausgedrückt. Deswegen habe ich mal schnell einen Auszug meiner DB erstellt und hier angehängt.
Die beiden Tabellen ABFDOK und ABFPOS sind Tabellen unserer Bürosoftware ( Sage ) und liefern die Daten. Diese sollen mit der Anfügeabfrage (AbfAlleDatenSageFa) an die Tabelle Fertigunsauftrag angefügt werden. In der Tbl Fertigungsauftrag gibt ein indiziertes Feld (Fertigungsauftrag_Nr), welches immer um 1 erhöht werden soll. Ich hatte also im Plan den größten Wert im Feld Fertigungsauftrag_Nr für jeden anzufügenden DS um 1 zu erhöhen.

Irgendwie bekomme ich das aber nicht hin...
Bin für jede Hilfe oder jeden Tipp sehr dankbar.....man lernt eben nie aus ;)

Vielen Dank schonmal für alle Hilfe.

Herzliche Grüße aus dem (leider noch immer schneefreien)Erzgebirge
Hagen
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: MzKlMu am Januar 31, 2020, 11:12:36
Hallo,
warum nimmst Du nicht einfach den Autowert ?
Das ist auch eine Zahl des Typs Longinteger.
Mit einer einmaligen Anfügeabfrage kann man den Autowert auch auf einen Anfangswert setzen.

Normalerweise verwenden man den Autowert als Primärschlüssel.
Wenn Du beim jetzigen Aufbau bleiben willst, so ist der Autowert überflüssig.
Wieso umfasst Deine Anfügeabfrage beide Tabellen ?
Was genau willst Du denn jetzt wo anfügen, einen kompletten Fertigungsauftrag mit allen seinen Positionen ?
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Januar 31, 2020, 12:03:11
Hallo Klaus,
vielen Dank für deine schnelle Antwort.
Den Autowert kann ich leider nicht nehmen, da ich die Daten in anderen Programmen weiter verarbeite . Wenn ein Fertigungsauftrag einmal eine Nr. bekommen hat, darf diese nie geändert werden.

Den Autowert kann ich ohne Probleme als Primärschlüssel deklarieren. Es dürfen nur keine doppelten Fertigungsauftragsnummern vergeben werden.

Die Daten, welche in anfügen möchten stammen aus den beiden Tabellen DOK und POS, werden in der Abfrage verknüpft und das Ergebnis soll an die Tabelle Fertigunsgauftrag angefügt werden. Die DOK-Datei enthält die Kopfdaten vom Auftrag - die POS-datei enthält die Auftragspositionen.
Ziel solle es sein:
Es wird in SageKHK ein Auftrag angelegt und aus den angelegten Daten wird dann ein Fertigungsauftrag für meine Fertigung generiert.
Verwendet werden alle Felder, welche in der Anfügeabfrage AbfAlleDatenSageFa vorhanden sind. Diese sollen dann an die Fertigungsauftragstabelle angehängt werden.
Die Felder aus der Tabelle Fertigungsauftrag welche nicht in der Abfrage nicht enthalten sind, brauche ich für nachträgliche Eintragungen.

Ich hoffe das ich mich nun nicht zu kompliziert ausgedrückt habe.

Gruß
Hagen
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: PhilS am Januar 31, 2020, 12:09:25
Zitat von: HaNe am Januar 31, 2020, 12:03:11
Den Autowert kann ich leider nicht nehmen, da ich die Daten in anderen Programmen weiter verarbeite . Wenn ein Fertigungsauftrag einmal eine Nr. bekommen hat, darf diese nie geändert werden.
Das ist nicht ungewöhnlich.
Worin unterscheidet sich aber jetzt das Resultat von deinem Ansatz mit DMax von einem Autowert?

Nebenbei: Wenn du einer Funktion einen Wert aus der Quelltabelle übergibst, wird diese schon für jeden Datensatz einzeln ausgeführt.

Zitat von: HaNe am Januar 31, 2020, 12:03:11Es wird in SageKHK ein Auftrag angelegt und aus den angelegten Daten wird dann ein Fertigungsauftrag für meine Fertigung generiert.
Sollte dann nicht auch SageKHK die eindeutige ID für den Auftrag vergeben?
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: MzKlMu am Januar 31, 2020, 12:18:23
Hallo,
ZitatWenn ein Fertigungsauftrag einmal eine Nr. bekommen hat, darf diese nie geändert werden.
Genau daher wäre doch der Autowert geeignet, den kann man nicht mehr ändern, das wird von Access automatisch verhindert, wohingegen die selbst vergebene Nummer ohne eigene Gegenmaßnahmen völlig problemlos geändert werden kann. Es spricht also alles eher für den Autowert.

Üblicherweise würde man ein solches Vorhaben mit einem Hauptformular für die Kopfdaten und einem Unterformular für die Positionsdaten realisieren.
Und Du musst doch nur die Positionsdaten kopieren, die Daten für den Fertigungsauftrag kommen doch aus SageKHK.
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Januar 31, 2020, 12:32:29
Hallo PhilS,
vielen Dank für die Antwort.
Wenn ich einen Autowert nehme, geht der doch bei 1 los. Ich habe aber bereits im aktuellen Fertigungsauftragsprogramm ca. 18000 Fertigungsaufträge, welche ich erhalten muss und kann also die Nr 1-18000. nicht nochmal verwenden. Außerdem, wenn ich einen Fertigunsauftrag nachträglich löschen möchte und neu generiere, würde der FA dann eine andere Nr bekommen und die alte Nr wäre durch Autowert nicht mehr vorhanden. Ich brauche aber eine lückenlose Reihenfolge.

Sage hat die Tabellen so aufgebaut das in der DOK ein Autowert ist(AbfDokId) und dieser Wert als ABFPosAuftragID in der Tabelle Pos auftaucht. So können diese beiden Tabellen verknüpft wieder verknüpft werden und man bekommt alle Daten, welche in einem Auftrag vorhanden sind. An der Struktur kann ich leider nichts ändern.

Gruß
Hagen
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Januar 31, 2020, 12:40:13
Hallo,
Zitat von: MzKlMu am Januar 31, 2020, 12:18:23
Hallo,
ZitatWenn ein Fertigungsauftrag einmal eine Nr. bekommen hat, darf diese nie geändert werden.
Genau daher wäre doch der Autowert geeignet, den kann man nicht mehr ändern, das wird von Access automatisch verhindert, wohingegen die selbst vergebene Nummer ohne eigene Gegenmaßnahmen völlig problemlos geändert werden kann. Es spricht also alles eher für den Autowert.

Üblicherweise würde man ein solches Vorhaben mit einem Hauptformular für die Kopfdaten und einem Unterformular für die Positionsdaten realisieren.
Und Du musst doch nur die Positionsdaten kopieren, die Daten für den Fertigungsauftrag kommen doch aus SageKHK.

Ich brauche aber lückenlose FA-Nummer. Wenn ich nachträglich einen Fertigungsauftrag löschen muss - es werden z.B. wichtige Daten im Auftrag geändert - und diesen FA dann neu anlege, würde durch den Autowert die Nr fehlen.
In der alten DB realisiere ich das Vorhaben auch über Haupt und Unterformular.
Nur dauert das erstellen der Daten. Habe die alte DB in Front und BackEnd geteilt und sicher damals (2008)noch mehr Fehler programmiert, wie heute. Deshalb bin ich aktuell am Ändern dieser Datenbank.

Gruß
Hagen
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: MzKlMu am Januar 31, 2020, 12:49:19
Hallo,
wie ich bereits oben schrieb, kann man einem Autowert durch eine einfache Anfügeabfrage einen Startwert vorgeben.
Zitatund diesen FA dann neu anlege, würde durch den Autowert die Nr fehlen.
Und das ist bei Deiner Version nicht ? Du hast die gleiche Lücke, denn Du zählst ja mit +1 vom Maxwert hoch. Du musst vor der Vergabe einer neuen Nummer prüfen ob eine Lücke vorhanden ist, wenn ja, diese verwenden, wenn nicht Max+1. Und sinnvolles Prüfen auf eine Lücke geht nur mit einer Vorratstabelle in der alle Fertigungsnummern lückenlos vorhanden sind. Das ist auch ziemlicher Aufwand. Du solltest Dir daher auch mal überlegen, ob diese Nummer wirklich lückenlos sein muss.
Was stört an einer Lücke ?

Das Kopieren habe ich immer noch nicht verstanden, wer legt denn jetzt den Auftrag an, Du oder Sage ?
Und Positionsdaten kannst Du erst kopieren, wenn der neue Fertigungsauftrag angelegt ist, und dessen Primärschlüssel bekannt ist, denn der wird ja für die Positionen benötigt.
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: PhilS am Januar 31, 2020, 13:04:14
Zitat von: HaNe am Januar 31, 2020, 12:32:29
Sage hat die Tabellen so aufgebaut das in der DOK ein Autowert ist(AbfDokId) und dieser Wert als ABFPosAuftragID in der Tabelle Pos auftaucht. So können diese beiden Tabellen verknüpft wieder verknüpft werden und man bekommt alle Daten, welche in einem Auftrag vorhanden sind. An der Struktur kann ich leider nichts ändern.
Das klingt vernünftig. Was hast du daran auszusetzen? D.h. warum verwendest du nicht die von Sage generierte ID?
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: DF6GL am Januar 31, 2020, 13:50:21
Hallo,

m. E. liegt das Problem an eindeutig indizierten Feldern in der Zieltabelle.  Entferne alle Indizes (Tabellenentwurf/Indizes) und setze den Primärschlüssel auf das Autowert-Feld.

Führe dann die Anfügeabfrage aus.


Um das Autowertfeld bei 1 beginnen zu lassen,  lösche die Fertigungsauftragstabelle und komprimiere/repariere anschließend die DB.

Auch von meiner Seite die Frage, warum die schon normalisierten Tabellen zu einem nicht normalisierten, alles beinhaltenden Datentopf zusammengemischt werden sollen.



Tipp:  entferne alle Feldbenennungen (Beschriftungen) aus den Tabellen,  sonst verbraucht man mehr Zeit für Orientierung bzw. Suche als für die Problemlösung.    ;)
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Januar 31, 2020, 14:16:15
Hallo,

Zitat von: PhilS am Januar 31, 2020, 13:04:14
Das klingt vernünftig. Was hast du daran auszusetzen? D.h. warum verwendest du nicht die von Sage generierte ID?

Weil z.b. Ein Auftrag mit 5 Positionen eine ID bei Tbl DOK und nur eine ID bei Tbl Pos hat. Somit sind 5 Datensätze nicht eineindeutig bestimmt. Das geht meines Wissens nur über die Positionen im Auftrag. Deswegen betreibe ich ja den ganzen Aufwand ;)

Gruß
Hagen
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: PhilS am Januar 31, 2020, 14:27:59
Zitat von: HaNe am Januar 31, 2020, 14:16:15
Weil z.b. Ein Auftrag mit 5 Positionen eine ID bei Tbl DOK und nur eine ID bei Tbl Pos hat. Somit sind 5 Datensätze nicht eineindeutig bestimmt. Das geht meines Wissens nur über die Positionen im Auftrag. Deswegen betreibe ich ja den ganzen Aufwand ;)
Und es gibt kein Merkmal in der Tabelle der Auftragsposition, um eine Position (ggfls. auch zusammen mit der AbfDokId) eindeutig zu identifizieren? - Das erscheint mir reichlich unwahrscheinlich. Überprüfe die Sage-Daten doch nochmal in dieser Hinsicht.
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: MzKlMu am Januar 31, 2020, 14:28:20
Hallo,
ZitatEin Auftrag mit 5 Positionen eine ID bei Tbl DOK und nur eine ID bei Tbl Pos hat. Somit sind 5 Datensätze nicht eineindeutig bestimmt.
Das kann doch nicht sein. Es würden ja 4 Datensätze einfach in der Luft hängen. Wie willst Du die Positionen zuordnen, wenn es kein eindeutiges Merkmal gibt. Sehr verworren das Ganze.
In der Tabelle ..POS muss es in jedem Datensatz einen Fremdschlüssel geben zur Tabelle ...DOK. Das kann nicht anders sein, sonst wäre der ganze Aufbau der SAGE DB in Frage zu stellen.

PS:
Hier werden ganze Romane geschrieben als Antworten und Du schreibst nur einen einzigen Satz zur letzten Antwort. Was ist mit meinen Anmerkungen zum Autowert und Deiner ID (mit Max+1) in meiner Antwort #15 ?
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: DF6GL am Januar 31, 2020, 15:03:24
Hallo,
Zitat
Ein Auftrag mit 5 Positionen eine ID bei Tbl DOK und nur eine ID bei Tbl Pos hat. Somit sind 5 Datensätze nicht eineindeutig bestimmt.

Das ist zwar richtig, dennoch falsch interpretiert.  In tblDok  existiert ein eindeutiges Feld "lfdNr"  (Tabellenfeldname, nicht dessen Benennung "ABFDocID"  !), das als Primärschlüssel angesehen werden kann und mit dem Fremdschlüsselfeld "ABFPosAuftragId"  in Tabelle "ABFPos" sogar in Beziehung steht. Das Feld ABFPos.ABFPosDocId ist als Primärschlüssel der Position-Tabelle anzusehen und wird auf bei einer Zusammenführung eindeutig bleiben, soll heißen damit ist eine bestimmte Position in einem bestimmten Auftrag eindeutig identifizierbar.

Wenn sich die Beziehung nicht zu einer 1:n-Beziehung (Inhalte der verknüpften Feld gleich)  ändern lässt, dass sind die Ausgangstabellen nicht datenkonsistent.

Also bitte die Frage beantworten, wozu die beiden Tabellen in einer weiteren Tabelle (Fertigungsauftrag) zusammengemischt werden sollen.

Wenn denn nun unbedingt ein Autowert , der lediglich eine nichtssagende hochlaufende Nummer hier bedeutet, gebraucht werden sollte, dann reicht es, in Tabelle ABFDok lediglich ein Feld von Datentyp Autowert einzufügen.  Damit wäre der Fall schon erledigt und es braucht keine Abfragen oder sonstwas dazu.

Zudem sollte das Feld LfdNr in TBLDok eindeutig (Index ohne Duplikate) indiziert werden.
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Januar 31, 2020, 15:05:49
Zitat von: MzKlMu am Januar 31, 2020, 12:49:19
Hallo  Klaus,
wie ich bereits oben schrieb, kann man einem Autowert durch eine einfache Anfügeabfrage einen Startwert vorgeben.
vielen Dank für alle Hilfe. Ich werde nun als erstes die FA-Nr. durch ein Autowert erstellen lassen.
Du schreibst hier mit Hilfe einer Anfügeabfrage. Könntest du mir hier einen Tipp geben wie den Autowert festlegen kann?
Zitat
Und das ist bei Deiner Version nicht ? Du hast die gleiche Lücke, denn Du zählst ja mit +1 vom Maxwert hoch. Du musst vor der Vergabe einer neuen Nummer prüfen ob eine Lücke vorhanden ist, wenn ja, diese verwenden, wenn nicht Max+1. Und sinnvolles Prüfen auf eine Lücke geht nur mit einer Vorratstabelle in der alle Fertigungsnummern lückenlos vorhanden sind. Das ist auch ziemlicher Aufwand. Du solltest Dir daher auch mal überlegen, ob diese Nummer wirklich lückenlos sein muss.
Was stört an einer Lücke ?
...die Tabelle ist nur ein Beispiel. Im Original sind alle Datensätze ausgefüllt.
Zitat
Das Kopieren habe ich immer noch nicht verstanden, wer legt denn jetzt den Auftrag an, Du oder Sage ?
Und Positionsdaten kannst Du erst kopieren, wenn der neue Fertigungsauftrag angelegt ist, und dessen Primärschlüssel bekannt ist, denn der wird ja für die Positionen benötigt.
Die Aufträge werden zuerst bei Sage angelegt und dann zu einem Fertigungsauftrag generiert. Es war/ist mein Hauptanliegen neue Fertigungsaufträge mittels einer Anfügeabfrage zu erstellen. Da ich nun die FA-Nr. mittels Autowert generiere - ich bin ja lernfähig  ;) :) ;) -, entfällt das ermitteln der letzten FA-Nr. Bisher habe ich das über Makros, Schritt für Schritt gemacht.
Nochmals vielen Dank für alle Hilfe.
Gruß
Hagen
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Januar 31, 2020, 15:19:40
Zitat von: DF6GL am Januar 31, 2020, 15:03:24
Hallo,
Zitat
Ein Auftrag mit 5 Positionen eine ID bei Tbl DOK und nur eine ID bei Tbl Pos hat. Somit sind 5 Datensätze nicht eineindeutig bestimmt.

Das ist zwar richtig, dennoch falsch interpretiert.  In tblDok  existiert ein eindeutiges Feld "lfdNr"  (Tabellenfeldname, nicht dessen Benennung "ABFDocID"  !), das als Primärschlüssel angesehen werden kann und mit dem Fremdschlüsselfeld "ABFPosAuftragId"  in Tabelle "ABFPos" sogar in Beziehung steht. Das Feld ABFPos.ABFPosDocId ist als Primärschlüssel der Position-Tabelle anzusehen und wird auf bei einer Zusammenführung eindeutig bleiben, soll heißen damit ist eine bestimmte Position in einem bestimmten Auftrag eindeutig identifizierbar.

Wenn sich die Beziehung nicht zu einer 1:n-Beziehung (Inhalte der verknüpften Feld gleich)  ändern lässt, dass sind die Ausgangstabellen nicht datenkonsistent.

Genau das habe ich die ganze Zeit geschrieben...nur eben die Bezeichnung aus der Entwurfsansicht verwendet...

Zitat
Also bitte die Frage beantworten, wozu die beiden Tabellen in einer weiteren Tabelle (Fertigungsauftrag) zusammengemischt werden sollen.
Ich benötige Daten mit einer Fertigungsauftragsnr. Dies ist Grundbestandteil unserer Zertifizierung.(Arbeiten mit lückenlos nachweisbaren Fertigungsaufträgen) Deswegen will ich die Daten in einer extra Tabelle speichern.
In unserer Fertigung werden die Fertigungszeiten mit Scannern/Datensammlern gescannt. Über die Fertigungsauftragsnr. kann ich die Fertigungsaufträge den gescannten Zeiten wieder zuordnen.
Deswegen betreibe ich ja den ganzen Aufwand. Bis jetzt hat das alles auch super funktioniert. Anfang des Jahres habe ich meine DB-Fertigungsauftrag in eine Front und BackEnd geteilt. Hier habe ich die Fertigunsauträge und deren Nr. über Makros erstellt und da dauert das Erstellen eines Datensatzes fast 10 Sekunde. Und da kam die Idee mit den Anfügeabfragen.
Ich bin kein Programmiere, sondern habe mir mein Wissen durch Testen und Tüfteln selbst beigebracht. Nach und nach kommen dann eben Verbesserungen.
Man lernt eben nie aus - eben "learning by doing" ;) ;) ;)

Vielen Dank für alle Hilfe

Gruß Hagen
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: DF6GL am Januar 31, 2020, 16:09:04
Hallo,

wie auch immer, hast Du den Autowert-Feld in tblDok eingefügt?

Ist es das, was Du brauchst?

Eigentlich Off Topic:
Zitat
"Lückenlos nachweisbaren Fertigungsaufträgen...."
Heißt was genau?

Zitat" Über die Fertigungsauftragsnr. kann ich die Fertigungsaufträge den gescannten Zeiten wieder zuordnen." 
ja, ist ja der Sinn solcher Geschichten.  Wo kommt die Fertigungsauftragsnummer her?

Mir ist das ganze Prozedere nicht klar.

Aber wie gesagt, es ist Off Topic


Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: MzKlMu am Januar 31, 2020, 16:40:00
Hallo,
auch ich habe das Vorhaben immer noch nicht so recht verstanden.
In Deiner Beispieldb sind 2 Tabellen mit einer Verknüpfung, sind das die Tabellen aus Sage ?
Wenn ja, so entsprechen die Tabellen aber nicht Deinem Satz:
ZitatSage hat die Tabellen so aufgebaut das in der DOK ein Autowert ist(AbfDokId) und dieser Wert als ABFPosAuftragID in der Tabelle Pos auftaucht. So können diese beiden Tabellen verknüpft wieder verknüpft werden und man bekommt alle Daten, welche in einem Auftrag vorhanden sind. An der Struktur kann ich leider nichts ändern.
Wenn das Tabellen aus dem System sind, so darf es doch nicht sein, dass es in der Positionstabelle Datensätze gibt die nicht den richtigen Fremdschlüsselwert zur ...DOK Tabelle haben.
Wenn sich in den Beziehungen keine referentielle Integrität einstellen lässt, so stimmen diese Tabellen nicht, definitiv. Hier musst Du erst mal ansetzen.


Noch mal zum Autowert. Wenn Du die Fertigungsnummer wirklich lückenlos brauchst, ist der Autowert ungeeignet. Bei einem Autowert können Lücken nicht mit vertretbarem Aufwand geschlossen werden. Den Autowert kann man wie folgt auf einen Wert setzen:
INSERT INTO  Tabellenname (Autowertfeld)
SELECT 18000 As X
FROM Tabellenname

Den Datensatz dann löschen. Der nächste angelegte DS erhält dann die Nummer 18001.
Und wenn Du das mit dem Max+1 machst, musst Du auch Aufwand betreiben zum Schließen der Lücke, denn auch da kann ja ein Datensatz gelöscht werden. Und diese Lücke schließt sich da auch nicht von alleine. Dafür musst Du dann sorgen gem. den Hinweisen die ich in #15 schon gab.

Und wenn es wirklich lückenlos sein muss (bitte unbedingt prüfen, selbst das Finanzamt braucht keine lückenlossen Rechnungsnummern), so wird nicht gelöscht, sondern mit einen Feld als storniert gekennzeichnet und dann mit einer neuen Nr. neu angelegt. Und dann geht auch wieder der Autowert.

Bitte kläre erst mal die Randbedingungen.
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Februar 01, 2020, 10:39:46
Hallo @all,
zuerst möchte ich mich nochmals ganz sehr bedanken für alle Hilfe, Anregungen und Tipps.
Es sind in den letzten Tagen viele Fragen aufgetreten, welche ich sicherlich hätte im Vorfeld - durch noch genauere Beschreibung der aktuellen DB - hätte klären können.
Grundlage meiner DB(erstellen von Fertigungsaufträgen) ist unser Programm PC-Kaufmann von Sage KHK. Dieses Programm hat als Grundlage eine AccessDatenbank mit vielen Tabellen und Abfragen. Wir legen mit dieser Software die Aufträge an und ich verwende die angelegten Daten in meiner DB zum Erstellen der Fertigungsaufträge. Die Tabellen ABFDOK und ABFPOS sind aktuell Tabellen mit jeweils ca. 100000 Datensätzen. Diese sind bei mir mit der originalen Datei von Sage verknüpft. So aktualisieren sich neu angelegte Aufträge sofort in meiner DB. Das öffnen dieser Tabellen dauert aber relativ lange. Deswegen habe ich mich entschieden, alle benötigten Daten in die Tabelle Fertigungsaufträge zu schreiben. Die Tabelle FA(Fertigungsaufträge) enthält auch ein Feld mit der FA-Nr, welche ich aktuell über ein Makro generiere. Hierbei lese ich den größten Wert aus dem letzten DS der Tabelle FA.FaNr aus und erhöhe diesen um 1.Mit diesem eineindeutigen Wert verknüpfe ich dann meine weiteren Datenbanken (z.B. die Zeiterfassung mit Pocketscannern). Der Hauptgrund liegt einfach darin, daß das öffnen und/oder verwenden der Daten von den Sage-Tabellen sehr lange dauert. Aktuell benötige ich 6-10 Sekunden, um einen Datensatz zu erstellen - sicherlich meinem Unwissen von 2007/2008 geschuldet - denn seit dieser Zeit existiert meine DB. So lange braucht es, um die Daten aus dieser MDB-Datei verwenden zu können. Ich kann die Tabellen von Sage auch nicht bearbeiten - da liegt ein Schreibschutz drauf. Bin ja schon dankbar die Daten lesen zu können.Sonst müsste ich für jeden Fertigungsauftrag alle Daten nochmal per Hand eintragen....
Somit kann ich den Tabellen von Sage auch keine Felder wie Autowert hinzufügen.
Wenn ich diese beiden Tabellen importieren würde, dauert die Erstellung eines Fertigungsauftrages nur einen bruchteil einer Sekunde -ich hätte dann aber nicht sofort die neu angelegten Aufträge zur Verfügung. Da das Importieren aber auch sehr lange dauert, habe ich mich für die Verknüpfung entschieden.
Soweit nochmal zu den vorliegenden Gegebenheiten. Vielleicht konnte ich mit dieser doch etwas längeren Ausführung die ein oder andere Frage klären.

Wünsche ALLEN ein schönes WE.
Gruß
Hagen
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: MzKlMu am Februar 01, 2020, 10:59:59
Hallo,
Du hast jetzt viel geschrieben, aber zu den eigentlichen Hinweisen und Fragen gar nichts.
Was machst Du mit der Lücke, wenn Du statt des Autowertes das Feld mit DMax+1 hochzählst ?
Da ensteht doch auch eine Lücke wenn Du einen Datensatz löschst. Daher nie löschen, sondern sondern als storniert kennzeichnen. Wie in #25 auch angemerkt.
ZitatProgramm PC-Kaufmann von Sage KHK.
Wenn das richtig programmiert wurde, wovon ich jetzt ausgehe, so können die Daten Deines Beispiels nicht stimmen.
In der ...POS Tabelle darf es keine leeren Schlüsselfelder geben. Es muss möglich sein, referentielle Integrität einstellbar sein. Hast Du die richtigen Schlüsselfelder verbunden ?
Wenn das alles so stimmt wie in Deinem Beispiel, hat SAGE das nicht richtig gemacht.
Hier solltest mal als erstes ansetzen und die Datenlage aus SAGE überprüfen, das kann so nicht stimmen.
Das wure schon in #20 und 25 geschrieben.

Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Februar 01, 2020, 11:25:31
Hallo Klaus,
zum Problem Lücke: Meine Annahme durch Unwissenheit war, das ich den Autowert nicht ändern kann und somit Zahlen(Nummern) in der Reihenfolge fehlen könnten/würden. Aktuell ändere ich die FA-Nr per Hand, wenn ich einen neuen DS nach dem Löschen erstelle. Sicher meiner Unwissenheit geschuldet...aber es geht ;)

zu Punkt 2: die angehängten Tabellen DOK und POS sind Ausschnitte der kpl. Daten. Ich kann hier nur max. 3000kb hochladen. Die DB mit alles Datensätzen dieser Tabellen hat aber aktuell 105812kb(komprimiert/reorganisiert und als Zip). Deswegen habe ich bei den Tabellen nur die letzten DS übernommen. In den originalen Tabellen sind jeweils mehr als 100000 Datensätze.

Ich teste aktuell zusätzlich noch eine andere Idee. Ich versuche mal die Daten meiner DB mit der Sage-DB nicht zu verknüpfen, sondern zu importieren und beim Starten meiner DB immer die neuen DS an die Tabelle DOK und POS anzufügen. Vieleicht geht das auch über einen Zeitstempel, damit sich die DB immer aktualisiert(?).Mal sehen ob das was bringt.

Gruß
Hagen
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: MzKlMu am Februar 01, 2020, 11:32:28
Hallo,
die Daten des Beispiels sind falsch. Völlig unabhängig davon, dass das nur ein Ausschnitt ist.
Wie bereits mehrfach geschrieben (aber bei Dir nicht ankommt) das Fremdschlüsselfeld in der ..POS Tabelle darf nicht leer sein.
Es muss (auch mit dem Ausschnitt der Daten) referentielle Integrität einstellbar sein.
Oder SAGE hat die Datenbank falsch angelegt, was ich nicht glaube.
Das muss als erstes geklärt werden, sonst macht alles weitere keinen Sinn.

Und noch mal der Hinweis:
Wenn lückenlos erforderlich ist, so darf nicht gelöscht werden, sondern nur als storniert gekennzeichnet.
Wenn Du Lücken wieder füllst, passt das ja nicht mehr zum Datum, eine neues Datum ist plötzlich zwischendrin, was erst recht zu dem Verdacht der Manipulationen führen könnte.
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Februar 01, 2020, 11:35:01
Hallo nochmal,
die Daten sind so von Sage übernommen. Da habe ich nichts geändert. Ich kann dir die originalen Daten gern zukommen lassen. Ich habe diese beiden Tabellen nur importiert und sonst nichts gemacht!

Die Daten wo eine 0 steht, gehören alle zu einem Angebot. Diese findet man in der DOK unter Erfassungs-Nr. A=Aufträge, L=Lieferschein, R=Rechnung, O= Angebot.
Bei der Erstellung der FA filtere ich nur die Aufträge heraus.

Gruß
Hagen
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: MzKlMu am Februar 01, 2020, 11:39:49
Hallo,
aber die Verknüpfung ist doch von Dir angelegt, sind das die richtigen Felder ?
Wenn die Daten wirklich so von SAGE kommen, haben die Mist gemacht, oder Du hast die falschen Felder verknüpft.

Du hast doch sonst keine Möglichkeit die Positionsdaten zuzuordnen, wie hast Du Dir das gedacht, wenn das Fremdschlüsselfeld leer ist ?
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Februar 01, 2020, 11:42:08
Grüße,
hatte das eben noch nachgetragen ;)

...die Daten wo eine 0 steht, gehören alle zu einem Angebot. Diese findet man in der DOK unter Erfassungs-Nr. A=Aufträge, L=Lieferschein, R=Rechnung, O= Angebot.
Bei der Erstellung der FA filtere ich nur die Aufträge heraus.
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: MzKlMu am Februar 01, 2020, 11:48:35
Hallo,
wo steht denn da die 0, in welchem Feld ?
Auch wenn nach A* gefiltert wird, gibt es leere Fremdschlüsselfelder, das darf nicht sein.
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Februar 01, 2020, 12:07:16
Hallo,
in der Tabelle ABFPOS im Feld lfdDokNr Auftrag stehen die 0Werte.
Du hast natürlich total Recht...ich habe mir gerade nochmal meine alte DB angeschaut. Ich habe hier in der BeispielDB die falschen Felder verknüpft....es muss heißen.
ABFDOK.lfdNr mit APFPOS.lfdDokNr...und hier alle aus DOK und die passenden aus POS. Sorry, war mein Fehler....

Gruß
Hagen
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: MzKlMu am Februar 01, 2020, 12:16:29
Hallo,
eigentlich hast Du ABFDocId und ABFPosAuftragId verknüpft. Die von Dir genannten Bezeichnungen sind die Beschriftungen, aber nicht die Feldnamen. Die Verknüpfung scheint richtig, aber wie kommen die leeren Fremdschlüsselfelder zu stande ?
Das solltest Du mal über SAGE klären.
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Februar 01, 2020, 12:20:56
Hallo nochmal..
lag doch falsch..gerade meinen letzten Beitrag editiert....
Sorry...
Das Feld ABFPOS.lfdDokNrAuftrag ist die (Auto)Nr., welche der jeweilige Autrag hat. Deswegen auch die 0 in dem Feld, denn ein Angebot hat keinen Auftrag....
Wie gesagt...die ersten Felder der Tabellen müssen verknüpft werden. So wird ein Schuh draus. Hab mich da einfach in der BeispielDB in was verrannt, was ich aber in er originalen DB richtig gemacht habe. Mein Fehler.

Gruß
Hagen
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: Beaker s.a. am Februar 01, 2020, 12:59:11
Hallo Hagen,
Schön, dass du nun die richtigen Beziehungen gefunden hast. Ich frage mich
jedoch schon ein paar Tage, wozu der ganze Aufwand gut sein soll; - bringt
die Sage-SW das denn nicht mit? Da würde ich vielleicht mal über eine neue
Version nachdenken. Ich arbeite seit einem knappen Jahr als Aushilfe (Lager-
fachpacker) mit Sage 100. Dort ist Fertigung eingebaut.
gruss ekkehard
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Februar 01, 2020, 13:25:29
Hallo Ekkehard,

das PC-Kaufmann von Sage bringt hat das nicht mit bei. Die angebotenen Programme  - wie Sage 50 oder Sage 100- haben zwar einen Lösungsansatz dabei, dieser passt aber von der Struktur her nicht in unsere kleine Firma (8 Mitarbeiter). Leider haben wir auch nicht das nötige Kleingeld für eine entsprechende Software ( SAP o.ä.). Zudem würde die vom Umfang her auch unseren Rahmen total sprengen. Ich versuche den "bürokratischen Aufwand" in diesem Bereich so gering und so einfach wie möglich zu halten und bin die letzten 15 Jahre sehr gut damit gefahren. Man wächst ja mit seinen Aufgaben und deswegen würde ich gern neue Einflüsse oder Bedürfnisse in die DB einarbeiten. Wie schon geschrieben habe ich die DB wegen Mehrplatzbenutzung geteilt und will in diesem Sinne die alte Struktur etwas verändern und anpassen. Mit dieser DB habe ich damals überhaupt erst den Weg zu Access gefunden und ich bin eigentlich mit meinen sicher begrenzten Möglichkeiten sehr zufrieden  - nicht zuletzt durch die bereits vielfach Hilfe in diesem Forum.
Letztendlich mache ich das hier nur um Kosten für meine Firma zu sparen und trotzdem ohne großen Aufwand die benötigten Unterlagen erstellen zu können.
Deswegen bin ich ja so unheimlich dankbar für jede noch so kleine Hilfe.

Gruß
Hagen
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: MzKlMu am Februar 01, 2020, 14:51:44
Hallo,
dann passt es.
ABFDOK.lfdNr mit APFPOS.lfdDokNr...
Aber, Du sorgst weiter für Verwirrung, weil das nicht die Feldnamen sind, sondern die Beschriftungen. Wenn man sich das beziehungsbild anschaut, wird das auch deutlich. Die von Dir genannten Felder gibt es nicht. Eigentlich wird über ABFDocId und ABFPosDocId verknüpft.

Und warum Du jetzt einen eigene Nummer für den FA verwenden willst, erschleißt sich mir jetzt immer noch nicht. Du kannst Doch in deiner Tabelle einfach ABFDocId als Fremdschlüssel verwenden, ohne Duplikate was zu einer 1:1 Beziehung führt.
Und dann legst Du ein Hauptformular an mit den wichtigsten Feldern die Du sehen willst (und dem PS). In einem verknüpften Unterformular für den Fertigungsauftrag kannst Du diesen direkt anlegen. Das Schlüsselfeld wird automatisch übernommen. Anfügeabfragen braucht es da nicht.

Und noch ein Hinweis:
Felder die es in der DOK Tabelle gibt mit dem gleichen Inhalt darf es in der Tabelle für den Fertigungauftrag nicht geben, z.B. das Feld Kunde. Außer dem Schlüsselfeld.
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Februar 01, 2020, 15:22:02
Hallo,

die "Verwirrung" der Feldnamen kommt daher, daß ich die gemäß der Post#21 von DF6GL so übernommen habe. Du hast vollkommen Recht - eigentlich wird über ABFDocId und ABFPosDocId verknüpft.

Mit der eigenen FA-Nr - das wurde damals bei der Einführung des QM in unsrem Haus so gewünscht und ich habe da eine eigene Nr. erstellt. Natürlich kann ich auch diese auch die z.B. Nr. von ABFDocID nehmen.
Ich kann die nur nicht jetzt nachträglich ändern, da die anderen Datenbanken darauf aufbauen und diese FA-Nr. als Schlüsselfeld benutzen. Es erschien mir damals einfacher eine eigenständige Nr. zu verwenden. Sicher auch aus meiner Unwissenheit im Bereich Datenbankprogrammierung.

Ich werde nun in den nächsten Tagen und Wochen prüfen, welcher Weg - mit dem Wissen von heute - für mich der effektivste ist.

Sollte ich weitere Fragen zu meiner DB haben, werde ich mich wieder melden.

Also nochmal, vielen, vielen Dank für alle Hilfe an Alle und noch ein schönes Restwochenende.

Gruß
Hagen
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: DF6GL am Februar 01, 2020, 16:19:12
Hallo,
Zitat
daß ich die gemäß der Post#21 von DF6GL so übernommen habe.

Ich habe aber auch deutlich darauf hingewiesen, die Benennungen bei allen Tabellenfeldern zu eliminieren, genau wegen den Verwirrungen, die entstehen!

Ich habe auch andere Vorschläge gemacht, die einfach ignoriert wurden... >:(

Zudem ist das Problem jetzt ganz anders gelagert (Performance-Probleme beim Importieren, bzw. Verknüpfen), als am Anfang geschildert.
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Februar 03, 2020, 06:47:01
Hallo,
Zitat von: DF6GL am Februar 01, 2020, 16:19:12
Hallo,

Ich habe aber auch deutlich darauf hingewiesen, die Benennungen bei allen Tabellenfeldern zu eliminieren, genau wegen den Verwirrungen, die entstehen!

Es tut mir sehr Leid wenn ich hier mit den Bezeichnungen was falsch verstanden oder verwechselt habe. Die Bezeichnungen sind die originalen Bezeichnungen von Sage und die habe ich beim verknüpfen der Tabellen einfach übernommen.

Zitat
Ich habe auch andere Vorschläge gemacht, die einfach ignoriert wurden... >:(

Das stimmt so nicht. Ich habe alle Vorschläge getestet. Da es mehrere verschiedene Lösungsansätze kann ich nicht auf jeden gleichzeitig eingehen. Ich habe es mehrfach gesagt das ich kein Profi bin und mir mein Wissen, mit allen sicherlich vorhandenen Fehlern, selbst angeeignet habe. Ich bin sehr dankbar für jeden Lösungsansatz und versuche aus diesen zu lernen. Also bitte nicht böse sein oder falsch verstehen. Ich habe auch nur ein gewisses Zeitfenster für diese Aufgabe zur Verfügung und versuche da das effektivste draus zu machen.

Zitat
Zudem ist das Problem jetzt ganz anders gelagert (Performance-Probleme beim Importieren, bzw. Verknüpfen), als am Anfang geschildert.

Auch hier bin ich durch alle Antworten auf dieses Problem gestoßen. Wie in anderen Antworten schon geschrieben, werde ich dem nachgehen. Ganz falsch kann es aber bis jetzt nicht gewesen sein, sonst würde die DB seit 2007/2008 nicht funktionieren oder hätte Fehler aufgewiesen. Fakt ist, das 0-Werte nicht zulässig sind. Da ich diese Felder ( in meinem Fall wären das alles Angebote) nicht verarbeite, ist mir das bis jetzt noch nicht aufgefallen.

Ich danke für alle Hilfe und Unterstützung und bitte nochmals um Vergebung, wenn ich was nicht gleich verstanden habe.
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: DF6GL am Februar 03, 2020, 09:07:43
Hallo,

ok, dann poste mal den jetzt aktuellen Zustand (am besten mit bereinigten Sage-Tabellen-Daten und entfernten Tabellenfeld-Bezeichnungen) und erkläre, was daran noch zu machen ist.

Was mir( bzw. uns) noch immer nicht genau klar ist, wie es sich mit der "Fertigungsauftrag"-Nummer verhält. 


--- Gibt es die Nr. schon unabhängig von der DB?
--- Wenn ja, wo kommt die her, bzw. wer/was definiert die?
--- Wer bestimmt die Korrelation zwischen den Sage-Tabellen und dieser Fertigungsnummer?


Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Februar 06, 2020, 15:43:32
Hallo,
sorry, aber ich komme erst heute mal wieder zu der DB....

Zitat von: DF6GL am Februar 03, 2020, 09:07:43
ok, dann poste mal den jetzt aktuellen Zustand (am besten mit bereinigten Sage-Tabellen-Daten und entfernten Tabellenfeld-Bezeichnungen) und erkläre, was daran noch zu machen ist.

Die Sagetabellen kann ich leider nicht ändern. Das sind in meiner Original-Datenbank für die Fertigungsaufträge verknüpfte Tabellen (Tabellen-Bezeichnungen). Ich habe zur Demonstration nur eine Kopie davon in diese DB eingefügt.

Zitat
Was mir( bzw. uns) noch immer nicht genau klar ist, wie es sich mit der "Fertigungsauftrag"-Nummer verhält. 


--- Gibt es die Nr. schon unabhängig von der DB?
--- Wenn ja, wo kommt die her, bzw. wer/was definiert die?
--- Wer bestimmt die Korrelation zwischen den Sage-Tabellen und dieser Fertigungsnummer?

Nochmal zu der FertigungsauftragNummer: Die Tabellen DOK + POS haben laufenden Nummern ( ABFDokId und ABFPosDokId). Diese werden miteinander verknüpft um die einzelnene Positionen (POS) dem jeweiligen Auftrag (DOK) zuzuordnen. Da es aber nur eine Nummer für jeden Auftrag und genau diese Nummer auch für jede Artikelposition gibt, brauchen die Fertigungsaufträge eine eigene Nummer. Bei den Fertigungsaufträgen wird jede Position in den Aufträgen einzeln erfasst. Wenn also ein Auftrag aus 5 Positionen besteht, entstehen daraus 5 verschiedene Fertigungsaufträge. Deswegen kann ich also die vorhandene Nummern aus den beiden Tabellen nicht verwenden.
--- die Nr. der Fertigungsaufträge gibt es vor dem Erstellen eines Fertigungsauftrages noch nicht und kann eigentlich frei definiert werden. Ich habe diese als fortlaufende Nr. in die Tabelle Fertigungsauftrag eingetragen.
--- FaNr ist vorher nicht vorhanden
--- Die Verbindung zwischen den Sage-Tabellen und der FertigungsauftragsNr. besteht nicht direkt. Die Daten im Fertigungsauftrag könnten aber durch das Feld AbfDokId in der Tabelle Fertigungsauftrag mit den gleichen Feldern in den Tabellen ABFDOK (ABFDokId) und ABFPOS ( ABFPosDokId) verbunden werden. Dies muss immer die gleiche Nr. sein. Somit könnte mal rückwirkend wieder auf Daten zugreifen -was ich aber nicht brauche.

Ich hoffe nun mich verständlich ausgedrückt zu haben. Ich stehe also noch immer vor dem Problem, dass ich die Daten der Anfügeabfrage AbfAlleDatenSageFa an die Tabelle Fertigungsauftrag anfügen möchte. Hierbei muss aber die FertigungsauftragsNr immer um eins weiter gezählt werden. Das zählen als Autowert würde ich nicht so gut finden. Es wäre schon gut, wenn die Fertigungsauftragnummern fortlaufend sein könnten.

Gruß
Hagen



Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: DF6GL am Februar 06, 2020, 16:43:23
Hallo,

Doppel-Klick auf die Anfügeabfrage....
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am Februar 06, 2020, 17:59:12
Hallo,

tausend Dank. Genau so d habe ich mir das vorgestellt.
Eine Frage hätte ich noch. Nachdem ich die Datensätze per Anfrage angefügt habe, danach die letzten 10 Datensätze lösche, die Tabelle schließe und die Anfrage erneut ausführe, fehlen die gelöschten Nummern in der Tabelle Fertigungsauftrag. Wenn ich aber vor dem erneuten Anfügen aber die Datenbank schließe und wieder öffne, werden die gelöschten Nummern verwendet. So soll es aber sein. Wie kann ich das erreichen ohne die Datenbank nach dem Löschen von Datensätzen schließen zu müssen.

Gruß
Hagen
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: DF6GL am Februar 06, 2020, 19:53:48
Hallo,

so ein Ablauf ist nicht vorgesehen, weil das nicht spezifiziert wurde. Die Aufgabe war, laufende Nummern bei einem Anfügevorgang zu generieren, und nicht, zwischendurch auch DS zu löschen...

Ändere die Funktion wie folgt ab:


Public Function getlfdnr(Arg)
Static lfdnr As Long
If Arg = -1 Then
lfdnr = 0
Exit Function
End If

If lfdnr = 0 Then lfdnr = Nz(DMax("Fertigungsauftrag_Nr", "Fertigungsauftrag"), 0) + 1

getlfdnr = lfdnr
lfdnr = lfdnr + 1
End Function



und rufe die Funktion nach dem Löschen von DS so auf( z. B. im Direktfenster):

getlfdnr(-1)
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am März 12, 2020, 20:01:19
Zitat von: DF6GL am Februar 06, 2020, 19:53:48
Hallo,

so ein Ablauf ist nicht vorgesehen, weil das nicht spezifiziert wurde. Die Aufgabe war, laufende Nummern bei einem Anfügevorgang zu generieren, und nicht, zwischendurch auch DS zu löschen...

Ändere die Funktion wie folgt ab:


Public Function getlfdnr(Arg)
Static lfdnr As Long
If Arg = -1 Then
lfdnr = 0
Exit Function
End If

If lfdnr = 0 Then lfdnr = Nz(DMax("Fertigungsauftrag_Nr", "Fertigungsauftrag"), 0) + 1

getlfdnr = lfdnr
lfdnr = lfdnr + 1
End Function



und rufe die Funktion nach dem Löschen von DS so auf( z. B. im Direktfenster):

getlfdnr(-1)

Hallo nochmal,

sorry das ich mich jetzt doch nochmal melde. Ich habe den Code wie angegeben geändert. Wie genau kann ich die Funktion mit getlfdnr(-1) aufrufen?
Zum Testen hatte ich mir eine 2. Abfrage erstellt ( eine Auswahlabfrage aus deiner Anfügeabfrage mit geändertem Aufruf deiner Funktion) und lasse die nach dem Löschen der DS durchlaufen. Wenn ich danach deine Anfügeabfrage ausführe, klappt alles wunderbar.
Kann man die Funktion auch ohne eine Abfrage ausführen? Wenn ja, wie kann ich das erreichen. Bin leider in dem Bereich total unwissend.

Vielen Dank für die Hilfe.

Gruß
Hagen
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: DF6GL am März 13, 2020, 14:27:47
Hallo,

ZitatKann man die Funktion auch ohne eine Abfrage ausführen?

Ja, hab ich doch erzählt.. (--> im Direktfenster)


Die Funktion kann überall von dort aus aufgerufen werden, wo sie gebraucht wird..  (---> Public Function)

Ansonsten verstehe ich das Problem nicht genau..
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am März 13, 2020, 16:01:05
Hallo,

ZitatJa, hab ich doch erzählt.. (--> im Direktfenster)

Irgendwie steh ich auf dem Schlauch. Direktfenster? Was ist das? Und was muss ich wo genau eingeben?
Sorry, aber ich hab da wirklich keinen blassen Schimmer

Vielen Dank für alle Hilfe

Gruß
Hagen


Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: DF6GL am März 13, 2020, 16:08:01
Hallo,


VBA-Editor/Ansicht/Direktfenster



Du solltest Dich wirklich mit den grundlegenden Bedienungselementen von Access auseinandersetzen...
Titel: Re: AnfügeAbfrage - DomMax + 1
Beitrag von: HaNe am März 14, 2020, 09:42:20
 Hallo,

Zitat
Du solltest Dich wirklich mit den grundlegenden Bedienungselementen von Access auseinandersetzen...

Ich gelobe Besserung. Wie schon mehrfach erwähnt bin ich Quereinsteiger und versuche über Beispiele zu lernen. Ich habe eine kleine Firma und dementsprechend sehr wenig Zeit mich noch intensiver damit zu beschäftigen, obwohl es mich brennend interessiert  ;). Vielleicht sollte ich doch mal einen Grundkurs oder so machen. Gab es da nicht mal ein Videokurs ( video2brain?). Das wäre doch sicher hilfreich...

Trotzdem vielen , vielen Dank an Alle für die bis jetzt erhaltene Hilfe.

Gruß aus dem Erzgebirge.

Hagen