Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: peterchen1000 am Januar 11, 2017, 08:19:47

Titel: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: peterchen1000 am Januar 11, 2017, 08:19:47
Hallo Zusammen,
Ich habe eine Datenbank für die Verwaltung von Europaletten erstellt. Es gibt die Tbl
Paletten, in der sind nur die Einträge von Fahrzeugen die momentan geladen werden.
Wenn nun ein Fahrzeug fertig geladen ist wird über die Datenbank ein Palettenschein
erstellt. Wenn der Palettenschein über den Button gebucht wird wird dieser Eintrag in die Tbl Palettenarchiv angefügt. Wenn der Button Palettenschein drucken betätigt wird soll nur dieser Eintrag in tbl Paletten gelöscht werden. Leider ist es momentan so, das alle Einträge die sich in der tbl Paletten befinden gelöscht werden.
Hat jemand eine Lösung für dieses Problem.


Gruß Peter
Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: DF6GL am Januar 11, 2017, 08:42:44
Hallo,

es sollte halt die ID des Palettenscheins (bzw. der Palette) beim Löschen mitgegeben werden.

Ansonsten ist Kopieren und Löschen eines DS eine fragwürdige Methode.

Besser wäre ein Datumsfeld  "PaletteGedrucktAm" mitzuführen, das den Ausdruck des Palettenscheins registriert.
Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: MzKlMu am Januar 11, 2017, 08:45:42
Hallo,
und was machst Du, wenn die Palette wieder kommt, aus dem Archiv wieder hervorholen ?

Ich halte das Vorhaben für den falschen Weg. Archivtabellen sind in einer Datenbank meist der falsche Weg. Im einfachsten Fall reicht dann einfach ein Hakenfeld "PaletteVerladen".

Hast Du einen Palettenpool und die Paletten kommen immer wieder ?
Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: peterchen1000 am Januar 11, 2017, 08:56:24
Hallo,
Danke für Eure Antworten und Tipps. Es geht bei dieser Datenbank nur um den Ausdruck des Palettenscheines. Eine Archivtabelle wurde nur eingerichtet um einen Palettenschein z.b. bei Verlust nachdrucken zu können. Die eigentliche Verbuchung von Europaletten wird über den Palettenschein in SAP durchgeführt. Bisher haben wir dafür Palettenbücher benutzt.

Gruß Peter
Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: DF6GL am Januar 11, 2017, 09:04:00
Hallo,

gerade in diesem Fall ist die Archiv-Tabelle Nonsens und ein "Druckdatum" besser geeignet.

Zum eigentlichen Thema:  Hast Du die ID nun berücksichtigt?


Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: MzKlMu am Januar 11, 2017, 09:04:24
Hallo,
ZitatEine Archivtabelle wurde nur eingerichtet um einen Palettenschein z.b. bei Verlust nachdrucken zu können.
dann ist die Archivtabelle erst recht überflüssig. Was verspricht man sich davon ?
Auch ohne Archivtabelle kann man doch jederzeit aus der normalen Tabelle nachdrucken. Wenn es unbedingt sein muss, kann man ja wenn gedruckt einen Haken setzen in der Tabelle.

Nachtrag:
Oder dem Vorschlag von Franz folgen und ein Datum eintragen.
Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: peterchen1000 am Januar 11, 2017, 09:14:37
Hallo DF6GL,
Ich habe einmal das Formular für Paletten Eingabe und die Löschabfrage
im Anhang. Was versteht man unter die ID in der Löschabfrage mitgeben.
Vielleicht kannst Du mir dies einmal erklären.

Gruß Peter
Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: MzKlMu am Januar 11, 2017, 09:21:43
Hallo,
Du musst doch der Löschabfrage sagen welcher Datensatz zu löschen ist.
Die Löschabfrage braucht auch keine Felder. In der Where Bedingung (Kriterienzeile) musst Du Dich auf das Formularfeld beziehen das die ID anzeigt.

Die Hinweise, dass das ganze Vorhaben völlig sinnlos ist ignorierst Du hartnäckig.
Das macht nur Probleme, kann zu ikonsistententen führen und bietet keinen Vorteil, im Gegenteil, nur Nachteile.

Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: peterchen1000 am Januar 11, 2017, 12:17:41
Hallo,
Vielen Dank für den Tipp. Habe das mit der ID gemacht. Es funktioniert.
Ich möchte deine Bedenken nicht ignorieren, aber ich bin kein Access Experte und sitze jetzt schon seit einer Ewigkeit an dieser Datenbank.
Ich weiss nicht genau wie ich deine Vorschläge realisieren soll.

Gruß Peter
Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: MzKlMu am Januar 11, 2017, 12:30:27
Hallo,
ZitatIch weiss nicht genau wie ich deine Vorschläge realisieren soll.
Hallt einfach ein Datumsfeld und ein Datum reinschreiben wenn gedruckt. Da muss man kein Experte sein. Alles andere ist unnötiger Aufwand.
Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: DF6GL am Januar 11, 2017, 12:34:06
Hallo,

wie gesagt, füge ein Feld "Druckdatum" (Datentyp Datum/Uhrzeit) in tblPaletten ein.

An der Codestelle , an der die Löschabfrage ausgeführt wird, schreibst Du anstelle:

Me!Druckdatum =Date

und fertig.


Die Archivtabelle kannst Du entfernen.

Um nur die "ungedruckten" (aktiven) Paletten zu erhalten, benutzt Du eine Abfrage, die die DS filtert, die kein Druckdatum enthalten (bei denen Druckdatum "leer" ist):

Select * from tblPaletten where Druckdatum is  Null


entspr. die DS, für die ein Schein gedruckt wurde (archiviert sind)

Select * from tblPaletten where Druckdatum is not Null





Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: peterchen1000 am Januar 12, 2017, 07:38:15
Hallo,

Kannst Du mir bitte sagen an welche Stelle in der Löschabfrage ich diesn eingeben muss. Sorry, aber ich bin gestern nicht weiter gekommen.

Gruß Peter
Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: DF6GL am Januar 12, 2017, 08:34:19
Hallo,

was willst Du noch mit der Löschabfrage, wenn Du den Änderungsvorschlag übernimmst?
Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: Lachtaube am Januar 12, 2017, 08:42:03
Weder ein Mitarbeiter, oder ein Fahrer noch ein Spediteur hat etwas in einer Paletten-Tabelle zu suchen. Diese Dinge gehören getrennt. Einem Ladevorgang wird man vermutlich eher mitteilen, ob es sich um Ent- oder Verladen eines Fahrzeugs handelt, wer der Fahrer ist, wer der Spediteur ist, welcher Bestimmungsort vorgesehen ist, usw. usf.. Ein jeder dieser Vorgänge wird dann mit keiner (Leerfahrt - eher unahrscheinlich), einer oder vielen speziellen Paletten in Beziehung gesetzt, wobei jede Palette mit Waren in einer bestimmten Anzahl bestückt sein kann. Ohne ein solches Datenmodell abzubilden, wird die Anwendung diletantisch und kaum zu pflegen sein.

Deshalb mein gut gemeinter Tipp: Belasse die Anwendung als Excel-Mappe, kaufe und studiere ein gutes Grundlagenbuch zu Access und entwerfe anschließend die Datenbank neu.
Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: peterchen1000 am Januar 12, 2017, 08:52:44
Hallo,
Es tut mir leid wenn ich euch nerve, aber ich muss in dieser Datenbank keine Paletten buchen oder nachverfolgen. Es geht lediglich um den Ausdruck eines Palettenscheines, der dem Speditionsfahrer mitgegeben wird. Ein Exemplar bleibt bei uns. Von einem anderen Mitarbeiter erfolgt die Verbuchung in SAP, wo auch die Palettenkonten der einzelnen Spediteure gepflegt werden.

Mir ist bei der Änderung nicht klar wo ich den Code Me!Druckdatum =Date unterbringen soll. Vielleicht kannst Du mir dies verständlich erklären?
Das Feld Druckdatum habe ich in tblPaletten hinzugefügt.

Gruß Peter
Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: MzKlMu am Januar 12, 2017, 09:57:36
Hallo,
wie hast Du denn die Löschabfrage gestartet ?

Und zeige den vollständigen Code dazu.
Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: peterchen1000 am Januar 13, 2017, 07:18:13
Hallo,

Ich starteb die Löshabfrage über ein Makro.
Ich habe das Problem jetzt so gelöst:
DELETE tblPaletten.ID, tblPaletten.*
FROM tblPaletten
WHERE (((tblPaletten.ID)=[Geben Sie die PalettenscheinNr ein]));
Leider muss dann immer die ID eingegeben werden, die gelöscht werden soll.
PalettenscheinNr= ID+2000000
gruß Peter
Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: DF6GL am Januar 14, 2017, 11:16:49
Hallo,

setze im Makro vor der Löschabfrage eine Tempvars-Variable auf die aktuelle ID und benutze diese Variable in der Löschabfrage.

Oder nutze besser eine Ereignisprozedur, die das Ganze erledigt. Bei welchem Ereignis nun das Löschen erfolgen soll, hast Du nicht bekanntgegeben.

z. B. beim Klick auf einen Button:

Sub btnLöschen_Click()
Currentdb.Execute "Delete * from tblPaletten where ID= " & Me!ID, dbFailOnError
End Sub
Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: crystal am Januar 14, 2017, 13:49:47
Hallo,

nur zum Verständnis...
1. Ein LKW wird z.B. mit 12 Paletten geladen.
2. Der Palettenschein weist 12 Paletten auf/aus.
3. Der Fahrer soll nach Auslieferung der Waren 12 leere Tauschpaletten zurückbringen.
4. Die Paletten selbst haben keine Id, da sie Tauschobjekte sind (beladene Palette ausliefern, leere Palette zurücknehmen). Es ist nur bekannt, wie viele Paletten für einen Empfänger verladen wurden.
5. Die ursprünglich 12 geladenen Paletten werden dem Fahrer als Soll verbucht.
6. Nach Rückkehr ins Lager entlädt der Fahrer seine Tauschpaletten, deren Anzahl mit dem Soll verglichen bzw. seinem Palettenkonto gutgeschrieben werden.
7. Wenn ein Empfänger keine Tauschpalette mitgibt, wird dies auf dem Lieferschein oder Palettenschein vermerkt, so dass der Fahrer dies nachweisen kann (zur Verbuchung auf dem Fahrer-Konto).
8. Nicht mitgegebene Tauschpaletten werden dem Empfänger-Palettenkonto belastet.

Ist das soweit richtig?

lg
crystal
Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: Beaker s.a. am Januar 14, 2017, 14:12:23
Hallo Crystal,
ZitatIst das soweit richtig?
Im Prinzip Ja, aber
ZitatEs geht lediglich um den Ausdruck eines Palettenscheines, der dem Speditionsfahrer mitgegeben wird. Ein Exemplar bleibt bei uns. Von einem anderen Mitarbeiter erfolgt die Verbuchung in SAP, wo auch die Palettenkonten der einzelnen Spediteure gepflegt werden.
gruss ekkehard
Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: peterchen1000 am Januar 17, 2017, 07:51:02
Hallo Df6gl,

Danke für deine Tipps. Leider habe ich mit Tempvar noch nicht gearbeitet.
Ich kann im Macro eine Tempvar festlegen, ich vergebe der Tempvar einen
Namen, aber was muss in das Ausdrucksfeld. Da komme ich leider nicht weiter.

Die Ereignisprozedur scheidet denke ich aus, da auf dem Button schon eine Prozedur
hinterlegt ist.
Private Sub Befehl7_Click()
On Error GoTo Err_Befehl7_Click

    Dim stDocName As String

    stDocName = "EndeSchlüselrückgabe"
    DoCmd.RunMacro stDocName

Exit_Befehl7_Click:
    Exit Sub

Err_Befehl7_Click:
    MsgBox Err.Description
    Resume Exit_Befehl7_Click
   
End Sub

Ich habe eine bestehende Datenbank um die Palettenscheinerstellung erweitert.
In dieser Datenbank werden ebenfalls Geräteschlüssel für die Hubstapler verwaltet.
Jeder Fahrer der bei uns lädt bekommt einen Geräteschlüssel für Hubstaplerbedienung. Der Name der Spedition, Name des Fahrers, Kennzeichen, Datum , Uhrzeit und die Shipment Nr. der Ladung werden dort erfasst.
Diese Daten habe ich für die Palettenscheinerstellung benutzt, damit der Mitarbeiter die Daten nicht doppelt eingegeben muß.
Wenn nun der Fahrer den Schlüssel wieder abgibt wird über das Formular Paletten der Palettenschein erzeugt. Beim betätigen des Buttons Palettenschein buchen wird der Eintrag in die Tabelle Paletten Archiv hinzugefügt. Dann wird der Palettenschein über einen Button gedruckt. Danach wird in das Formular Geräteschlüsselabgabe gewechselt und der Button Ende betätigt. Beim Drücken des Buttons Ende wird in der Tabelle tblPaletten der Eintrag des Palettenscheines gelöscht.
Ich glaube ich muss diesen Weg nehmen, da öfter bis zu 15 Fahrzeuge gleichzeitig oder zeitversetzt zur Verladung kommen und ich im Formular Paletten alle Fahrzeuge zur Verfügung haben muss, die ich dann über ein Kombifeld auswähle.
Ich hoffe ich habe mein Vorhaben jetzt besser erklärt und danke Euch für Eure Geduld.

MFG

Peter

Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: DF6GL am Januar 17, 2017, 10:10:39
Hallo,

nach der Deklaration/Definition eines Termpvars-Elementes (Variablen) kann dieses direkt in der Abfrage anstelle des Parameters verwendet werden.


irgendwo  (Makro, Prozedur)Tempar-Variable deklarieren:

z. B. im Formular:

.
TempVars.Add "PalettenID", Me!ID
.

  und Einsetzen in der Abfrage:

DELETE tblPaletten.ID, tblPaletten.*
FROM tblPaletten
WHERE ID = [TempVars]![PalettenID]
Titel: Re: Bestimmten Wert mit Löschabfrage löschen
Beitrag von: Lachtaube am Januar 17, 2017, 10:29:34
Ich frag' mich ja, warum man den angewählten Datensatz nicht gleich im Formular löschen will?