Generierung neuer Variablen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

oropax
**
Beiträge: 20
Registriert: Mo, 30.03.2009 17:23

Generierung neuer Variablen

Beitrag von oropax »

Hallo zusammen,

Ich habe eine Frage zur Generierung einer neuen Variable aus bereits bestehenden Variablen.
Zum Beispiel: Für jede Beobachtung wurde die Variable Postleitzahl (PLZ: 4-stellig) sowie ein fortlaufend auto-generierter Wert (ID:1-999) erhoben. Falls möglich, wie kann ich aus diesen beiden Variablen eine neue Variable (PID: 7-stellig) generieren? Die ersten vier Stellen dieser neuen Variable soll die Postleitzahl bilden, während sich die drei letzten Stellen aus dem auto-generierten Wert (ID) zusammensetzen.

Herzlichen Dank für eure Hilfe.
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Generierung neuer Variablen

Beitrag von eBayer »

Sub VariableBasteln
a = 1234
b = 1
MsgBox str(a) + Format(b, "000")
End Sub

Passt das so?
Gruß eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
oropax
**
Beiträge: 20
Registriert: Mo, 30.03.2009 17:23

Re: Generierung neuer Variablen

Beitrag von oropax »

Hallo eBayer,

Ich benutze das Programm zum ersten Mal, deshalb reicht Wissen nicht sehr weit...

Soweit ich das beurteilen kann müsste ich also ein Makro programmieren. Allerdings weiss ich nicht, wie ich dieses anschliessend in meine Tabelle integrieren kann, damit die Variable auch wirklich generiert wird. Kannst du mir diesbezüglich auch weiterhelfen?
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Generierung neuer Variablen

Beitrag von turtle47 »

Hallo,

hier findest Du Links zum Installieren von Makros.

Viel Erfolg.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Generierung neuer Variablen

Beitrag von eBayer »

dazu müsstest Du schon etwas mehr Information herauslassen.

Ich gehe davon aus, daß Du aus welchen Gründen auch immer, 2 Datenfelder aus einer Tabelle zusammenbasteln willst.
Das ist der Weg:
Feld a = 1234
Feld b = 1
Feld c = str(a) + Format(b, "000")
c sieht dann im Ergebnis so aus: 1234001
Du wirst ja irgendwo in Deinem Programm die notwendige Logik programmiert haben oder noch programmieren müssen.
Ob das ein Makro nur zum zusammenbasteln ist, oder ob das ein Teil der gesamten Logik ist, mußt Du selbst entscheiden.
Ein gewisses Maß an Selbststudium ist absolut unumgänglich. Sonst kannst Du das Programm gleich von jemand für Dich basteln lassen. Also trau Dich einfach mal heran, definiere Deine Tabellen und fülle diese erst einmal manuell mit ein - zwei Datensätzen. Dann entwirfst Du das von Dir angedachte Formular. Und darin mußt Du nun ein wenig Logik programmieren.
Viel Spaß und nur Mut
Gruss eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
oropax
**
Beiträge: 20
Registriert: Mo, 30.03.2009 17:23

Re: Generierung neuer Variablen

Beitrag von oropax »

Ok, ich versuchs mal. danke für die Hilfe.
oropax
**
Beiträge: 20
Registriert: Mo, 30.03.2009 17:23

Re: Generierung neuer Variablen

Beitrag von oropax »

Es will immer noch nicht funktionieren, deshalb richte ich mich nocheimal an all die kompetenten User im Forum...

Nocheinmal zum Befehl: ich möchte die Variablen aid (5stellig) und cid (3stellig) zur variable cidaid zusammensetzen.

Wäre das die korrekte Umsetzung, gemäss Vorschlag von eBayer?

Sub cidid
cidid= str(aid) + Format(cid, "00000")
End Sub

Die Sache ist, dass ich an einem für mich einmaligen Projekt mitarbeite. Dabei dient uns dieses Programm nur als Tool für die eigentliche Arbeit. Bis auf die Sache mit dieser mühsamen Variablengenerierung wäre soweit alles in Ordnung. Das Erlernen der Programmiersprache für diesen einen Befehl scheint mir daher doch ein wenig umständlich...

Vielleicht noch zur Einbindung des Makros: Das Makro wird nun jedes Mal beim Laden des Formulars ausgeführt (Formulareigenschaften --> Ereignisse). Ist das der richtige Weg?

Also entweder hapert es an der Einbindung des Makros, am Makrobefehl oder an beidem, die Werte für die Variable cidid werden auf jeden Fall nicht generiert.

Wenn mir jemand weiterhelfen könnte wäre ich sehr froh.
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Generierung neuer Variablen

Beitrag von turtle47 »

oropax hat geschrieben:ich möchte die Variablen aid (5stellig) und cid (3stellig) zur variable cidaid zusammensetzen.
Stellt sich die Frage wo kommen die Variablen her?

Ich habe Dir mal einen Testcode zusammengestellt:

Code: Alles auswählen

'Global a, b as integer 'Variable verfügbar machen

Sub Sub1
neueVariable = str(a) & Format(b, "000")
msgbox neueVariable
a = "" 'Variable zurücksetzen
b = "" 'Variable zurücksetzen
End Sub

Sub Sub2 'Variable erzeugen
a = 1234
b = 1
End Sub
1. Versuch
Starte die Sub1, dann erhälst Du als Ergebnis "nichts" > Die MsgBox ist leer
Das ist auch richtig so

2. Versuch
Starte zuerst Sub2 und anschliessend die Sub1, dann erhälst Du als Ergebnis "nichts" > Die MsgBox ist leer
Das ist auch richtig so

3. Versuch
Entferne das Hochkomma vor "'Global a, b as integer" (aber nur das erste Hochkomma!!)
Starte Sub1
Als Ergebnis erhälst Du "000"
Das ist auch richtig so

4. Versuch
Starte zuerst Sub2 und anschliessend die Sub1
Als Ergebnis erhälst Du "1234001"
Das ist jetzt so wie es sein soll
Die Variablen sind gesetzt und global verfügbar

Hilft das weiter?

Im Klartext heisst das, Du muss die Variable(n) erstmal erzeugen und durch globalsetzen für andere Subs verfügbar machen!
oropax hat geschrieben:Vielleicht noch zur Einbindung des Makros: Das Makro wird nun jedes Mal beim Laden des Formulars ausgeführt (Formulareigenschaften --> Ereignisse). Ist das der richtige Weg?
Welches Makro?


Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Generierung neuer Variablen

Beitrag von eBayer »

kann es sein, daß du in einem verzeichnis arbeitest, welches die Ausführung von macros nicht zulässt?
ich habe dir mal ein testprogramm beigefügt.... probiers mal aus und schau dir den code an.
viel erfolg
eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
oropax
**
Beiträge: 20
Registriert: Mo, 30.03.2009 17:23

Re: Generierung neuer Variablen

Beitrag von oropax »

@ ebayer

Vielen Dank für den Code: Einziges Problem ist, dass die neue Variable nur angzeigt aber nicht generiert wird! Ist es nicht möglich den neuen Wert, neben den Ausgangsvariablen "Feld1" und "ID" in der Tabelle zu speichern? Also so, dass wir am Ende 3 und nicht 2 Tabellenspalten haben?

Aufbau (@ turtle47)

Die Variablen kommen aus einer Tabelle. Die ganze Sache ist folgendermassen aufgebaut:

Zwei Tabellen: Zeitungsartikel und Forderung
Ein Formular (Zeitungsartikel) mit Subformular (Forderung)

Die Formulare sind über die Variable "aid" verknüpft, welche jeden Artikel eindeutig identifiziert. Allerdings können innerhalb eines Artikels verschiedene Forderungen formuliert werden. Diese Forderungen werden innerhalb eines Artikels durchnummeriert ("cid"). Nun möchte ich aus den beiden Variablen "aid" und "cid" eine neue Variable generieren, sagen wird "xid". Die Tabelle 'Forderung' sollte anschliessend mit diesen Werten ergänzt werden, damit jede Forderung eindeutig identifiziert werden kann.

Entschuldigt die ewigen Ausführungen und meine scheinbar lange Leitung...aber ich benutze das Programm erst seit letzter Woche. Die Basic-Syntax ist mir daher völlig unbekannt. Wäre eigentlich auch kein grosses Problem gewesen, wenn nicht diese doofe Variable zu generieren wäre. Und da ich in absehbarer Zeit nicht so schnell wieder mit Base arbeiten werde und die ganze Sache (bis anhin) nur an diesem Punkt scheitert, schien mir dieses Forum optimal...
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Generierung neuer Variablen

Beitrag von eBayer »

Hallo Oropax,
bis hierhin schien mir die Hilfe notwändig......
Aber nun denke ich daß Du Dich mal selbst reinhängen solltest..... scheint ja Dein Job zu sein.
Es ist wirklich kein Problem, den Rest zu programmieren. Aber wenn Du das jetzt alles abschreibst und nicht bereit bist, Dich mit ooBase zu beschäftigen, frage ich Dich: "wie willst Du denn später mal bei aufkommenden Problemen reagieren?"
Also setze etwas Ehrgeiz hinein und beiß Dich durch..... ich habe immerhin mit 63 Jahren vor 3 Monaten spielerisch damit angefangen und bin inzwischen begeistert von ooBase......
Ist nur ein gut gemeinter Rat.
Viel Erfolg.... den willst Du doch, oder?
eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
oropax
**
Beiträge: 20
Registriert: Mo, 30.03.2009 17:23

Re: Generierung neuer Variablen

Beitrag von oropax »

@ebayer

Irgendwie hast du schon recht: natürlich werde ich in Zukunft solche Probleme nicht selber lösen können, wenn ich mich nicht ein bisschen mehr reinhänge. Allerdings hat die Sache einen (bzw. zwei) Haken:

1. Wie erwähnt, werde ich Base in absehbarer zukunft nicht mehr benutzen müssen. Das momentane Projekt ist sozusagen eine einmalige Sache.

2. Ich habe weder die Unterlagen (noch die Zeit) mich gross mit der Programmierung in Basic auseinanderzusetzen. Ausserdem sehe ich trotz mehreren verschiedenen Herangehensweisen keine Möglichkeit die neu generierte Variable in der Tabelle zu speichern. Wäre halt schon super, wenn mir jemand diesen Befehl posten könnte...
berndkli
*****
Beiträge: 289
Registriert: Di, 12.04.2005 22:05

Re: Generierung neuer Variablen

Beitrag von berndkli »

Hallo Oropax

Ich glaube, Du hast die Leute hier mit dem Begriff "Variable" in die falsche Richtung gelenkt.
Wahrscheinlich brauchst Du ist eine Schlüsselspalte die sich aus 2 anderen Spalten zusammensetzt.
Sowas geht mit der Funktion CONCAT() in einer Abfrage. Um später einen eindeutigen Datensatz zu finden ist es auch nicht nötig, das der generierte Wert in die ursprüngliche Tabelle geschrieben wird (geht aber glaube ich mit INSERT() oder UPDATE(), aber da kenn' ich mich nicht aus), die Abfrage tut das erst mal.
Beispiel

Code: Alles auswählen

SELECT "Spalte1", "Spalte2","Spalte3", CONCAT("Spalte1",Spalte2")AS "Concat" FROM "Tabellenname"
Gruss Bernd
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Generierung neuer Variablen

Beitrag von eBayer »

So, ich habe das Testprogramm in Deinem Sinne erweitert.
Einfach das beiliegende Programm in Dein Arbeitsverzeichnis für OO kopieren.
Dann in OO unter Extras - Optionen - OpenOffice.org - Datenbanken dieses Programm registrieren.
Nun kannst Du das Programm testen - inclusive Update.
Viel Erfolg
eBayer
Dateianhänge
Test1.odb
(12.62 KiB) 94-mal heruntergeladen
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
oropax
**
Beiträge: 20
Registriert: Mo, 30.03.2009 17:23

Re: Generierung neuer Variablen

Beitrag von oropax »

Vielen Dank für die ausführlichen Beiträge. Ich werde mir das morgen genauer anschauen und hoffe, dass ich es so schaffen werde! Auf jeden Fall ein grosses Dankeschön für eure engagierte Hilfe.
Antworten