Inventar-DB

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Inventar-DB

Re: Inventar-DB

von RobertG » Mo, 25.02.2013 20:29

Hallo Marcel,
Masl75 hat geschrieben: Dass es ein Listenfeld o.ä. sein muss, leuchtet mir ja noch ein, aber dass man zur Anzeige der - neben der unvermeidlichen ID - einzig existierenden Spalte SQL bemühen muss, finde ich als Laie schon etwas seeehr umständlich. Im Calc hat man das ganz wunderbar mit der SVERWEIS-Funktion gelöst. Warum nicht auch - so ähnlich - bei Base?
So unterschiedlich können die Ansätze und Personen eben sein. Ich müsste mir für Calc den SVERWEIS immer wieder neu überlegen - Listenfelder mache ich im Schlaf.
Für die Listenfelder gibt es übrigens auch einen Assistenten. Der schaltet sich aber nur dann ein, wenn Du ein Listenfeld in einem Formular neu aufziehst, also nicht, wenn Du ein Formularfeld in ein Listenfeld umwandelst.
SQL brauchst Du an sich auch gar nicht zu bemühen. Du wählst zwar in den Daten "SQL", dann aber im darunterliegenden Feld den Button mit den 3 Punkten. Damit öffnest Du den Abfrageeditor und Suchst aus der entsprechenden Tabelle die Felder raus - zuerst das anzuzeigende, danach den Primärschlüssel. Außerdem noch das anzuzeigende Feld nach dem Alphabet sortieren lassen und fertig ist das. Natürlich steht dahinter dann der SQL-Code. Aber der braucht Dich nicht unbedingt zu interessieren - es sei denn, Du willst Dich intensiver mit Datenbanken beschäftigen. Dann ist der doch recht einfache Code als Einstieg hervorragend geeignet - habe ich gerade heute im 8. Jahrgang unserer Schule genau bei den Listenfeldern als Einstig in SQL genutzt.

Gruß

Robert

Re: Inventar-DB

von Masl75 » Mo, 25.02.2013 15:59

sooooo:

https://wiki.documentfoundation.org/ima ... ng_V33.pdf

Seite 33-34, Punkt 4.

Warum einfach, wenns auch kompliziert geht? Wer soll denn darauf kommen, dass man sich mit der SQL-Bürste in der linken Hand am rechten Ohr kratzen muss, während man mit der freien Hand auf dem Hochseil tanzend Sudokus mit verbundenen Augen ausfüllen muss?

Dass es ein Listenfeld o.ä. sein muss, leuchtet mir ja noch ein, aber dass man zur Anzeige der - neben der unvermeidlichen ID - einzig existierenden Spalte SQL bemühen muss, finde ich als Laie schon etwas seeehr umständlich. Im Calc hat man das ganz wunderbar mit der SVERWEIS-Funktion gelöst. Warum nicht auch - so ähnlich - bei Base?

Ach menno... Ich könnte schon fast fertig sein, wenn man die entscheidenden Infos nicht immer unterm Ladentisch bekäme.

Nichts gegen dich - du konntest es ja nicht wissen, dass ich sooo doof bin! :-D

Also, jetzt weißt du so in etwa, wo ich stehe was Base - und auch meine Inventar-DB - angeht.

Ich fürchte, dass ich spätestens bei den Bestandsveränderungen nochmal deine Hilfe benötige, aber jetzt versuche ich ersteinmal, mir durch Erstellen von ein paar Formularen das Führen des Inventars zu ermöglichen. Ein Erfolgserlebnis muss vor dem Feierabend schließlich noch sein!

Ganz liebe Grüße.

Marcel

Re: Inventar-DB

von juetho » Mo, 25.02.2013 15:23

Masl75 hat geschrieben:Nun wäre es suuuuper, wenn ich ein Formular hinbekäme, in dem nicht die id-artikelart und -standort stehen (nullen und einsen) sondern der Gruppenname bzw. der Ort, wofür ich ja extra diese Minitabellen angelegt habe.
Dafür ist das Listenfeld geeignet, siehe Base-Handbuch (zurzeit Seite 82 ff., 108 f.). Jürgen

Re: Inventar-DB

von Masl75 » Mo, 25.02.2013 15:12

Hallo,

ich habe mittlerweile 4 (neue) Tabellen mit den u.a. Feldern/Spalten: (* ist der Primärschlüssel, autom. vergeben durch Base)

1. Artikel
*ID BIGINT
-id-artikel BIGINT
-id-standort BIGINT
-Bezeichnung VARCHAR
-Beschreibung VARCHAR
-Anfangsbestand NUMERIC
-Mindestbestand NUMERIC

2. Artikelart
*ID BIGINT
-AV/UV BOOLEAN
-Gruppenname VARCHAR

3. Standort
*ID BIGINT
-Raum VARCHAR

4. Bestandsveränderung
*ID BIGINT
-id-artikelart BIGINT
-Bestandsveränderung NUMERIC
-Bemerkungen LONGVARCHAR
-Datum TIMESTAMP


Bisher verknüpft habe ich

Artikel.id-artikel --- n-1 --- Artikelart.ID
Artikel.id-standort --- n-1 --- Standort.ID
Artikel.ID --- 1-1 --- Bestandsveränderung.ID

Gern würde ich mal einen Screenshot senden, aber das scheint hier nicht zu gehen, daher schicke ich dir den Link zu Dropbox, hoffe es funktioniert!

https://www.dropbox.com/s/yowcos8uhpnqd7k/Inventur-D...

Nun wäre es suuuuper, wenn ich ein Formular hinbekäme, in dem nicht die id-artikelart und -standort stehen (nullen und einsen) sondern der Gruppenname bzw. der Ort, wofür ich ja extra diese Minitabellen angelegt habe.

Per Subform ohne irgendwelche definierten Verknüpfungen (!) hab ich es geschafft, dass der Gruppenname angezeigt wurde, aber da ich ja nur ein Subform erstellen kann, wird der Ort nur als Zahl angzeigt...

Ich spüre, dass es ganz triviale Dinge sind, die mich hier zum Verzweifeln bringen, aber jeder hat wohl mal klein angefangen...

LG, Masl

LG, Marcel

Re: Inventar-DB

von Masl75 » Mo, 25.02.2013 08:56

RobertG hat geschrieben:Hallo masl,

irgendwie scheint mir dieser Thread recht unübersichtlich.
Das sehe ich genau so...
RobertG hat geschrieben:Deswegen habe ich mir nur die Datenbank herunter geladen und einmal kurz reingeschaut. Mir fällt das Folgende auf:
Du verwaltest die Artikelstammdaten und die Anzahl der vorhandenen Artikel in einer Tabelle. Das scheint mir recht ungewöhnlich.
Da kannst du mal sehen, wieviel Ahnung ich habe. Für mich ergibt es Sinn, aber ich ahnte bereits, dass mir meine Logik was DB angeht, irgendwann auf die Füße fällt und wandte mich an dieses Forum. Die erste "hilfreiche" Antwort siehst du ja ganz oben selber... ;-)
RobertG hat geschrieben: In einer Inventardatenbank hat jeder Gegenstand eine feste Nummer.
Soweit stimmt ja schonmal alles bei mir... *g*
RobertG hat geschrieben: Wird ein Gegenstand abgeschrieben, so wird er ausgebucht (nicht gelöscht).
Wäre es irgendwie möglich, das Anlage- und Umlaufvermögen irgendwie in zwei separate Tabellen auszugliedern? Ist ja irgendwie Blödsinn, bei jeder Bestandsveränderung (z.B. Rolle Stretchfolie weniger) alle Daten zu laden...?
RobertG hat geschrieben:
Dein Bestand müsste sich also aus allen gleichen Gegenständen abzüglich der ausgebuchten Gegenstände ergeben.
Es war so gedacht, dass man vom mir aus eine Woche lang eine Papierliste führt, auf der alle Lagerzu- und -abgänge eingetragen werden. Diese neuen Bestände werden dann einfach in die DB übernommen.
RobertG hat geschrieben: Geht leider nicht, da Du zwar die Gegenstände hast, aber keine separate Verwaltung von Zugang und Abgang.
Na, wenn das nicht weiter schwierig sein sollte, da von Anfang an berücksichtigt, nehm ich diese Möglichkeit natürlich gern auf.
RobertG hat geschrieben:
Kann ja sein, dass Du eigentlich so etwas ähnliches wie einen kleinen Laden damit simulieren willst.
Unsere Firma halt. Ein paar Computer und Büroausstattung, dann eben noch die Hilfsstoffe. Rohstoffe gibts keine, da wir keine Waren produzieren (Dienstleister), Betriebsstoffe sind im Tank vom Auto und nicht im Lager...
RobertG hat geschrieben: Da hast Du natürlich nur eine Anzahl an Waren, die geliefert werden und eine Anzahl an Waren, die verkauft werden. Die Waren haben nicht unterschiedliche Nummern. Aber auch da gibt es eine Tabelle für die Waren, eine Tabelle für den Zugang und eine für den Abgang.
Drei Tabellen anstatt einer wie bisher? Scheint mir das nur so wahnsinnig umständlich, oder ist das die Logik der DB, die mir jetzt auf die Füße fällt? ;-)
RobertG hat geschrieben:
Nun noch kurz zu Filtern:
Ein Hauptformular stellt immer einen Filter für ein Unterformular (Subform) dar. Die beiden sind miteinander verknüpft.
Aha! Interessant zu wissen. Und gleichzeitig ein gutes Beispiel für die tolle OO-Hilfe. Warum steht sowas Wichtiges da nicht drin? ganz oben, wenn man nach dem Begriff "verknüpft" sucht...?
RobertG hat geschrieben: Würdest Du z.B. Deine Artikel im Hauptformular sehen, so könntest Du im Unterformular den Zugang oder Abgang zu dem gerade ausgewählten Artikel in die entsprechenden gesonderten Tabellen eingeben.
Ich hatte ja eigentlich vor, durch die Verwendung von Main- und Subform mehr Übersicht ins Formular zu bekommen. Oben die Daten eines Artikels, darunter alle Artikel. Den erkennbaren Zusammenhang zwischen beiden Teilen habe ich darauf geschoben, dass beide auf dieselbe Tabelle zurückgreifen...?
Komischerweise kann ich oben einen Artikel löschen, und unten ist er immer noch zu sehen... Datenänderungen dagegen übernimmt er sofort, wenn ich zum nächsten Artikel schalte.
RobertG hat geschrieben: Gruß

Robert
Hab erstmal vielen Dank für die wirklich sehr ausführliche Antwort! Ich hoffe, dass ich mit deinen Anregungen erstmal ein gutes Stück weiter komme, fürchte jedoch, dass ich mich heute nochmal melden werde...

LG, Marcel

Re: Inventar-DB

von RobertG » So, 24.02.2013 17:22

Hallo masl,

irgendwie scheint mir dieser Thread recht unübersichtlich. Deswegen habe ich mir nur die Datenbank herunter geladen und einmal kurz reingeschaut. Mir fällt das Folgende auf:
Du verwaltest die Artikelstammdaten und die Anzahl der vorhandenen Artikel in einer Tabelle. Das scheint mir recht ungewöhnlich.
In einer Inventardatenbank hat jeder Gegenstand eine feste Nummer. Wird ein Gegenstand abgeschrieben, so wird er ausgebucht (nicht gelöscht). Dein Bestand müsste sich also aus allen gleichen Gegenständen abzüglich der ausgebuchten Gegenstände ergeben. Geht leider nicht, da Du zwar die Gegenstände hast, aber keine separate Verwaltung von Zugang und Abgang.
Kann ja sein, dass Du eigentlich so etwas ähnliches wie einen kleinen Laden damit simulieren willst. Da hast Du natürlich nur eine Anzahl an Waren, die geliefert werden und eine Anzahl an Waren, die verkauft werden. Die Waren haben nicht unterschiedliche Nummern. Aber auch da gibt es eine Tabelle für die Waren, eine Tabelle für den Zugang und eine für den Abgang.

Nun noch kurz zu Filtern:
Ein Hauptformular stellt immer einen Filter für ein Unterformular (Subform) dar. Die beiden sind miteinander verknüpft. Würdest Du z.B. Deine Artikel im Hauptformular sehen, so könntest Du im Unterformular den Zugang oder Abgang zu dem gerade ausgewählten Artikel in die entsprechenden gesonderten Tabellen eingeben.

Gruß

Robert

Re: Inventar-DB

von Masl75 » So, 24.02.2013 14:13

juetho hat geschrieben:Hallo Marcel, angesichts der Vielzahl der Fragen beschränke ich mich zunächst auf ein paar Hinweise.
Masl75 hat geschrieben:Es existiert eine Tabelle Artikelstammdaten (Nummer (ID), Bezeichnung, Beschreibung, Bestand, Mindestbestand, Ort, BüMat).
Die Nummer wird automatisch vergeben. Hier die Frage, wie ich diese fortlaufend (es sind Lücken vorhanden) neu vergeben kann?
Das solltest du nicht machen. Grundsätzlich hat eine ID keine andere Bedeutung als die, dass ein Datensatz innerhalb der Datenbank eindeutig identifiziert werden kann. Wenn überhaupt, dann kannst du eine zusätzliche Spalte "Artikelnummer" einfügen und als eindeutig deklarieren. Dann wird die ID nur für Zwecke der Datenbank verwendet (und kann oft auch versteckt werden), für "öffentliche" Aufgaben wird die Artikelnummer verwendet.

So hatte ich es mir anfangs sogar vorgestellt: Artikelnummer, zusammengesetzt aus verschiedenen, charakteristischen Teilen wie z.b. der Raumnummer oder der Standort-Stadt, aber das habe ich nicht hinbekommen. Im Prinzip ist die Art.nr. auch nur intern wenn überhaupt wichtig, da wir keine der Artikel wieder verkaufen. Daher ist die Nummer wirklich vollkommen unwichtig in diesem Fall. Grundsätzlich gebe ich dir natürlich recht! Schon allein wegen der Optik...

Für den Notfall gibt es noch die Lösung aus dem Base-Handbuch (zurzeit Seite 263).

Ich habe die Suchfunktionen im Web wirklich zu schätzen gelernt...! ;-) Bücher verwende ich eher, um einen wackeligen Tisch zu fixieren... Aber ich schau mal, ob ich das nicht auch online finde! :-D

Masl75 hat geschrieben:Nun würde ich gern eine Abfrage erstellen, in der alle Datensätze mit allen Feldern angezeigt werden, bei denen Bestand<Mindestbestand gilt. Bisher habe ich keine Option gefunden, die zwei (variable) Werte mit einander vergleichen kann...
Eigentlich ist es fast immer so, dass ein Assistent nur in Grenzen helfen kann. Bei Abfragen bietet die Entwurfsansicht etwas mehr. In der SQL-Ansicht kann alles, was SQL bietet, benutzt werden. Also kannst du einen einfachen SQL-Befehl als Abfrage erstellen:

Code: Alles auswählen

SELECT * FROM "Artikelstammdaten"
 WHERE "Bestand" < "Mindestbestand"
Die so definierte Abfrage kann auch im Formular als Datenquelle genutzt werden.

Das hört sich schonmal sehr gut an, ich werds gleich - nach einer Zig**** - makl ausprobieren! :-)

Masl75 hat geschrieben:Ich habe ein Formular mit Subformular (identische Tabelle als Grundlage). Nun möchte ich es gern so hinbekommen, dass ich im unteren (Subform als Tabellenansicht) einen Datensatz markiere, dieser dann mit all seinen Feldern oben im Formular erscheint und dort editiert werden kann - oder auch nur bequem gelesen, was auch immer.
Wenn du das nicht als Formular mit Unterformular erstellst, sondern das Tabellenkontrollfeld in das Hauptformular verschiebst (das geht im Navigator), dann hast du eine einheitliche Datenmenge. Ein Wechsel des Datensatzes im Tabellenkontrollfeld führt automatisch zur aktualisierten Anzeige in den Einzelfeldern.

Hm... Es gibt ja nur dieses eine Formular (abgesehen von ein paar kläglichen Versuchen) - oben die Felder, darunter (gleiche Datenquelle) als Subformular (als Tabellenkontrollfeld) der Artikelstamm. Oder was verstehe ich noch nicht ganz?

Ich habe eine Beispieldatei angehangen. Wenn du da mal reinschaust, verstehst du sicher, was ich die ganze Zeit versuche... Siehe Formularnamen...

Eine Frage vorweg: gesetz den Fall, du veränderst in einem der F. etwas so, dass es wunschgemäß funktioniert; wie bekomme ich das in der Originaldatei dann auch hin? Kann man Formulare DB-übergreifend kopieren (noch nie probiert)?


Zur Frage mit dem Mausraddrehen habe ich keine Idee. Ich hoffe, ich kann dir trotzdem etwas helfen.


Das ist doch schonmal eine ganze Ecke mehr als ich auf die Schnelle gehofft hatte! Vielen Dank erstmal dafür!


---------------------
EDIT: Den SQL-Code hab ich in die Formular-Eigenschaften unter Filter kopiert. Funktioniert allerdings nur solange, wie kein einziger Mindestbestand > 0 ist. Testweise habe ich bei zwei Artikeln den MB auf 10 gesetzt und den formularbasierten F. ein und ausgeschaltet - nix passiert. Es werden sowohl als auch immer alle Datensätze angezeigt.

[2 minuten später...]

das könnte aber echt mal irgendwo stehen, dass ich haupt- und subform extra filtern kann/muss! :-/

Aber das bringt mich auf die Idee, die oberen Daten aus dem Hauptform als Filterkriterien fürs Subform zu verwenden. Gibt es sowas wie eine dynamische Abfrage überhaupt?
Dateianhänge
Inventar-Beispieldatei.odb
(42.67 KiB) 381-mal heruntergeladen

Re: Inventar-DB

von juetho » So, 24.02.2013 13:51

Hallo Marcel, angesichts der Vielzahl der Fragen beschränke ich mich zunächst auf ein paar Hinweise.
Masl75 hat geschrieben:Es existiert eine Tabelle Artikelstammdaten (Nummer (ID), Bezeichnung, Beschreibung, Bestand, Mindestbestand, Ort, BüMat).
Die Nummer wird automatisch vergeben. Hier die Frage, wie ich diese fortlaufend (es sind Lücken vorhanden) neu vergeben kann?
Das solltest du nicht machen. Grundsätzlich hat eine ID keine andere Bedeutung als die, dass ein Datensatz innerhalb der Datenbank eindeutig identifiziert werden kann. Wenn überhaupt, dann kannst du eine zusätzliche Spalte "Artikelnummer" einfügen und als eindeutig deklarieren. Dann wird die ID nur für Zwecke der Datenbank verwendet (und kann oft auch versteckt werden), für "öffentliche" Aufgaben wird die Artikelnummer verwendet.

Für den Notfall gibt es noch die Lösung aus dem Base-Handbuch (zurzeit Seite 263).
Masl75 hat geschrieben:Nun würde ich gern eine Abfrage erstellen, in der alle Datensätze mit allen Feldern angezeigt werden, bei denen Bestand<Mindestbestand gilt. Bisher habe ich keine Option gefunden, die zwei (variable) Werte mit einander vergleichen kann...
Eigentlich ist es fast immer so, dass ein Assistent nur in Grenzen helfen kann. Bei Abfragen bietet die Entwurfsansicht etwas mehr. In der SQL-Ansicht kann alles, was SQL bietet, benutzt werden. Also kannst du einen einfachen SQL-Befehl als Abfrage erstellen:

Code: Alles auswählen

SELECT * FROM "Artikelstammdaten"
 WHERE "Bestand" < "Mindestbestand"
Die so definierte Abfrage kann auch im Formular als Datenquelle genutzt werden.
Masl75 hat geschrieben:Ich habe ein Formular mit Subformular (identische Tabelle als Grundlage). Nun möchte ich es gern so hinbekommen, dass ich im unteren (Subform als Tabellenansicht) einen Datensatz markiere, dieser dann mit all seinen Feldern oben im Formular erscheint und dort editiert werden kann - oder auch nur bequem gelesen, was auch immer.
Wenn du das nicht als Formular mit Unterformular erstellst, sondern das Tabellenkontrollfeld in das Hauptformular verschiebst (das geht im Navigator), dann hast du eine einheitliche Datenmenge. Ein Wechsel des Datensatzes im Tabellenkontrollfeld führt automatisch zur aktualisierten Anzeige in den Einzelfeldern.

Zur Frage mit dem Mausraddrehen habe ich keine Idee. Ich hoffe, ich kann dir trotzdem etwas helfen.

Re: Inventar-DB

von F3K Total » So, 24.02.2013 13:38

Hi Masl,
lies dir doch bitte zuerst die Allgemeinen Hinweise zur Forumsbenutzung, hier insbesondere den Abschnitt Wie stelle ich ein Beispieldokument zur Verfügung (und wozu)? durch.

Gruß R

Inventar-DB

von Masl75 » So, 24.02.2013 12:26

Hallo,

ich möchte unsere Inventarliste in einer DB verwaltbar machen. Als Calc-Tabelle ist sie zwar schön, aber nicht wirklich komfortabel editier- oder erweiterbar.

Es existiert eine Tabelle Artikelstammdaten (Nummer (ID), Bezeichnung, Beschreibung, Bestand, Mindestbestand, Ort, BüMat).
Die Nummer wird automatisch vergeben. Hier die Frage, wie ich diese fortlaufend (es sind Lücken vorhanden) neu vergeben kann?
Der Mindestbestand gibt an, ab welchem Bestand nachbestellt werden soll.
BüMat ist boolean, wobei 1 für Büromaterial und 0 für Geschäftsausstattung steht.

Nun würde ich gern eine Abfrage erstellen, in der alle Datensätze mit allen Feldern angezeigt werden, bei denen Bestand<Mindestbestand gilt. Bisher habe ich keine Option gefunden, die zwei (variable) Werte mit einander vergleichen kann...

Wenn das Ganze in der Fromularoptik möglich wäre, dann würde ich das sehr begrüßen, aber Hauptsache, es gibt überhaupt die Möglichkeit.

Die zweite große Frage, die sich mir stellt, ist folgende:

Ich habe ein Formular mit Subformular (identische Tabelle als Grundlage). Nun möchte ich es gern so hinbekommen, dass ich im unteren (Subform als Tabellenansicht) einen Datensatz markiere, dieser dann mit all seinen Feldern oben im Formular erscheint und dort editiert werden kann - oder auch nur bequem gelesen, was auch immer.

Experimentell habe ich dem Nummer-Feld ein Drehfeld hinzugefügt, Status Immer, in der Hoffnung, dass ich so bequem mit dem Mausrad die einzelnen Datensätze durchscrollen kann. Pustekuchen! Geht natürlich nicht! Es ändert sich nicht einmal der Feldinhalt, geschweige denn der komplette Datensatz...

Wie kann ich denn dem Feld bitte sagen, dass es beim Mausraddrehen durch die DS scrollen soll und zudem auch noch die dazugehörigen Felder aktualisiert?

Bis jetzt kann ich zwar einzelne oder alle Felder auf inaktiv setzen oder auch einstellen, dass nichts gelöscht, geändert etc. werden kann, aber wirkliches Leben bekomme ich in das Formular nicht rein.

Für weiterführende Antworten auf Anfängerniveau wäre ich sehr dankbar. Und falls es ohne eine SQL-Abfrage (Code) nicht gehen sollte, dann wäre es furchtbar nett, wenn die Codezeilen irgendwie kommentiert werden würden, da mir sonst nichts anderes übrig bleibt, als sie 1.1 zu übernehmen, ohne allerdings zu verstehen, was da überhaupt passiert.

Viele liebe Grüße aus Berlin,

Marcel

Nach oben