[Gelöst] Kommentar in Calc per Makrobefehl einfügen
Moderator: Moderatoren
[Gelöst] Kommentar in Calc per Makrobefehl einfügen
Hallo zusammen,
kann mir jemand sagen, mit welchem Befehl ich einen Kommentar (englisch übers Menü Insert, Comment) z. B. in Calc in A1 schreiben kann oder ihn auch wieder von dort lösche (oder die Bemerkung, die in A1 steht, in eine Variable einlese).
Hintergrund meiner Frage ist, dass ich mit einer Datenbank arbeite und mit einer Calctabelle. In beiden sind eine Liste von Kunden verzeichnet, also eigentlich habe ich doppelte Datenhaltung, aber das läßt sich ja nicht immer vermeiden ...
In der Calctabelle steht vorne immer die ID aus der Datenbank, also kann ich die Daten problemlos zuordnen.
Jetzt möchte ich bestimmte Informationen aus der Datenbank von Zeit zu Zeit nach Calc schreiben, z. B. per Buttonklick oder vielleicht auch jedes Mal beim Öffnen der Calctabelle, und zwar als Kommentar in die jeweilige Zelle, wo der Kundenname steht. so dass man zumindest bestimmte Daten, die sonst nur über die Datenbank einzusehen wären, als Anwender leicht nachlesen kann. Beispielsweise die letzten Umsätze des Kunden; Als Fließtext mit Zeilenumbruch paßt soetwas ja prima in ein Kommentarfeld hinein.
Danke,
Reginald
kann mir jemand sagen, mit welchem Befehl ich einen Kommentar (englisch übers Menü Insert, Comment) z. B. in Calc in A1 schreiben kann oder ihn auch wieder von dort lösche (oder die Bemerkung, die in A1 steht, in eine Variable einlese).
Hintergrund meiner Frage ist, dass ich mit einer Datenbank arbeite und mit einer Calctabelle. In beiden sind eine Liste von Kunden verzeichnet, also eigentlich habe ich doppelte Datenhaltung, aber das läßt sich ja nicht immer vermeiden ...
In der Calctabelle steht vorne immer die ID aus der Datenbank, also kann ich die Daten problemlos zuordnen.
Jetzt möchte ich bestimmte Informationen aus der Datenbank von Zeit zu Zeit nach Calc schreiben, z. B. per Buttonklick oder vielleicht auch jedes Mal beim Öffnen der Calctabelle, und zwar als Kommentar in die jeweilige Zelle, wo der Kundenname steht. so dass man zumindest bestimmte Daten, die sonst nur über die Datenbank einzusehen wären, als Anwender leicht nachlesen kann. Beispielsweise die letzten Umsätze des Kunden; Als Fließtext mit Zeilenumbruch paßt soetwas ja prima in ein Kommentarfeld hinein.
Danke,
Reginald
Zuletzt geändert von Reginald am Di, 14.02.2012 00:29, insgesamt 1-mal geändert.
Re: Kommentar in Calc per Makrobefehl einfügen
Hallo Reginald,
einen Tipp zur Teillösung findest Du bei Dannenhöfer.
http://www.dannenhoefer.de/faqstarbasic ... otizInsert
Gruß
balu
einen Tipp zur Teillösung findest Du bei Dannenhöfer.
http://www.dannenhoefer.de/faqstarbasic ... otizInsert
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
wehr rächtschraipfähler findet khan si behalden

Re: Kommentar in Calc per Makrobefehl einfügen
Hallo balu,
ja, das hilft. Also er schlägt zwei Ansätze vor:
Das funktioniert gut. Wenn man den Kommentar löschen möchte, einfach als Text "" eingeben.
Bei dem hier passiert leider gar nichts bei mir:
Grüße
Reginald
ja, das hilft. Also er schlägt zwei Ansätze vor:
Code: Alles auswählen
oSheet = thisComponent.sheets(0)
oCell = oSheet.getCellRangeByName("A1")
stCellAddress=oCell.CellAddress
oSheet.getAnnotations.insertNew(stCellAddress, "Das ist eine Info")
Bei dem hier passiert leider gar nichts bei mir:
Code: Alles auswählen
oDoc = thisComponent
oSheet = oDoc.sheets(0)
oCell = oSheet.getCellRangeByName("A1")
oCell.annotation.string="Hallo2"
Reginald
Re: [Gelöst] Kommentar in Calc per Makrobefehl einfügen
Hallo
Karo
Er schlägt nicht zwei Ansätze vor, sondern schreibt, daß der obere Code zur 'ersten Initialisierung' einer Notiz gebraucht wird, und der untere dann zum Überschreiben einer vorhandenen Notiz genutzt werden kann.ja, das hilft. Also er schlägt zwei Ansätze vor:
Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: [Gelöst] Kommentar in Calc per Makrobefehl einfügen
Auch gut!
Sag mal, bei manueller Bedienung von Calc kann ich den Text ja auch noch formatieren (fett, Schrifart ändern ...) und die Größe des Kommentarfeldes anpassen.
Geht das auch irgendwie über den Code?
Nächtliche Grüße
Reginald
Sag mal, bei manueller Bedienung von Calc kann ich den Text ja auch noch formatieren (fett, Schrifart ändern ...) und die Größe des Kommentarfeldes anpassen.
Geht das auch irgendwie über den Code?
Nächtliche Grüße
Reginald
Re: [Gelöst] Kommentar in Calc per Makrobefehl einfügen
Hallo Leute!
@Karo
Theoretisch ist das ja wohl laut XRAY richtig.
Oder widersprichst Du dem?
Was mich aber momentan noch zusätzlich verwirrt, ist der Umstand das IsVisible in beiden Codes keine Funktion hat, so machts zumindest bei mir den Anschein.
Egal ob ich das im 1. oder aber im 2. Code anwende, und egal ob mit True oder False, es passiert nichts. Oder kann man damit die Notiz (Notizanzeiger?) nicht Ein- und Ausschalten? Das Frage ich mich wirklich.
So, und nun noch mal ganz deutlich und sehr langsam zum mitschreiben, warum Michal Dannenhöfer wirklich und unumstößlich von Z W E I verschiedenen Wegen dort spricht.
- Wir arbeiten mit falschen OOo-Versionen!
Glaubst Du nicht?
Ich aber schon!
Und warum?
- Weil beide Codes in OOo 2.3.1 genau so funktionieren, wie vorgesehen!
Achtung!
Kein Schreibfehler!
Ich meine wirklich die 2.3.1, und nicht die 3.2.1!
Und was sagst Du nun?
Lieber Karo, ich wollt dir bestimmt nicht Krumm kommen, aber ich meinte mich daran zu erinnern, das die Codes "früher" mal funktionierten. Und das habe ich ja eben wieder festgestellt, und bewiesen.
@Reginald
Falls Du es noch nicht hast, besorg dir Bitte das Tool XRAY. Damit kannst Du die Notizen untersuchen und manipulieren.
Gruß
balu
@Karo
Sorry, aber Du hast diesmal eine merkwürdige Art geschriebenes zu interpretieren. Denn er schlägt DOCH zwei Ansätze vor!Er schlägt nicht zwei Ansätze vor, sondern schreibt, daß der obere Code zur 'ersten Initialisierung' einer Notiz gebraucht wird, und der untere dann zum Überschreiben einer vorhandenen Notiz genutzt werden kann.
Ohne Zweifel, das ist der 1. Weg.www.dannenhoefer.de hat geschrieben: Es gibt zwei Wege Notizen einzufügen. Der erste über getAnnotations mit InsertNew.
Und das heißt ja dann wohl ohne Zweifel, das dies der 2. Weg ist. Jedoch funktioniert er nicht mehr.www.dannenhoefer.de hat geschrieben: Der zweite geht über die Zelle dirket.
Theoretisch ist das ja wohl laut XRAY richtig.
Code: Alles auswählen
oCell.annotation.string="Hallo2"
Was mich aber momentan noch zusätzlich verwirrt, ist der Umstand das IsVisible in beiden Codes keine Funktion hat, so machts zumindest bei mir den Anschein.
Code: Alles auswählen
oCell.Annotation.IsVisible = false
So, und nun noch mal ganz deutlich und sehr langsam zum mitschreiben, warum Michal Dannenhöfer wirklich und unumstößlich von Z W E I verschiedenen Wegen dort spricht.
- Wir arbeiten mit falschen OOo-Versionen!
Glaubst Du nicht?
Ich aber schon!
Und warum?
- Weil beide Codes in OOo 2.3.1 genau so funktionieren, wie vorgesehen!
Achtung!
Kein Schreibfehler!
Ich meine wirklich die 2.3.1, und nicht die 3.2.1!
Und was sagst Du nun?
Lieber Karo, ich wollt dir bestimmt nicht Krumm kommen, aber ich meinte mich daran zu erinnern, das die Codes "früher" mal funktionierten. Und das habe ich ja eben wieder festgestellt, und bewiesen.
@Reginald
Falls Du es noch nicht hast, besorg dir Bitte das Tool XRAY. Damit kannst Du die Notizen untersuchen und manipulieren.
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
wehr rächtschraipfähler findet khan si behalden

Re: [Gelöst] Kommentar in Calc per Makrobefehl einfügen
Hallo
@Balu
Ok, ich hatte mir aktuell Michaels Seite nicht nochmal angeschaut, und nehme die Behauptung "Michael hätte das anders geschrieben" zurück.
Bei einem aktuellen LO3.4.2 ist es jedoch so wie ich beschrieben habe, ein Version 2.xx hab ich gerade nicht mehr zum Testen.
Wenn es bei einer 2.xx auf beide Arten funktioniert hat Michael (damals) auch nichts falsches geschrieben, nur bei OOo/LO hat sich inzwischen etwas geändert .
Gruß Karo
@Balu
Ok, ich hatte mir aktuell Michaels Seite nicht nochmal angeschaut, und nehme die Behauptung "Michael hätte das anders geschrieben" zurück.
Bei einem aktuellen LO3.4.2 ist es jedoch so wie ich beschrieben habe, ein Version 2.xx hab ich gerade nicht mehr zum Testen.
Wenn es bei einer 2.xx auf beide Arten funktioniert hat Michael (damals) auch nichts falsches geschrieben, nur bei OOo/LO hat sich inzwischen etwas geändert .
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: [Gelöst] Kommentar in Calc per Makrobefehl einfügen
Hallo zusammen,
ich habe jetzt mal testweise das realisiert, was ich ja eigentlich vorhatte, nämlich Felder aus einer Datenbank auszulesen und in das Kommentarfeld in Calc zu schreiben, und zwar dort, wo die ID eben mit Base / mySQL identisch ist, um so zu einem Datensatz in Calc eben noch massig Detailinformationen zum Ansehen zu hinterlegen, ohne immer nach Base wechseln zu müssen (und nicht jeder Anwender hier hat Zugriff auf die Datenbank oder kennt sich damit aus ...)
Ich habe hier einfach mal Vorname und Nachname aus Base ausgelesen und ins Kommentarfeld geschrieben. Jetzt möchte ich aber auch Beispielsweise Details einer 1:n verknüpften Tabelle mit einbinden. Jeder Mitarbeiter, den ich mir anzeigen lasse, hat Kurse besucht, die in einer Detailtabelle stehen.
So in der Art:
SELECT Datum, Thema FROM Kurse WHERE KURSID = ID
Das ergibt mir dann irgendwas zwischen 0 und 10 Datensätzen, die ich an meinen Kommentarstring ("CommentS", siehe unten) anfügen möchte, aber ganz so einfach kann das nicht sein, ist ja schließlich, anders als ein Vorname, nicht nur ein Feld sondern keines bis viele ...
Und da verließen sie ihn ...
Ideen?
Gruß
Reginald
ich habe jetzt mal testweise das realisiert, was ich ja eigentlich vorhatte, nämlich Felder aus einer Datenbank auszulesen und in das Kommentarfeld in Calc zu schreiben, und zwar dort, wo die ID eben mit Base / mySQL identisch ist, um so zu einem Datensatz in Calc eben noch massig Detailinformationen zum Ansehen zu hinterlegen, ohne immer nach Base wechseln zu müssen (und nicht jeder Anwender hier hat Zugriff auf die Datenbank oder kennt sich damit aus ...)
Ich habe hier einfach mal Vorname und Nachname aus Base ausgelesen und ins Kommentarfeld geschrieben. Jetzt möchte ich aber auch Beispielsweise Details einer 1:n verknüpften Tabelle mit einbinden. Jeder Mitarbeiter, den ich mir anzeigen lasse, hat Kurse besucht, die in einer Detailtabelle stehen.
So in der Art:
SELECT Datum, Thema FROM Kurse WHERE KURSID = ID
Das ergibt mir dann irgendwas zwischen 0 und 10 Datensätzen, die ich an meinen Kommentarstring ("CommentS", siehe unten) anfügen möchte, aber ganz so einfach kann das nicht sein, ist ja schließlich, anders als ein Vorname, nicht nur ein Feld sondern keines bis viele ...
Und da verließen sie ihn ...
Ideen?
Gruß
Reginald
Code: Alles auswählen
Dim CommentS, Org as String
Dim CommentColumn, StartRow, EndRow, IDColumn, OrgColumn, Row as Integer
oDatabaseContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
oDataSource = oDatabaseContext.getByName("testdatenbank") 'Da muß der DB Name rein
oConnection = oDataSource.GetConnection("","") 'bleibt leer
oSheet = thisComponent.sheets(0)
CommentColumn = 2
StartRow = 1
EndRow = 10
IDColumn = 1 'In welcher Spalte steht die ID, welche Calc mit Base vernüpft?
For Row = StartRow to EndRow
oCell = oSheet.getCellByPosition(IDColumn,Row)
ID = oCell.Value
oCell = oSheet.getCellByPosition(OrgColumn,Row)
If ID > 0 Then 'Nur wenn auch wirklich eine ID da ist
oCell = oSheet.getCellByPosition(CommentColumn,Row)
myCellAddress=oCell.CellAddress
oSheet.getAnnotations.insertNew(myCellAddress, "") 'Delete the comment - nur zur Sicherheit.
'Hier jetzt die Verbindung zur Datenbank
oStatement = oConnection.createStatement
sSQL = "SELECT `FirstName` From `Staff` WHERE `ID` = " & ID
oResult = oStatement.executeQuery(sSQL)
If oResult.Next Then
FirstName=oResult.getString(1)
End If
oStatement = oConnection.createStatement
sSQL = "SELECT `LastName` From `Staff` WHERE `ID` = " & ID
oResult = oStatement.executeQuery(sSQL)
If oResult.Next Then
LastName=oResult.getString(1)
End If
CommentS = "ID: " & ID & Chr(13) & "Name: " & FirstName & " " & LastName
oSheet.getAnnotations.insertNew(myCellAddress, CommentS)
End If
Next Row