Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)

Beitrag von clag »

hallo pennylane2

also machbar ist da bestimmt etwas per Makro, so ganz schnell gemacht ist das nicht.

Aber wo kommt denn die große Datenmenge her?
Die scheint doch schon in irgendeiner Form zu existent zu sein, da bietet sich doch eher ein Import an.
In welchem Format liegen denn die Rohdaten vor?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)

Beitrag von Stephan »

Es gilt, einstellige ganzzahlige Werte <5 einzugeben und zwar in Fünferblöcken. Das soll so aussehen, dass die Zellen A2-B2-C2-D2-E2 mit jeweils einem Wert befüllt werden sollen, dann A3-B3-C3-D3-E3 usw. Zeile 1 ist Überschriftszeile der Spalten.
das geht in OO auch ohne Makro indem Du vorher den Eingabereich markierst und beim 'Aufziehen' der Markierung darauf achtest das die aktive Zelle (die mit dem Marklierungsrahmen) die linke obere Zelle des gewünschten Bereichs ist. Danach tippe jeweils die Eingabewerte und drücke zum Springen in die nächste Zell TAB-Taste, Calc erkennnt automatiosvch wann esnötig ist auch in die nächste Zeile zu springen.
Zwei Automatisierungswünsche habe ich für die Datenerfassung:

1. Eine korrekte, über Gültigkeit definierte einstellige Eingabe sollte automatisch den Sprung in die Nachbarspalte derselben Zeile bewirken: Ich gebe bspw. eine 3 in Zelle A1, CALC springt in B1 usw.

2. Eine Eingabe in der 5. Spalte, also E sollte dann einen Sprung in die erste Spalte der folgenden Zeile bewirken, also von E2 nach A3, später von E3 nach A4 usw.
Nur mal als Hinweis:
Muss das wirklich per Makro sein? Werum erstellst Du die gewünschten 5-stelligen Zahlen(*) nicht in Writer und kopierst sie dann nach calc, hierbei kannst Du sie mit der Einstellung "feste Breite" automatisch auf Zellen aufteilen. Also in Writer einbe 5-stellige Zahl pro Absatz und dann den kompletten Dokumentinhalt auf einmal nach Callc kopieren (Bearbeiten-Inhalte einfügen-unformatierte Text) und im Einfügen-Dialog die feste Breite auf ein Zeichen einstellen.

(*)ich bin mir bewusst das das strenggenommen nicht stimmt, denn Deine Angaben liessen ja auch Zahlen wie -4 als zulässig erscheinen, ich glaube jedoch du meinst trotzden nur die Zahlen 0, 1, 2, 3, 4.


Wenn es ein Makro sein muss, erweist es nicht so ganz trivial, denn ich probiere jetzt seit einer Stunde und kriege das nicht richtig ans Laufen, vielleicht schafft das ja jemand Anderes.
Ein prinzipielles Codebeispiel ist hier:
http://www.oooforum.org/forum/viewtopic ... highlight=



Gruß
Stephan
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)

Beitrag von Stephan »

Damit müsste zwar nach jedem Fünferpäckchen ein TAB gedrückt werden
Nein, TAB ist völlig unnötig.

Du sollst in Writer jede 5er-Gruppe in einen Absatz schreiben, also z.b.:

12340
11201
32133
22143
44213

Eingabe also z.B. für erste Gruppe:

<1><2><3><4><0><ENTER>

wenn dann alles in Writer steht, mit STRG+A und STRG+C kopieren und mit Bearbeiten-Inhalte einfügen-unformatierter Text in Calc einfügen.



Gruß
Stephan
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)

Beitrag von Stephan »

Zum einen fehlt mir beim Import nach CALC die Trennoption innerhalb der 5er-Reihe, dh. ich bekomme 42211 in eine Zelle kopiert, brauche aber jeden Wert in einer eigenen Zelle.
Wie wäre es denn wenn du liest was ich schreibe?

Ich schrieb bereits:

Warum erstellst Du die gewünschten 5-stelligen Zahlen nicht in Writer und kopierst sie dann nach calc, hierbei kannst Du sie mit der Einstellung "feste Breite" automatisch auf Zellen aufteilen.

Denn es ist natürlich problemlos möglich die einzelnen Zahlen/Ziffern der 5er-Gruppen automatisch auf jeweils 5 nebeneinander liegende Zellen verteilen zu lassen.

Ebenso ist es möglich die 5er-Gruppen erst jeweils zusammenhängend in eine Zelle (pro Zeile) einzufügen und nachfolgend mittels Daten-Text in Spalten... auf jeweils 5 Zellen aufzuteilen, wieder unter Nutzung der Einstellung einer festen Breite von einer Ziffer, im Dialog.
Wichtig ist zudem, dass ich bei direkter Eingabe in CALC die Möglichkeit habe, fehlerhafte Eingaben vermeiden zu können über die Gültigkeitsdefinition.


Ist es zwingend das das über die Gültigkeitdefinition erfolgt?
Der Code, den ich da gefunden habe, hilft nicht weiter ?
Auf jeden Fall hilft er mir persönlich nicht weiter wenn die Prüfung in Calc über Daten-Gültigkeit erfolgen muss, vielleicht wissen ja Andere hier im Forum zu diesem Problem mehr als ich.
(Falls die Prüfung auf Richtigkeit nicht über Daten-Gültigkeit erfolgen muß, sondern im Makro erfolgen kann, läge die Sache wohl etwas anders, aber man sollte sich damit der Aufwand in Grenzen bleibt auf einen bestimmten, konkreten Zellbereich beschränken, die Größe ist eigentlich egal (meinethalben A2:E10000), nur sollte der Bereich vorher feststehen.)


Gruß
Stephan
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)

Beitrag von Karolus »

Hallo
Gib in Calc ein
42356enter-taste
28945enter-taste
usw.

hinterher markiere die Spalte und gehe zu →Daten→Text in Spalten
mit Option [x]feste Breite
und setze die 4 Trenner unten in der Vorschau

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)

Beitrag von F3K Total »

Nun,
ich habe das mal per Dialog gelöst:
Diese drei kleinen Makros erledigen die Arbeit:

Code: Alles auswählen

REM  *****  BASIC  *****
global otxtrow
global oStartcell
global ncounter

Sub S_init_dlg
    oStartcell = thiscomponent.currentselection
    ncounter = 0
    DialogLibraries.LoadLibrary("Standard")
    odlgrow = CreateUnoDialog(DialogLibraries.Standard.dlgrow)
    otxtrow = odlgrow.getControl("txtrow")
    odlgrow.execute
    odlgrow.Dispose()
End Sub


Sub S_on_text_changed
    stext = otxtrow.Text
    if len(stext) = 5 then
        acrow = aRow(sText)
        ocelladdress = ostartcell.celladdress
        nrow = ocelladdress.row + ncounter
        ncolumn = ocelladdress.column
        nsheet = ocelladdress.sheet
        osheet = thiscomponent.sheets(nsheet)
        for i = 0 to 4
            ocell = osheet.getcellbyposition(ncolumn + i,nrow)
            ocell.value = acrow(i)
        next i
        ncounter = ncounter + 1
        otxtrow.Text = ""
    endif
End Sub

function aRow(srow)
    dim nRow(4) as integer
    for i = 1 to 5
        nRow(i-1) = mid(srow,i,1)
    next i
    arow = nRow
end function
Anbei die Beispieldatei, in der der Dialog definiert ist.
  • Startzelle anklicken
  • Button klicken
  • einstellige Zahlen ohne Pause hintereinander eingeben ...
Viel Spaß beim Tippen
Gruß R
Dateianhänge
easy_fill_five_cells.ods
(10.05 KiB) 137-mal heruntergeladen
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)

Beitrag von clag »

hallo pennylane2,

habe aus hier etwas zusammengebaut
was deine Anforderungen großteils erfüllt
das drücken der Entertaste ist aber nicht störend finde ich,
wenn man die Zahlen mit links eintippt und mit rechts die Entertaste bedient
der Rest ist dann wie gewünscht :)
auswertung.ods
(11.75 KiB) 114-mal heruntergeladen
und zu beginn den "listener" starten :wink:
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)

Beitrag von F3K Total »

So,
hier nun die Version mit Gültigkeitsprüfung, umschaltbar auf sechs Zahlen.
EDIT: Fehlerhafte Datei gelöscht
Gruß R
Zuletzt geändert von F3K Total am Sa, 21.09.2013 22:07, insgesamt 1-mal geändert.
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)

Beitrag von F3K Total »

Ups,
da habe ich wohl zu speichern vergessen, hier die 5-oder 6-Zahlen Version nochmal richtig.
EDIT Datei gelöscht -> finale Version steht weiter unten
Gruß R
Zuletzt geändert von F3K Total am So, 22.09.2013 13:35, insgesamt 1-mal geändert.
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)

Beitrag von balu »

Hallo Leute,

man-oh-man! Was is denn hier Los? Findet hier etwa "die heiße Schlacht am kalten Buffet" statt? :lol:


Okay, dann möchte ich meine Version auch mal vorstellen.

Zahlen gößer 4 werden nicht akzeptiert, und Buchstaben und Sonderzeichen werden auch nicht angenommen.

Umschalten zwischen 5 oder 6 Zahlen ist auch möglich.

Momentan werden die Zahlen ab A2 eingetragen. Falls das nicht gewünscht, dann bitte sagen.

Wenn eine Falscheingabe statt gefunden hat, so wird das unübersehbar angezeigt. Durch klick auf OK kann man dann den Fehler korrigieren.


Leider bin ich nicht der schnellste, denn sonst hätte ich schon früher mitgemischt :D.
Der Code ist leider auch nicht der schönste und beste, aber es funktioniert alles, falls ich nicht etwas übersehen habe.



Gruß
balu
Dateianhänge
Maximal_5-or-6_Zahlen.ods
(12.51 KiB) 90-mal heruntergeladen
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)

Beitrag von F3K Total »

Hallo Balu,
dankeschön!
Wir sind ja nahezu auf die gleiche Lösung gekommen.
Dein zweiseitiger Dialog für die Fehlermeldung ist Klasse! :-D Da fliegt keine Messagebox unmotiviert herum.
Da ich so einen mehrseitigen Dialog noch nie erstellt habe, habe ich mich gleich mal dran probiert.
Anbei das Ergebnis.
Gruß R
EDIT Datei nochmal getauscht, irgendwie habe ich heute Probleme mit dem Speichern, so hatte ich es gedacht:
Dateianhänge
easy_fill_five_six_cells.ods
Messagebox gegen mehrseitigen Dialog getauscht
(10.61 KiB) 99-mal heruntergeladen
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)

Beitrag von balu »

Hallo R,
irgendwie habe ich heute Probleme mit dem Speichern
Na Du hast aber Probleme :lol:
Ich hatte einen Knoten im Hirn, weil ich nicht wusste wie ich die Überprüfung auf ungleich Zahlen und größer 4 bewerkstelligen sollte *grrrrrrr*. Und dadurch ist das Dialog-Layout in den Hintergrund getreten -{Ich werde jetzt aber auch nix mehr dran ändern}-.

dankeschön!
Gern geschehn!

Wir sind ja nahezu auf die gleiche Lösung gekommen.
So war wohl nicht die Vorgabe, aber ich fand "unsere" Idee irgendwie am effizientesten. Und dennoch, so auf den ersten Blick ähnlich, aber doch sehr unterschiedlich. Seis der Dialog, oder der Code.
Ich finde aber doch das wir das bis jetzt sehr gut gemacht haben. *Daumen-hoch*


Da ich so einen mehrseitigen Dialog noch nie erstellt habe, habe ich mich gleich mal dran probiert.
Viel kann man am lebenden Objekt lernen. Oder anders gesagt; durch eine Vorgabe wird man ganz anders motiviert :wink:.
Hast Du aber auch gut hinbekommen.


[OT]
So'n kleines Battle sollte man ruhig öfters machen :D.
[/OT]



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)

Beitrag von balu »

Hallo penny,
Und ihr zwei, F3K und balu, ihr zaubert mir da exakt das hin, was ich mir erträumt hatte
Ich sage mal für meinen Teil: Danke schön :D

Kann ich unfallfrei den Text der Buttons und der Falscheingabemeldungen ändern oder muss ich das auch von euch machen lassen ?
Für einen Anfänger in der Programmierung ist das für den Anfang etwas verwirrend. Und aus diesem Grunde habe ich mich mal mit http://translate.google.de/ auseinander gesetzt, und versucht das ganze für dich zu erledigen. Wenn es irgendwo nicht so recht passt, dann sag bitte schön was wo geändert werden müsste.

Vielleicht meldet sich ja noch jemand der dir genau erklärt wie man im Dialog Änderungen vornimmt. Ich mache jetzt auf jeden Fall gleich Feierabend. Haia-Bettchen ruft mich.


balu hat geschrieben: Und dadurch ist das Dialog-Layout in den Hintergrund getreten -{Ich werde jetzt aber auch nix mehr dran ändern}-.
Nun hab ich es doch noch ein wenig geändert.

Ich hoffe das die Datei bei dir technisch fehlerfrei funktioniert.



Gruß
balu
Dateianhänge
Maximal_5-or-6_Zahlen_v2.ods
(13.05 KiB) 116-mal heruntergeladen
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)

Beitrag von F3K Total »

Moin,
pennylane2 hat geschrieben:Kann ich unfallfrei den Text der Buttons und der Falscheingabemeldungen ändern oder muss ich das auch von euch machen lassen ?
Balu hat es schon, für meinen Teil:
Klar, kannst Du machen, wenn Du Probleme hast, melde Dich.
Gruß R
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Makro zur Vereinfachung von Datenerfassung ? (OO 4.0.0)

Beitrag von F3K Total »

Hi,
bin doch noch mal drangewesen, weil mir noch zwei, drei kleine Verbesserungen eingefallen sind:
  • feststehende Kopfzeile
  • große Schrift im Dialog, für den Vorlesenden zum mitgucken
  • Cursor springt mit, man sieht die aktuelle Zeile
EDIT Datei gelöscht -> finale Version steht weiter unten
Gruß R
Zuletzt geändert von F3K Total am So, 22.09.2013 13:34, insgesamt 1-mal geändert.
Antworten