Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: netghost am April 20, 2017, 11:58:59

Titel: Endlosformular Textfeld als Array
Beitrag von: netghost am April 20, 2017, 11:58:59
Hallo!

Also, es ist gefühlte tausend Jahre her, daß ich mit Access was gemacht habe und quäl mich da jetzt durch. Eventuell kannmir wer helfen, suche schon seit Tagen eine Lösung, aber offensichtlich hat das noch keinr gebraucht oder ich bin vollkommen auf dem Holzweg


Also: ich habe eine Tabelle mit Getränken, die eine minimale und eine maximale Füllmenge haben.

Soweit so gut.

Aus dieser habe ich ein Formular gemacht - es werden also alle Getränke in einem Endlosformular angezeigt, zusätzlich eben die minimale und maximale Füllmenge.

Jetzt mein Problem:

im Formular soll daneben ein Eingabefeld sein, in welche der User die tatsächliche Füllmenge eingibt. das geht schon mal nicht, da im Endlosformular der erste wert für alle DS übernommen wird.

Zusätzlich soll natürlich abgefragt werden, ob die eingegebene Füllmenge innerhalb der beiden Werte min und max liegt, sowie ob es zuwenig oder zuviel ist. dazu soll dann noch ein Label geschalten werden.

Diese Eingaben muß ich dann weiterverarbeiten für einen Bericht.

Anscheinend ist zwar das Textfeld im Endlosformular ein Array - kann ich Textboxen über Index ansprechen/steuern?   Da0 sich der Label schaltet bei LostFocus bei jedem einzelen textfeld?

Kann ich verhindern, daß der erste eingegebene wert bei allen anderen DS übernommen wird?

Oder geh ich das komplett falsch an?

bitte Hilfe

Titel: Re: Endlosformular Textfeld als Array
Beitrag von: MzKlMu am April 20, 2017, 12:10:34
Hallo,
ZitatKann ich verhindern, daß der erste eingegebene wert bei allen anderen DS übernommen wird?
gar nicht, der wird auch nicht übernommen auch nicht für den ersten Datensatz, der wird nur angezeigt. Das hat auch mit einem Array nichts zu tun. Access braucht keine Arrays. Für die tatsächliche Füllmenge muss es zwingend auch ein Tabellenfeld geben an das das Formularfeld gebunden werden muss, sonst ist Dein Vorhaben nicht möglich.

Das mit dem Label habe ich nicht verstanden, was soll das Label anzeigen/bewirken ?
Titel: Re: Endlosformular Textfeld als Array
Beitrag von: Beaker s.a. am April 20, 2017, 14:10:02
Hallo,
ZitatZusätzlich soll natürlich abgefragt werden, ob die eingegebene Füllmenge innerhalb der beiden Werte min und max liegt, sowie ob es zuwenig oder zuviel ist. dazu soll dann noch ein Label geschalten werden.
Private Sub FuellMenge_AfterUpdate
   If Me!FuellMenge < Me!MinFuellMenge Or Me!FuellMenge > Me!MaxFuellMenge Then
   DoCmd.OpenReport ...
End Sub


gruss ekkehard
Titel: Re: Endlosformular Textfeld als Array
Beitrag von: ebs17 am April 20, 2017, 14:35:49
Holzweg.

Ein Getränk hat eine Füllmenge? Für mich hätte eher ein Behältnis eine solche Eigenschaft. Ich würde aber, wenn man schon an eine Datenbank denkt, mehrere gleichartige und auch mehrere verschiedene Behältnisse erwarten, so das EINE Eingabe merkwürdig erscheint.
Wasser: Glas, Flasche, Kasten, Faß ...

ZitatZusätzlich soll natürlich abgefragt werden, ob die eingegebene Füllmenge innerhalb der beiden Werte min und max liegt, sowie ob es zuwenig oder zuviel ist. dazu soll dann noch ein Label geschalten werden.
Wenn dem Anwender bei angezeigten Grenzen nicht klar wird, ob sein Wert darin liegt ... ist er dann weniger blind bei zusätzlichen gleichartigen Informationen?

ZitatKann ich verhindern, daß der erste eingegebene wert bei allen anderen DS übernommen wird?
Individuelle Eingaben für einzelne Datensätze würde man in einem gebundenen Steuerelement vornehmen. Dann hätte man datensatzbezogene Inhalte (wie bei den anderen Feldern sichtbar).
Also ja.

ZitatEndlosformular Textfeld als Array
Wo außer im Thementitel kommt ein Array vor?
Titel: Re: Endlosformular Textfeld als Array
Beitrag von: MzKlMu am April 20, 2017, 16:03:27
Hallo,
ich denke, das mit den Getränken ist (wieder mal) eine vereinfachende Darstellung die dann mit der Realität nichts zu tun hat.
Titel: Re: Endlosformular Textfeld als Array
Beitrag von: netghost am April 24, 2017, 08:41:20
Ich wollte natürlich nicht den gesamten Aufbau der DB hier darstellen. Und ich habe Vorgaben von meinem Chef, die ich umsetzen muß. Das gefäß ist nicht genormt und die Überprüfung der Füllmenge ist nur ein Teil. Es sollen nämlich auch Auslaufzeiten und Pulvermenge angegeben werden können. Das soll dann eine Auswertung geben, ob das Gerät, welches die Getränke ausgibt, die vorgeschriebenen werte im Durchschnitt einhält. Denn ist eine Füllmenge zu gering oder zu groß, muß das Gerät nachjustiert werden. Außerdem sind ja mehrer Automaten im Einsatz, welche dadurch überprüft werden und ausgewertet werden sollen.

In einer anderen Sprache würde ich das so machen, daß ich eine Schleife erstelle, die zu jedem Getränk einen bestimmten wertebereich zuläßt und die Eingabe in einer schleife beim jeweiligen Index prüft und dann die Antwort zuviel, zuwenig oder OK rausschreibt. Da nicht Ich dieses Programm bedienen werde, sondern ein Techniker vor ort, der mit unterschiedlichen geräten zu tun hat und nicht in den wertebereich eingreifen können soll und nur die Ausgabe erhält und anhand derer feststellen muß, ob das gerät neu einzustellen ist oder nicht, finde ich manche Kommentare hier wenig hilfreich.

Sofern ich das richtig verstanden habe, kann ich im Access nur dann ein Feld irgenwie abfragen, wenn es eine Tabelle gibt, die ein solches Feld beinhaltet. Was mich jeztzt dazu bringt, mein DB-design ändern zu müssen.

das Teil ist ja an sich schon fertig, allerdings nur als Shareware, die eben keine Auswertung für mehrere maschinen und deren Verhalten macht, sondern hardcoded nach den werten prüft, die eingegeben wurden und am Ende eine Datei rausschreibt, die nur für eine spezielle maschine an einem Ort gilt.

Da mein Chef aber natürlich wissen möchte, welche automaten wo welches Verhalten zeigen und wie gewartet werden müssen und die Anwendung samt DB standalone auf einem Laptop laufen soll, bei dem keine Internetverbindung vorhanden ist , dachte ich an Access mit runtime

Leider hat Access eine andere interne Logik, als wenn ich das mit java, PHP und ner Weboberfläche machen würde und da hab ich noch einiges nachzuholen.

Das mit dem Label: ich kann im VB eine Beschriftung ändern. Und diese Beschriftung (Label) gibt es ja in Access auch. Und die kann ich mit .caption ansprechen.

Leider hab ich kein Manual gefunden, in dem Befehle wie DoCmd oder DSLookup aufgeführt oder deren Syntax erklärt werden - also kein befehlsverzeichnis für Access-VBA , nur vereinzelte beispiele

Die abfrage an sich ist mir ja klar - also, wie ich den Wert gegen Min und Max prüfe - allerdings eben nicht, wie ich das in einem Endlosformular abfangen würde

hätte es eben über ein Array gemacht. So wie es aussieht, muß ich also meine Datenbank ändern - danke an MzKlMu, das war der hilfreichste Kommentar
Titel: Re: Endlosformular Textfeld als Array
Beitrag von: MzKlMu am April 24, 2017, 09:15:25
Hallo,
Du kannst mit Sicherheit davon ausgehen, dass Du keine Schleife in irgendeiner Form benötigst. Das Problem dürfte mit einer einfachen Abfrage (SQL) ohne irgendetwas programmieren zu müssen zu lösen sein. Ohne Index, den es bei Access so wie Du das denkst gar nicht gibt.
Du kannst weiterhin davon ausgehen, dass alle Werte mit denen Du etwas machen/rechnen/vergleichen willst in Tabellenfeldern gespeichert sein müssen. Die Betonung liegt auf müssen.

ZitatDie abfrage an sich ist mir ja klar - also, wie ich den Wert gegen Min und Max prüfe - allerdings eben nicht, wie ich das in einem Endlosformular abfangen würde
Was willst Du da abfangen, bzw. was verstehst Du darunter ?
Das Formular an die Abfrage (mit Min/Max Vergleich) binden und fertig. Da muss nichts abgefangen werden. Im Reglefall wird ein Formular ohnehin an eine Abfrage (Basis=Tabelle) gebunden und nicht an die Tabelle direkt. Nur über eine Abfrage sind z.B. zuverlässige Sortierungen möglich.

Weiterhin scheinen Dir wichtige Grundlagen im Umgang mit Access zu fehlen. Ein Formular kann keine Daten speichern, das machen nur Tabellen. Und ein Formularfeld das Daten anzeigt für einen Datensatz muss an ein Tabellenfeld gebunden sein.

Kannst Du mal ein Bild des Beziehungsfensters (das hoffentlich angelegt wurde) hier zeigen ?
Ohne Beziehungen keine funktionierende Datenbank !
Titel: Re: Endlosformular Textfeld als Array
Beitrag von: netghost am April 24, 2017, 09:26:31
Morgen.

Also ganz blöd bin ich ja nicht. Klar gibt es Beziehungen.  Und ja, Mir fehlen wichtige Grundlagen für Access, ist ja auch ewig her.

na gut, anbei der Screenshot

Allerdings muß ich dieses Modell ohnehin ändern. Das schaffe ich schon. Die Frage ist m.E. eh schon beantwortet - allerdings würde ich sie erst auf fertig setzen, wenn die Lösung funktioniert.

denke da an eine weitere Tabelle, die halt aus einer Tabellenerstellungsabfrage erstellt wird. in der ich dann halt Parameter abfragen muß - eben, wie sind die tatsächlichen werte, die vor Ort eingegeben wurden

Glaube, damit geht es dann

Titel: Re: Endlosformular Textfeld als Array
Beitrag von: MzKlMu am April 24, 2017, 09:34:39
Hallo,
zu was eine weitere Tabelle ?
Die Füllmenge gehört als Feld in die Tabelle "tbl_getr_masch".

Oder, wenn die Füllmengen zu einem bestimmten Dateum von einem Techniker festgehalten werden müssen, so fehlt eine weitere Tabelle mit einem Datum, einem Fremdschlüssel (FS) zum Techniker, einem Feld für die Füllmenge und einem FS zur Kombinationstabelle "tbl_getr_masch". Zu diesem Zweck benötigt dann die Tabelle "tbl_getr_masch" einen eigenen Primärschlüssel (Autowert und nicht der zusammengesetzte PS).

Und noch was, wer glaubt, eine Tabellenerstellungsabfrage zu brauchen, hat meist ein falsches Datenmodell.
Ich denke, hier sind noch erhebliche Änderungen am DB-Design notwendig.

Wobei ich aber zugeben muss, dass ich die Zusammenhänge nicht ganz durchschaue.
Titel: Re: Endlosformular Textfeld als Array
Beitrag von: netghost am April 24, 2017, 09:49:57
oke, du meinst also, in der Zwischentabelle - ja, zu dem Schluß bin ich auch gekommen.
ich geb zu, Access verwirrt mich - hatte das als einfach in Erinnerung.

Naja, die zusammenhänge: ein techniker - mehrere Standorte - aber ein Standort kann auch mehrere Techniker haben.

Ein Standort kann mehrere maschinen haben.

Eine maschine kann mehrere Getränke anbieten, ein Getränk kann bei verschiedenen maschinen vorkommen.

Ein Getränk hat eine min/max Fuellmenge, Auslaufzeit, Pulvermenge - und eben eine tatsächliche Fuellmenge, Auslaufzeit, pulvermenge

dazu kommen noch reiningungszustände, die ich aber noch nicht als Tabelle angelegt habe, da da noch das reinigungsobjekt pro Maschine und der reinigungszustand des Objektes pro maschine dazukommen müßte.




Titel: Re: Endlosformular Textfeld als Array
Beitrag von: MzKlMu am April 24, 2017, 09:52:25
Hallo,
ich habe meinen Beitrag in #8 noch ergänzt, bitte noch mal lesen.
Titel: Re: Endlosformular Textfeld als Array
Beitrag von: netghost am April 24, 2017, 10:10:23
oke - ich hätte das Datum einfach das aktuelle genommen, welches ich in nem Formular ja so einfügen kann.

Also gut - nochmal über die DB hirnen.  ja, das ich dann den zusammengesetzten Schlüssel nicht so lassen kann, ist klar




Danke auf jeden Fall
Titel: Re: Endlosformular Textfeld als Array
Beitrag von: MzKlMu am April 24, 2017, 10:25:02
Hallo,
Zitatoke - ich hätte das Datum einfach das aktuelle genommen, welches ich in nem Formular ja so einfügen kann.
Aber das Datum muss doch auch gespeichert werden, wenn Du in einem Formular anzeigst, ist das doch zu jedem Zeitpunkt an dem Du das Formular öffnest anders (eben aktuell) und das kann und darf doch nicht sein. Wenn Du dann morgen das Formular anzeigst, steht dann ein anderes Datum drin. Das Datum muss zwingend als Tabellenfeld vorhanden sein.
Titel: Re: Endlosformular Textfeld als Array
Beitrag von: netghost am April 24, 2017, 10:51:16
ja, verstanden. Ich seh schon, so mal eben in Access was machen, ist halt doch nicht so einfach wie gedacht.

Alleine dieser Ausdrucksgenerator treibt mich in den Wahnsinn

Ich krieg das hin.

Danke, Klaus
Titel: Re: Endlosformular Textfeld als Array
Beitrag von: Beaker s.a. am April 24, 2017, 17:06:23
Hallo,
ZitatAlleine dieser Ausdrucksgenerator treibt mich in den Wahnsinn
Das geht wohl nicht nur dir so  ;). Ich frage mich inzwischen wozu der überhaupt
gut sein soll. Ist so ähnlich wie bei Macros, verwendet wohl kaum jemand.
gruss ekkehard