BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Automatisch Datensätze erzeugen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Zerberus
Beiträge: 4
Registriert: Di 11. Feb 2020, 10:44

Automatisch Datensätze erzeugen

Beitrag von Zerberus » Fr 17. Apr 2020, 11:20

Hallo,

Ich möchte für eine Geräteverwaltung ein Formular erstellen, dass mir mehrere Datensätze erzeugt.

Am Beispiel eines Netzwerkswitch:

Ich habe eine Tabelle "Switche", und eine Tabelle "Ports"
Ich möchte im Formular einen Switch anlegen mit seinen Daten etc., dieser hat bspw. 24 Ports. Den Switch anzulegen ist soweit kein Problem.
Jetzt könnte ich hergehen und in einem anderen Formular in der Tabelle "Ports" Einträge erstellen, die diesem Switch zugeordnet sind. -wäre soweit auch kein Problem.

Ich möchte das allerdings etwas bequemer gestalten, nämlich so, dass ich bspw. den Switch anlege mit Anzahl *n Ports. Beim Speichern des Datensatz in "Switche" sollen in der Tabelle "Ports" *n Einträge (durchnummeriert 1-n) entstehen, die diesem Switch zugeordnet sind.
Diese Tabelle könnte ich dann weiter bearbeiten und zum Beispiel angeschlossene Geräte eintragen etc. und könnte in einer Abfrage sehen welche Ports frei oder belegt sind.

Ich hoffe es kommt ungefähr rüber was ich vorhabe.
Ich vermute dass sowas nur mit einem Makro geht, bzw. ein Makro das ein INSERT o.ä. Statement aufruft. Ich komme aber nicht so recht drauf wie das aussehen müsste, da ich über einfache Makros höchstens mal Formulare aktualisiere, ansonsten aber nicht besonders firm im Makroschreiben bin.

Ich kann mir da nur ein grobes Gerüst vorstellen, weiss aber nicht wie das umzusetzen ist:

-Dateneingabe Switch --> Portanzahl *n oder "Typ 24 Port" (Da wäre dann die Portanzahl iwo in einer anderen Tabelle hinterlegt)
-Speichere Daten Switch in Tabelle "Switche"
-> Nimm SwitchID, Portanzahl *n
-> für *n(Portanzahl)
-> erstelle Datensätze mit Fremdschlüssel SwitchID in "Ports"
-> schreibe in Feld "Portnr." 1 - *n

Ist das irgendwie umsetzbar?

viele Grüße
Helmut

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Automatisch Datensätze erzeugen

Beitrag von RobertG » Fr 17. Apr 2020, 13:18

Hallo Helmut,

dann musst Du in der Tabelle für die Ports aber zur Bedingung machen, dass der Eintrag von der Portnummer für ein Insert ausreicht, alle anderen Felder also NULL sein können.

Code: Alles auswählen

SUB PortsAnlagen(inI AS INTEGER, iFID AS INTEGER)
DIM oConnection AS OBJECT
DIM k AS INTEGER
oConnection = oForm.activeConnection()
oSQL_Statement = oConnection.createStatement()
FOR k = 1 TO inI
	stSql = "INSERT INTO ""Tabellenname"" (""Fremdschl.Swicht"",""Nr"") VALUES ('"+iFID+"','"+k+"')"
	oSQL_Statement.executeUpdate(stSql)
NEXT
END SUB
Damit müsstest Du alle Felder beschreiben können. Das benötigt noch die Angabe der Anzahl an Ports und des Fremdschlüsselfeldes für den Switch. Die kannst Du natürlich bei Bedarf aus dem Formular für den Switch auslesen. Außerdem geht der Befehl davon aus, dass die Tabelle, in die geschrieben wird, einen Primärschlüssel in Form eines Autowertes oder einen Primärschlüssel in Form einer Kombination von Switch-Nummer laufender Nummer hat.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Zerberus
Beiträge: 4
Registriert: Di 11. Feb 2020, 10:44

Re: Automatisch Datensätze erzeugen

Beitrag von Zerberus » Fr 17. Apr 2020, 15:01

Hallo und vielen Dank,

Ja die Daten in der Tabelle Ports dürfen leer sein, bis auf den Primärschlüssel z.B. "PortsID" (Autowert) und eben die Spalte "Portnummer" in die ja geschrieben werden soll. Wenn die angelegt sind verknüpfe ich nur noch andere Geräte ID in die Tabelle, verkabele sozusagen virtuell den Switch und kann dann sehen ob und welche Ports noch frei sind, bzw. was wo angeschlossen ist. (zumindest denke ich mir das so :lol: )

Ich werde das in der nächsten Woche mal testen und sehen ob ich noch in irgendwelche Probleme renne.

Vielen Dank nochmal


Grüße
Helmut

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Automatisch Datensätze erzeugen

Beitrag von RobertG » Fr 17. Apr 2020, 15:33

Hallo Helmut,

kleine Ergänzung noch einmal.
  • Ich würde in der 2. Tabelle keine Autowerte mehr einbauen, da Du ja pro Nummer für den Port auch einen Fremdschlüssel für den Switch hast.
  • Du könntest das Makro mit einem Button in Deiner Eingabemaske für den Switch legen.

Mal angenommen Du willst damit abspeichern und gleichzeitig die andere Tabelle beschreiben. Dann geht dies über das auslösende Ereignis:

Code: Alles auswählen

SUB PortsAnlagen(oEvent AS OBJECT)
oForm = oEvent.Source.Model.Parent
oForm.insertRow() 'Fügt den neuen Datensatz ein
inI = oForm.getString(oForm.findColumn("AnzahlPorts"))
iFID = oForm.getString(oForm.findColumn("switchID"))
...
Natürlich musst Du die Bezeichnungen an Deine Tabelle anpassen (die Columns sind die Tabellenfelder).

Das Einzige, was eventuell Probleme bereiten kann, ist "insertRow()" wenn Du bereits die Daten vorher abgespeichert hast.

Das kannst Du auch noch abfangen, aber so würde das Ganze erst einmal ohne zusätzliche Fuddelarbeit funktionieren.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten