🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.

🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀

❤️ 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. 🤗

Was muss in eine Abfrage?

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Freischreiber
* LO-Experte *
Beiträge: 829
Registriert: Fr 28. Mär 2014, 10:41

Re: Was muss in eine Abfrage?

Beitrag von Freischreiber » Do 17. Apr 2014, 18:00

Hallo Robert,

vielen Dank für die vielen Informationen, die ich leider noch nicht nachvollziehen konnte.

Vorab möchte ich deine Fragen beantworten:

Im jetzigen Bestand habe ich von vielen Personen noch nicht einmal EINE Bankverbindung. Die Auslagerung in eine eigene Tabelle habe ich deshalb gemacht, um die Haupttabelle nicht aufzublähen. Ähnliches gilt für das Bemerkungsfeld, wo ich nur bei den Datensätzen Speicherplatz reservieren wollte, wo wirklich eine Bemerkung steht. Und weil ich mal gehört habe, daß man das eben mit Datenbanken so macht, Normalisieren. Die Bestandsdaten (über 1000 Adressen) sind jetzt auch alle schon in dieser Form aufgeteilt.

Mehrere Bankverbindungen pro Person können vorkommen. Mehrere Bemerkungsfelder pro Adresse nicht.
Bankverbindung und Bemerkung müssen zur Zeit nicht ausgewertet oder übergeben werden irgendwohin, nur angezeigt und editiert.

Häufig kommen mehrere Kontaktnummern/-adressen vor pro Person (Telefon, Handy, Fax, Mail, URL). Das alles eingeben zu können, auch wenn einer zwei Handies und drei Mailadressen hat, wäre schon wichtig. Hier wäre auch die Übergabe an einen Brief per Makro wichtig, als Adresse mit dem Zusatz "per Fax: ..." oder "per Mail: ...".

Wäre t-kontakte einfacher mit einem kombinierten Primärschlüssel? Aber mehrere Handynummern oder Mailadressen gehen dann nicht, oder?

Viele Grüße
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Was muss in eine Abfrage?

Beitrag von RobertG » Fr 18. Apr 2014, 12:02

Hallo Freischreiber,

ich hänge einmal eine überarbeitete Version Deiner DB an. Da ich die Vorlage für den Ausdruck nicht habe, habe ich natürlich auch das Makro bisher nicht eingebunden.

Gruß

Robert
Dateianhänge
Musterdatenbank.odb.zip
Musterdatenbank mit Formular
(15.42 KiB) 247-mal heruntergeladen
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

Freischreiber
* LO-Experte *
Beiträge: 829
Registriert: Fr 28. Mär 2014, 10:41

Re: Was muss in eine Abfrage?

Beitrag von Freischreiber » Sa 19. Apr 2014, 15:47

Hallo Robert,

vielen Dank, das sieht sehr gut aus.

Allerdings habe ich mit dem kombinierten Primärschlüssel bei t-kontakte tatsächlich Probleme. Bei den Bestandsdaten kann ich die Schlüssel so nicht setzen, weil es zu oft vorkommt, daß z. B. zwei Handynummern oder Mailadressen zu einer Adresse gespeichert sind. Kann man es nicht mit eigener ID machen?
Bei t-adressbemerkungen ist es kein Problem.

Anliegend erhältst du die Briefvorlage mit Platzhaltern für das Adreßfeld. Soweit ich weiß, braucht das Textfield-Makro nur diese Platzhalter mit der gleichen Bezeichnung wie das Quellfeld.

Viele Grüße
Freischreiber
Dateianhänge
Musterdatenbank Briefvorlage.zip
(9.13 KiB) 237-mal heruntergeladen
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Was muss in eine Abfrage?

Beitrag von RobertG » So 20. Apr 2014, 18:49

Hallo Freischreiber,

das habe ich natürlich nicht berücksichtigt:
Handynummer 1, 2, 3 usw. (wo ich nicht einmal eins habe) und auch noch verschiedene Mailadressen. Da hast Du dann natürlich Recht, dass in die entsprechende Tabelle ein separater Schlüssel gehört.

Ich habe jetzt leider nicht mehr die Zeit, mich da noch dran zu setzen. Vom Prinzip her musst Du nur die Tabelle t-Kontakte aus Extras → Beziehungen löschen und abspeichern, die Änderung in der Tabelle vornehmen und dann die Tabelle wieder einfügen.

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

Freischreiber
* LO-Experte *
Beiträge: 829
Registriert: Fr 28. Mär 2014, 10:41

Re: Was muss in eine Abfrage?

Beitrag von Freischreiber » Mo 21. Apr 2014, 09:54

Hallo Robert,

es geht nicht. Ich bekomme die Tabelle nicht wieder so hin, wie sie war.

Ich kann eine ID-Spalte einfügen, aber nur am Ende, nicht als erste Spalte. Und wenn ich sie speichern will, heißt es: "Attempt to insert null into a non-nullable column..." ??

Hast du mit "nicht mehr die Zeit" den Tag gemeint, oder überhaupt?

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

Freischreiber
* LO-Experte *
Beiträge: 829
Registriert: Fr 28. Mär 2014, 10:41

Re: Was muss in eine Abfrage?

Beitrag von Freischreiber » Mo 21. Apr 2014, 10:13

Hallo Robert,

Es ist zum Verzweifeln. Jetzt wollte ich nochmal mit meiner ursprünglichen Musterdatenbank, s. o., anfangen, weil dort die t-kontakte vollständig ist, und wollte die t-adressbemerkungen so vereinfachen, wie du es gemacht hattest (AdressID als Primärschlüssel).

Da kommt auch eine Fehlermeldung, wieder eine andere:
SQL-Status: S0011
Fehler-Code: -25
Attempt to drop the primary key in statement [ALTER TABLE "t-adressbemerkungen" ADD PRIMARY KEY ("AdressID")]

Beide gescheiterten Änderungsversuche natürlich mit gelöschten Relationen und Speicherung der Löschung. Was mache ich falsch?

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

Freischreiber
* LO-Experte *
Beiträge: 829
Registriert: Fr 28. Mär 2014, 10:41

Re: Was muss in eine Abfrage?

Beitrag von Freischreiber » Mo 21. Apr 2014, 10:39

Hallo Robert,

das ist wirklich ein seltsames Verhalten von Base: Beide oben zitierten Fehlermeldungen haben anscheinend wenig zu bedeuten, Base hat die Änderungen am Primärschlüssel trotzdem übernommen, was man nach Schließen und Neustarten der Datenbank sehen konnte! Sind diese Meldungen ein Bug?

Jedenfalls habe ich im Anhang
- bei t-kontakte den Index wieder eingeführt
- das Makro eingebaut
- das Formular um einen Faxknopf ergänzt und
- die Briefvorlage ausprobiert.

Ergebnis wie befürchtet: Die Faxnummer wird nicht übernommen. Was mache ich jetzt? Mein Wunschtraum wäre, daß die gerade markierte Faxnummer (im Beispiel sind zwei angelegt) in den Brief übernommen wird.

Gruß
Freischreiber
Dateianhänge
Musterdatenbank RG.zip
(26.52 KiB) 255-mal heruntergeladen
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

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

Re: Was muss in eine Abfrage?

Beitrag von F3K Total » Mo 21. Apr 2014, 12:04

Moin,
wenn Du in deiner Vorlage statt des Platzhalters Fax einen Platzhalter Kontakt setzt und dann dieses Makro verwendest, bekommst du deinen Wunschtraum, verbessert, denn wenn du eine Mailadresse markiert hast ...

Code: Alles auswählen

REM  *****  BASIC  *****

Sub Main
	oDoc = thisComponent
	oForm = oDoc.Drawpage.Forms(0)
	oFormKontakt = oForm.getbyname("FormKontakt")
    oColumns = oForm.Columns
    nKontakt = oFormKontakt.getint(oFormKontakt.findcolumn("KontaktartID"))
    scurrentKontakt = oFormKontakt.getString(oFormKontakt.findcolumn("Nummer"))
    select case nKontakt
    case 3
	   scurrentKontakt = "Per Fax: " & scurrentKontakt	   	   	   
    case 6
       scurrentKontakt = "Per E-Mail: " & scurrentKontakt
	Case else
	   scurrentKontakt = ""
	end select
	REM Pfad zur Vorlage zusammensetzen
	Globalscope.BasicLibraries.loadLibrary("Tools")
	sURL = oDoc.Parent.URL
	sURL = DirectoryNameoutofPath(sURL,"/") & "/"
	sURL = sURL & "Musterdatenbank Briefvorlage.ott"
	REM Vorlage öffnen
	Dim args(0) as new com.sun.star.beans.PropertyValue
	args(0).Name = "AsTemplate"
	args(0).Value = True
	newDoc = StarDesktop.loadComponentFromURL(sURL,"_blank",0,args)
	REM Textfelder holen
	enumTextfields = newDoc.Textfields.createEnumeration	
	Do While enumTextfields.hasMoreElements
		thisTextfield = enumTextfields.nextElement		
		If thisTextfield.supportsService("com.sun.star.text.TextField.JumpEdit") Then
			sColumnname = thisTextfield.PlaceHolder
			if thisTextfield.PlaceHolder = "Kontakt" Then 'Sonderfall vom Unterformular kommt	
			    thisTextfield.Anchor.String = scurrentKontakt
			end if
			If oColumns.hasByName(sColumnname) Then
				nIndex = oForm.findColumn(sColumnname)
				thisTextfield.Anchor.String = oForm.getString(nIndex)
			End If
					
		End If
	Loop
End Sub
HTH R
Windows 11: AOO, LO Linux Mint: AOO, LO

Freischreiber
* LO-Experte *
Beiträge: 829
Registriert: Fr 28. Mär 2014, 10:41

Re: Was muss in eine Abfrage?

Beitrag von Freischreiber » Mo 21. Apr 2014, 14:17

Hallo F3K Total!

...wenn ich eine Mailadresse markiert habe, dann schreibt er die Mailadresse rein! Und wenn aus Versehen eine Telefonnummer markiert ist, dann schreibt er gar nichts! Genial!

Du baust dem Textfield-Makro ein fallabhängiges Textfeld, das dann verarbeitet wird wie die sichtbaren Textfelder auch? :idea:

Als Anhang hab ich nochmal die aktuelle Version mit deinem Makro und der aktuellen Briefvorlage.

Irgendwann werde ich die Datenbank um Auftragsnummern und ein auftragsbezogenes Formular ergänzen. Von dort soll sich per Button ein Brief öffnen, wo ein markierter Kunde angeschrieben wird. (Mehrere Aufträge können zu mehreren Kunden gehören, das wird wohl eine Zwischentabelle werden).

Darf ich dann nochmal auf dich zukommen, falls ich die Abänderung des Makros nicht schaffe?

Vielen Dank und ein extra Osterhase an RobertG und F3K Total:

(\__/)
(O. o)
(} {)

Gruß
Freischreiber
Dateianhänge
Musterdatenbank RG mit F3K-Textfield-Makro.zip
Normalisierte Adressdatenbank.
Das enthaltene Formular dieser Adressdatenbank ist voll editierbar und öffnet auf Knopfdruck ein Writerdokument mit der markierten Fax- oder Mailadresse. Vielen Dank an DPunch, RobertG und F3K Total!
(26.34 KiB) 343-mal heruntergeladen
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de


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