Generierung neuer Variablen
Moderator: Moderatoren
Generierung neuer Variablen
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.
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.
Re: Generierung neuer Variablen
Sub VariableBasteln
a = 1234
b = 1
MsgBox str(a) + Format(b, "000")
End Sub
Passt das so?
Gruß eBayer
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
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
Re: Generierung neuer Variablen
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?
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?
Re: Generierung neuer Variablen
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
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Generierung neuer Variablen
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
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
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
Re: Generierung neuer Variablen
Ok, ich versuchs mal. danke für die Hilfe.
Re: Generierung neuer Variablen
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.
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.
Re: Generierung neuer Variablen
Stellt sich die Frage wo kommen die Variablen her?oropax hat geschrieben:ich möchte die Variablen aid (5stellig) und cid (3stellig) zur variable cidaid zusammensetzen.
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
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!
Welches Makro?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?
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
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Generierung neuer Variablen
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
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
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
Re: Generierung neuer Variablen
@ 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...
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...
Re: Generierung neuer Variablen
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
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
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
Re: Generierung neuer Variablen
@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...
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...
Re: Generierung neuer Variablen
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
Gruss Bernd
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"
Re: Generierung neuer Variablen
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
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
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
Re: Generierung neuer Variablen
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.