🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Kleine Wünsche - viel Aufwand ? [Gelöst]

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
jburchardi
Beiträge: 10
Registriert: Di 2. Aug 2011, 22:24
Wohnort: München

Kleine Wünsche - viel Aufwand ? [Gelöst]

Beitrag von jburchardi » Fr 14. Jun 2013, 21:16

Hallo liebe Gemeinde,
ich möchte das Folgende bloß mal zur Diskussion stellen:
Ich habe ein Base-Formular, das u.a. drei Textfelder beinhaltet. Die Eingaben sollten immer mit einem Anfangs-Großbuchstaben versehen sein (wg. Suchen, Gruppierung etc.). Das folgende Makro wird immer über das Ereignis "Fokusverlust" ausgelöst, es funktioniert alles bestens. Es kann sein, dass noch ein paar Anweisungen aus der Testphase enthalten sind.

Code: Alles auswählen

sub Anfang_Gross(oEvent AS Object)

DIM stMessage AS STRING
DIM feldname AS STRING
DIM ID AS LONG

oDatenquelle = ThisComponent.Parent.CurrentController ' Zugriffsmöglichkeit aus dem Formular heraus
IF NOT (oDatenquelle.isConnected()) THEN oDatenquelle.connect()

oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement

fld = oEvent.Source
feldname = fld.Model.Name		'Welches Feld hat das Ereignis ausgelöst?

oDoc = thisComponent
rem oDoc=ThisDatabaseDocument.FormDocuments.getByName( "arztrech" ).open

oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("arztrech")

oFeld = oForm.getByName(feldname)
stInhalt = oFeld.getCurrentValue()
str1 = Ucase(left(stInhalt,1))
str2 = mid(stInhalt,2,len(stInhalt) - 1)
stInhalt = str1 + str2
oFeld.BoundField.updateString(stInhalt)	'geänderten Inhalt in das Feld zurückschreiben

ID = oForm.getLong(1)			'wenn ID=0 -> neuer Datensatz

if ID  > 0 then					'kein neuer Datensatz
oForm.updateRow()				'geänderten Feldinhalt in DB schreiben
oForm.reload()					'und anzeigen
endif

end sub
Ist das nicht ein bisschen viel Aufwand dafür, dass lediglich der erste Buchstabe eines Eingabefeldes immer als Großbuchstabe gespeichert wird und dieses auch gleich nach der Eingabe im Formular angezeigt wird? Diese sofortige Anzeige erforderte nämlich auch die Feststellung, ob es sich um einen neuen Datensatz handelt oder nicht.
Habe ich mit Kanonen auf Spatzen geschossen?
Gruß
Jürgen
Zuletzt geändert von jburchardi am Mi 19. Jun 2013, 20:51, insgesamt 1-mal geändert.
DELL Inspiron 6400, Linux Mint 17.3 (KDE), LO 5.4.3.2

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Kleine Wünsche - viel Aufwand ?

Beitrag von F3K Total » Sa 15. Jun 2013, 01:57

Hi,
jburchardi hat geschrieben:Ist das nicht ein bisschen viel Aufwand...
du hast da einige Dinge drin, die nicht benötigt werden.
Z.B. das Verbinden und createStatement, was du später nicht verwendest.
Ausserdem kannst Du, wenn du mit Event arbeitest, direkt darüber auf die auslösenden Felder zugreifen, ala:

Code: Alles auswählen

sub Anfang_Gross(oEvent)
    oFeld = oEvent.Source.model
    oForm = oFeld.parent
    stInhalt = oFeld.CurrentValue
    str1 = Ucase(left(stInhalt,1))
    str2 = mid(stInhalt,2,len(stInhalt) - 1)
    stInhalt = str1 + str2
    oFeld.BoundField.updateString(stInhalt)   'geänderten Inhalt in das Feld zurückschreiben
    if oForm.isnew then oform.insertrow else oform.updaterow
end sub
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Kleine Wünsche - viel Aufwand ?

Beitrag von gogo » Sa 15. Jun 2013, 14:31

oder noch schlanker so ?

Code: Alles auswählen

sub Anfang_Gross(oEvent)
  with oEvent.Source.model
    .BoundField.updateString(ucase(left(.CurrentValue,1)) & right(.CurrentValue,len(.CurrentValue)-1))
     if .Parent.isnew then .parent.insertrow else .parent.updaterow
  end with
end sub
Allerdings ist das Makro ja nicht unbedingt Dein Problem:
Die Eingaben sollten immer mit einem Anfangs-Großbuchstaben versehen sein (wg. Suchen, Gruppierung etc.).
Einheitliche Referenzen für Gruppierungen löst Du am besten über ein Listenfeld.
Suchfunktionen können 'immer' zwischen case sensitv oder nicht case sensitiv unterscheiden.
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

jburchardi
Beiträge: 10
Registriert: Di 2. Aug 2011, 22:24
Wohnort: München

Re: Kleine Wünsche - viel Aufwand ?

Beitrag von jburchardi » Di 18. Jun 2013, 13:17

An F3K Total und gogo:
Danke für Eure Hinweise, ich werde beides mal ausprobieren.
Vieles ist eben eine Frage der Übung!
Grüße
Jürgen
DELL Inspiron 6400, Linux Mint 17.3 (KDE), LO 5.4.3.2


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten