wie kann ich eine zweite Variable deklarieren!

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

Moderator: Moderatoren

JtfF
**
Beiträge: 25
Registriert: So, 24.03.2013 08:32

wie kann ich eine zweite Variable deklarieren!

Beitrag von JtfF »

Ich habe eine ganz blöde Frage aber ich konnte trotz suche nichts finden.

Im Quellcode habe ich "mySheet" und "Sheet", da ich leider nicht weiß wie ich das syntaktisch schreiben soll um mehrere Variablen unter
einen Hut "mysheet = Thiscomponent.sheets.getbyname("Timetable") zu bekommen?

Es kann doch nicht sein das ich immer die ....

mysheet = Thiscomponent.sheets.getbyname("Timetable")
myDoc = thisComponent
mySheet = myDoc.sheets(0)

drei Befehle für jede Variable neu schreiben muss?

Ich denke ich bin einfach zu blöde das zu kapieren. Mit VB hatte ich solche grundlegenden Probleme eigentlich nicht. Bin aber auch in VB keine große Leuchte gewesen da ich ja nur von Jahrzehnt zu Jahrzehnt ab und an etwas Programmcode erzeuge.

Ich danke schon mal für einen Tipp!
sub mypdf
mysheet = Thiscomponent.sheets.getbyname("Timetable")
myDoc = thisComponent
mySheet = myDoc.sheets(0)

dim args2(1) as new com.sun.star.beans.PropertyValue
dim Arg(0) as new com.sun.star.beans.PropertyValue

Doc = ThisComponent
Controller = Doc.CurrentController
Sheet = Doc.Sheets.getByName("Timetable")
CellRange = Sheet.getCellRangeByName("$QC$107:$QK$139")
Controller.select(CellRange)


mycell = mysheet.getCellByPosition(51,1)
'...Wert auslesen
myValue=mycell.value
a = myValue
' msgbox(a)

Cell = Sheet.getCellByPosition(443 + a,3)

Arg(0).Name = "Selection"
Arg(0).Value = CellRange

args2(0).Name = "FilterName"
args2(0).Value = "calc_pdf_Export"
args2(1).Name = "FilterData"
args2(1).Value = Arg()
Doc.storeToURL("file:/"& Cell.getString()&".pdf",args2())
end sub REM = = = = = = = = = = = = = = = = = = = = = =
LG aus dem endlich sonnigen und warmen Wien!
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: wie kann ich eine zweite Variable deklarieren!

Beitrag von F3K Total »

Hallo,
ich versuche es dir zu erklären:
Es gibt das Calc-Dokument, auf das meistens mit

Code: Alles auswählen

ThisComponent
zugegriffen wird.
Man kann jeglichen Namen, der die Basic-Syntax erfüllt, verwenden, um das Calc Dokument einer Variablen zuzuweisen, z.B.

Code: Alles auswählen

Mydoc = ThisComponent
odoc = ThisComponent
document = ThisComponent
meinverschissenesCalcdokument = ThisComponent
In dem Calc Dokument gibt es Tabellenblätter, diese liegen allesamt im Container (wie ein Ordner)

Code: Alles auswählen

.Sheets
Das erste Tabellenblatt hat immer den Index 0, das zweite den Index 1, das dritte den Index 2
Angenomme das erste heißt "Tabelle1", das zweite "Tabelle 2"
und du verwendest selbst erfundene Variablennamen dann ginge z.B.

Code: Alles auswählen

meineTabelle1 = Thiscomponent.sheets.getbyname("Tabelle1")
genauso wie

Code: Alles auswählen

meineTabelle1 = meinverschissenesCalcdokument.sheets.getbyindex(0)
genauso wie

Code: Alles auswählen

meineTabelle1 = meinverschissenesCalcdokument.sheets(0)
genauso wie

Code: Alles auswählen

osheet = odoc.sheets.getbyname("Tabelle1")
usw. usw.
um auf das erste Tabellenblatt mit dem Namen "Tabelle1" zuzugreifen.

Deine drei Zeile sind also eine zuviel.
Mit

Code: Alles auswählen

mysheet = Thiscomponent.sheets.getbyname("Timetable")
weist du der Variablen mysheet die Tabelle mit dem Namen Timetable zu, um diese Zuweisung zwei Zeilen später mit

Code: Alles auswählen

mySheet = myDoc.sheets(0)
durch das erste Tabellenblatt zu überschreiben.
Wenn das erste Tabellenblatt Timetable heißt, merkst du den Fehler nicht, ist es aber das zweite, was so heißt, gibts Verwirrungen.

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

Re: wie kann ich eine zweite Variable deklarieren!

Beitrag von Karolus »

Hallo
Mit VB hatte ich solche grundlegenden Probleme eigentlich nicht.
Die Aussage ist Quatsch weil sich die grundsätzliche Syntax in beiden Dialekten keinen Deut unterscheidet
VB ist höchstens noch etwas verschwurbelter aufgemotzt in der Weise wie Objekte angesprochen werden.

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: wie kann ich eine zweite Variable deklarieren!

Beitrag von juetho »

Noch eine Ergänzung.
JtfF hat geschrieben:Im Quellcode habe ich "mySheet" und "Sheet", da ich leider nicht weiß wie ich das syntaktisch schreiben soll um mehrere Variablen unter
einen Hut "mysheet = Thiscomponent.sheets.getbyname("Timetable") zu bekommen?

Es kann doch nicht sein das ich immer die ....

Code: Alles auswählen

mysheet = Thiscomponent.sheets.getbyname("Timetable")
myDoc = thisComponent
mySheet = myDoc.sheets(0)
drei Befehle für jede Variable neu schreiben muss?
Du schreibst von "jede Variable" bzw. "mehrere Variablen", aber tatsächlich wird immer dieselbe (!) Variable mysheet benutzt, die nur immer wieder anderen Inhalt erhält.

Wenn du wiederholt den Zugriff auf verschiedene Tabellen benötigst, kannst du am einfachsten mehrere Variablen deklarieren und benutzen:

Code: Alles auswählen

DIm sheetTimeTable as object
Dim sheetAdress as object
sheetTimeTable = thisComponent.sheets.getByName("Timetable")
sheetAdress =  thisComponent.sheets.getByName("Adress")
In deinem Beispielcode hast du dagegen mehrere Variable für jeweils denselben Sachverhalt verwendet (mysheet und Sheet, myDoc und Doc). Das verwirrt (auch dich selbst) und ist vermutlich darauf zurückzuführen, dass der Code aus verschiedenen Quellen zusammenkopiert wurde. Gehe einfach Schritt für Schritt durch: Variable deklarieren, Variable zuweisen (aber pro Sachverhalt nur einmal), Variable verwenden/auswerten.

Hast du bei den Handbüchern die "Einführung in Makros" gelesen? Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
JtfF
**
Beiträge: 25
Registriert: So, 24.03.2013 08:32

Re: wie kann ich eine zweite Variable deklarieren!

Beitrag von JtfF »

Ja wie wahr! Zusammenkopiert ich gestehe!!!! *g*, aber auch nach eigenen Wünschen ein wenig abgeändert, man beschäftigt sich mit der Materie.

Und auch vielen Dank für die detaillierte Beschreibung was sich hinter jedem Aufruf verbirgt. Das erhellt ungemein, super!!!

"Ihr erstes Makros" Hatte ich noch nicht das Vergnügen wird aber gerade rein gezogen.


Aber trotzdem vielen Dank für eure unermüdliche Hilfe im Kampf gegen den schlechten Programmier-Stiel!!

Liebe Grüße aus Wien

Josef
Antworten