Hallo,
ich habe in meiner Abfrage bereits 10 Datensätze gespeichert. Ich habe einen Bericht erstellt zum späteren ausdrucken bestimmter Inhalte eines Datensatzes. Den Bericht habe ich mit der Abfrage verbunden.
Soweit so gut!
Wenn ich in meinem Formular nun den ersten Datensatz anwähle und mit einem Button meinen Bericht öffne, erscheint der Bericht mit dem gewählten Datensatz. Alles Super!
Wenn ich nun einen anderen Datensatz anwähle, erscheint wieder der erste Datensatz im Bericht.
Hallo,
in einer Abfrage werden keine Datensätze gespeichert, das bleibt den Tabellen vorbehalten. Mit Abfragen "liest" man die Daten (Datensätze) aus einer (oder mehreren) Tabelle(n) aus...
Um nun denjenigen DS mit dem Bericht anzuzeigen, der akt. im Formular angezeigt wird, muss der Bericht mit Übergabe eines Kriteriums (zu empfehlen ist der Primärschlüsselwert des akt. Datensatzes) mittels der Openreport-Methode geöffnet werden.
Hi,
um nur einen Datensatz zu drucken, findest Du Hilfe auf: http://www.donkarl.com?FAQ5.9 (http://www.donkarl.com?FAQ5.9)
Harald
Hallo,
Ich habe mir den Beitrag im donkarl durchgelesen, kann aber mit meinem Wissen nicht so viel damit anfangen. Ich habe in meinem Bericht auch das ID Feld aus der Abfrage dabei. Ich dachte das würde genügen um jeden einzelnen Datensatz zu zeigen.
Wenn ich den Bericht auf mehrere Seiten aufbaue, sind alle Datensätze vorhanden und werden auch angezeigt.
Ich möchte aber nur eine Seite haben zu dem ausgewählten Datensatz. Das kann doch nicht so schwer sein. Ich versuche schon alles aber ich bring's nicht hin. Leider!
MfG Ludwig
Hallo,
der Link von oben trifft es genau. Woran hängt es denn?
Zeige/beschreibe bitte Deine Versuche, so kann man nicht helfen.
Hi,
darf ich voraussetzen, dass Du einen Button hast, mit dem Du den Bericht mit EINEM Datensatz aufrufen willst?
Wenn ja, dann nutze bei diesem Button das Ereignis "Beim Klicken".
Dort trägst Du den folgen Code ein, der allerdings auf Deine Verhältnisse angepasst werden muss:
DoCmd.OpenReport "DeinBericht", , , "Id =" & Me!Id
Statt "DeinBericht" trägst Du den Namen Deines Berichts ein.
Statt "ID =" trägst Du die Bezeichnung Deines ID-Feldes ein. (ist der Name aus der Tabelle bzw. Abfrage)
Statt Me!Id trägst bei Id die Bezeichnung des Steuerelementes aus dem Formular ein, das den Inhalt des Id-Feldes wiedergibt.
Bitte verändere nicht die Anzahl der Kommas.
Ich setze auch voraus, dass das Id-Feld als Typ Zahl (long) deklariert ist.
Ist das so?
Ansonsten definiere bitte das Wort "alles" aus " versuche schon alles "
Harald
Hallo,
ich habe jetzt aus meiner Datenbank die zu groß zum Downloaden ist den Teil exportiert den ich benötige.
Im Anhang ein Bsp.
[Anhang gelöscht durch Administrator]
Hi,
beim Button war kein Ereignis hinterlegt.
Die Id ist ein Text-Feld! Üblicherweise wird dafür wie oben geschrieben eine Zahl vom Typ long verwendet, um eindeutige Zuordnungen zu treffen. In einer Stammdatentabelle sollte es dann zu dieser Fremd-Schlüssel-ID einen Primärkey geben, der über ein auto-Feld erstellt wird. Damit eine EINDEUTIGE Id- vorliegt.
Im Anhang ist jetzt ein Ereignis mit Code eingetragen. Beim Klicken auf den Button wird eine Bericht-Voranzeige erstellt mit EINEM Datensatz.
Harald
[Anhang gelöscht durch Administrator]
Hallo,
und wenn es Ersatzteil_1_Nr gibt, gibt es dann in der richtigen DB Ersatzteil_2_Nr, Ersatzteil_3_Nr usw.
Und was bedeutet lfdNr_E1 ?
Ich fürchte, da muss auch noch das Datenmodell auf den Prüfstand.
Hallo,
danke an alle. Das Beispiel von Harald in der angefügten Datenbank ist genau dass was ich möchte. Es funktioniert alles super.
Es kann aber sein, dass ein Ersatzteil X mit der lfd.Nr. z.Bsp. 100 nach der erfolgten Reparatur wieder zurückkommt ins Lager.
Wird dann dieses Ersatzteil wieder defekt gemeldet und mit der gleichen lfd.Nr. in die Datenbank eingetragen unter einem anderen Datensatz ID natürlich, dann läuft es nicht. Zwei gleiche lfd.Nr. gehen nicht.
Die lfd.Nr. ist die Prägenummer (das wievielte Teil einer Charge) auf dem Bauteil. Durch diese Nr. kann das Teil eindeutig identifiziert werden.
Kann man den Code hier umschreiben?
Ludwig
[Anhang gelöscht durch Administrator]
Hi,
geänderte Version (anderes Feld als eindeutige id) siehe Anhang.
Harald
[Anhang gelöscht durch Administrator]
Hallo,
ich halte den Aufbau der DB für falsch. Die Lfdnr gehört in die Tabelle "Ersatzliste_Zangen_tab" und nicht in die Erfassung. In der Ersatzteilerfassung wird die Ersatzteile_ID erfasst und auf keinen Fall diese Prägenummer. Außerdem fehlt die bereits mehrfach vorgeschlagene Tabelle zur Zuordnung der Ersatzteile.
Meine Hinweise und Fragen aus #8 hast Du ja mal vorsichtshalber ignoriert.
Siehe Beziehungsbild im Anhang.
[Anhang gelöscht durch Administrator]
Hallo Harald,
vielen Dank für deine Hilfe. Genau so habe ich es benötigt.
Bei der lfd. Nr. handelt es sich nicht um eine Nr. die ich in der Ersatzliste_Zangen_tab im Vorfeld schon zu jedem Teil eintragen kann. Welches Teil welche lfd.Nr hat, erfahren wir erst beim Ausbau bzw Einbau des Teiles.
Die Zuordnungstab besteht seit längerere Zeit. Hier sind alle Ersatzteile jedem Projekt, jedem Hersteller usw zugeordnet. Diese finden sich wiederum in einzelnen Tabellen wieder. Hersteller_tab, Projekt_tab,...
Für mich zählt das es läuft und alle eingegebenen Daten sich in der richtigen Tabelle bzw Abfrage befinden.
Vielen Dank für Eure Hilfe.
mfg. Ludwig
Hallo,
ich möchte diesen Befehl zum öffnen eines Report um eine Zuordnung zu einem Textfeld (lfdNr) ergänzen.
Was sollte da noch angefügt werden?
Der Code mit dem öffnen des Berichtes und den Daten funktioniert einwandfrei. Nur wenn ich bei einem Datensatz sprich Gesamtdaten_ID_Nr mehr als 1 Ersatzteil angebe läuft es nicht. Ich möchte darum den Code erweitern um das Textfeld (lfdNr)
Private Sub Befehl19_Click()
DoCmd.RunCommand acCmdSaveRecord
DoCmd.OpenReport "rpt_Warenbegleitschein_Festo", acPreview, , "Gesamtdaten_ID_Nr=" & Me!Gesamtdaten_ID_Nr
End Sub
mfg
Ludwig
Hallo,
unklar, was Du machen willst...
aus der DB:
ZitatHinweis:
Wenn ich den Button betätige wird der Bericht für E_Teil1 zum ID 43 angezeigt.
Wenn ich nun einen anderen Datensatz anwähle wird immer noch der Bericht zu ID 43 angezeigt. Hier sollte aber der Bericht mit einem anderen Datensatz befüllt sein.
Zu einem DS kannst (darfst) Du nur EINE lfdnr angeben.... Wenn Du in das Feld lfdnr_E1 mehrere solcher Nummer eingibst, verletzt Du die nötigen Regeln der Normalisierung (vorangehend schon darauf hingewiesen...) und handelst Dir somit lediglich Schwierigkeiten ein.
Hallo Franz,
ich habe im Anhang einen kleinen Auszug aus der Datenbank gebastelt. Hier siehst du was ich genau meine. Ich habe in der Tab Gesamtdatenerfassung ein paar Datensätze eingegeben. Passiert normalerweise über ein Formular.
Wenn ich im Formular "Ersatzteil_Stoerung_tab_form" ein Ersatzteil auswähle und es anhand der Daten_ID der Störung zuweise und anschl. auf den Druckerbutton drücke, öffnet sich der Warenbegleitschein zum ausdrucken. Soweit so gut. Es kann aber sein dass ich für einen Daten_ID mehrere versch. Ersatzteile habe, wozu ich dann auch einen Warenbegleitschein benötige. Bei nur einem Datensatz geht es, aber ab zwei gleichen nicht mehr.
Ich möchte im Code (Druckerbutton) zum erstellen und zuweisen des betreffenden Datensatzes, noch eine zus. Zuweisung zur lfd. Nr. haben.
Ludwig
[Anhang gelöscht durch Administrator]
HAllo
als erstes solltest Du zur Verbesserung der Transparenz (Klarheit) die Tabellen mit vernünftigen aussagekräftigen Namen (,die auch die hintergründigen Beziehungen andeuten) versehen:
Gesamtdatenerfassung_Tab ---> tbl_
StörungenErsatzteilerfassung_tab ----> tbl_
Störungersatzteile ErsatzlisteZangen_Tab ---> tbl_
Ersatzteile (Wenn es noch weitere Ersatzteilearten außer "Zangen" gibt, ist eine weitere Tabelle ("tbl_Ersatzteilart") und ein entspr. Fremdschlüsselfeld in tbl_Ersatzteile erforderlich)
als zweites wäre es vorteilhaft, statt einem Endlosform mit einer verknüpfenden Abfrage eine Haupt/unterform-Konstruktion zu benutzen .
(Einzelform mit Basis zu Tabelle tbl_Störungen (Gesamtdatenerfassung_Tab) , NICHT mit Basis auf einer Abfrage und ein Endlosform mit Basis zu Tabelle tbl_Störungersatzteile (Ersatzteilerfassung_tab, das im Einzelform (Hauptform) als UFO_Steuerelement eingebaut ist.)
Damit kann dann eine "Störung" problemlos geplegt und mit Ersatzteilen "versorgt" werden
zu "lfdNr"
Wenn
ZitatDie lfd.Nr. ist die Prägenummer (das wievielte Teil einer Charge) auf dem Bauteil.
zutrifft, ist das keine
Laufende Nr sondern eine ErsatzteilSeriennummer ("ETSnr") und wäre besser so zu benamsen...
Zum Bericht:
Nach o. g. Konstruktion wäre dann der Bericht auf Basis einer über ALLE Tabellen verknüpfenden Abfrage (evtl. mit einschränkender Select-Liste) zu erstellen, der dann lediglich mit Übergabe der "Gesamtdaten_ID" (besser als "StörungID" benamst) aufgerufen wird. Der Bericht sollte dabei so aufgebaut sein, dass er bei Aufruf aus dem Datenbankfenster layoutmäßig alle vorhandenen Störungen mit den dazugehörenden Ersatzteilen Deinen Wünschen entspr. anzeigt. (Gruppierung, Überschrift im Gruppenkopf und nicht im Berichtskopf, bzw. Seitenkopf, etc...)
Hallo Franz,
danke für deine ausführliche Hilfe zu meinem Thema. Werde versuchen dass so umzusetzen.
Ludwig