Basic Programmierung für Calc

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Basic Programmierung für Calc

von Stephan » Mo, 09.08.2004 19:57

und ich hab bloss diese blöden Klammern "dat = CDateFromIso(oDateField.date)"nicht gesetzt bei meinen Versuchen. Was bewirken die denn.
Die Klammern schließen den übergebenen Parameter ein. Ein Äquivalent für:
dat = CDateFromIso(oDateField.date)
ist:
dat = oDateField.date
dat = CDateFromIso(dat)

oder (im Speziellen):
dat = CDateFromIso(20040809)

Stephan

von witchcorp » Mo, 09.08.2004 19:33

Yuchuu es klappt alles :D
und ich hab bloss diese blöden Klammern "dat = CDateFromIso(oDateField.date)"nicht gesetzt bei meinen Versuchen. Was bewirken die denn. Btw ich bin wirklich blutige Anfängerin ich hab mich vor 2 Tagen zum ersten Mal ans Programmieren rangetraut weil ich die Erstellung von Excell-Tabellen für meinen Steuerberater partout mit Openoffice realisieren wollte. Und die Eingabe will man natürlich möglichst komfortabel gestalten :wink: . Herausgekommen ist ein Calc Dokument mit integriertem Kassenbuch und einem einzigen Eingabeformular für die verschiedenen steuerrelevanten betrieblichen Ausgaben "ein bischen stolz guck".
Vielen Dank nochmal für die prompte Hilfe
Bianca

von Stephan » Mo, 09.08.2004 19:01

Hallo Bianca,

Deine Frage nach CdateToIso war so überzeugend gestellt, das ich dachte Du weißt wie das zu handhaben ist. Das Folgende funktioniert:

Code: Alles auswählen

Sub Main
oDoc = ThisComponent 
oSheet = oDoc.Sheets.GetByName("Formular") 
oForm = oSheet.DrawPage.Forms.GetByName("Standard")    
oComboBox = oForm.getByName("oComboBoxArt") 
art = oComboBox.text 
oDateField = oform.getByName("oDateFieldDatum") 
dat = CdateFromIso(oDateField.date)
If art = ("Betriebskosten") Then 
	oSheet = oDoc.Sheets.getByName("Betriebskosten") 
	Cursor = oSheet.createCursor() 
	Cursor.gotoEndOfUsedArea (true) 
	Zeile = Cursor.getRangeAddress().EndRow 
	oCell=oSheet.getCellByPosition(0, Zeile+1) 
	oCell.value = dat
	oDoc.CurrentController.Select(oCell)
	oDoc.CurrentSelection.NumberFormat = 36
End If
End Sub
Gruß
Stephan

von witchcorp » Mo, 09.08.2004 17:11

Hallo Stephan,
er will es nicht nehmen, an keiner Stelle.
Folgende Varianten habe ich probiert:

Code: Alles auswählen

oDoc = ThisComponent 
oSheet = oDoc.Sheets.GetByName("Formular") 
oForm = oSheet.DrawPage.Forms.GetByName("Standard")    
oComboBox = oform.getByName("oComboBoxArt") 
art = oComboBox.text 
oSheet = oDoc.Sheets.GetByName("Formular") 
oForm = oSheet.DrawPage.Forms.GetByName("Standard")    
oDateField = oform.getByName("oDateFieldDatum")
dat = oDateField.date
CdateFromIso

Code: Alles auswählen

If art = ("Betriebskosten") Then
oSheet=oDocument.Sheets.getByName("Betriebskosten")
Cursor = oSheet.createCursor() 
Cursor.gotoEndOfUsedArea (true) 
Zeile = Cursor.getRangeAddress().EndRow 
oCell=oSheet.getCellByPosition(0, Zeile+1) 
oCell.value = dat
CdateFromIso
Dabei habe ich es jeweils davor und dahinter versucht und auch in einer Zeile :cry:
Ich bekomme immer den Fehler ungültiger Prozeduraufruf oder Methode unbekannt.
Bianca

von Stephan » Mo, 09.08.2004 16:14

CdateFromIso

Stephan

von witchcorp » Mo, 09.08.2004 15:57

Vielen Dank,
jetzt klappt alles bis auf die Umwandlung des Datums in das Normalformat. Aus 20040809 sollte noch irgendwas mit Punkten werden.
CdateToIso will er nicht. Wie geht das??
Danke
Bianca

von Charly » Mo, 09.08.2004 11:29

Hallo!

Ich lerne mich gerade auch dem Gebiet ein. Zum Lernen empfehle ich dir folgende Datei:

Fahrtenbuch_Muster.sxc mit der dazugehörigen Dokmentation in PDF.

Darin ist der Umgang mit Eingabemasken in Calc-Dokumenten genau beschrieben.
Du kannst die Datei herunterladen unter folgendem Link

http://www.amt-wiesbaden.de/index.php?z ... t08&rm=r01


Ich hoffe dir hilt das genauso wie mir.


Gruß
Charly

von Stephan » Mo, 09.08.2004 11:21

Hallo Bianca,
1. Wie kann ich die Werte aus den Formularfeldern auslesen, die dann eingetragen werden sollen?
Da das Formular Bestandteil des Calc-Dokuments ist:
ich habe mir vorgenommen eine calc Tabellendokument mit einen Formular zu entwerfen,
z.B. so:

Code: Alles auswählen

Sub auslesen
Dim oDoc As Object
Dim oSheet As Object
Dim oForm As Object
Dim oComboBox As Object
oDoc = ThisComponent
oSheet = oDoc.Sheets.GetByName("Formular")
oForm = oSheet.DrawPage.Forms.GetByName("Standard")	
oComboBox = oform.getByName("ComboBox1")
msgbox oComboBox.text	
End Sub
Dieser Code liest den aktuellen Inhalt des Kombinationsfeldes namens "ComboBox1" auf dem Formular/Tabellenblatt "Formular". (Hinweis: Datumsfelder lesen mit .date und Rückgabewert evtl. in passerndes Format umformen)

2. Wie kann ich die Zellen, in die die Werte kommen sollen so ansprechen, dass immer die nächste leere Zeile verwendet wird.
hier ein Schnipsel:

Code: Alles auswählen

'...
oSheet=oDocument.Sheets.getByName("Betriebskosten")
Cursor = oSheet.createCursor() 
Cursor.gotoEndOfUsedArea (true) 
Zeile = Cursor.getRangeAddress().EndRow 
oCell=oSheet.getCellByPosition(0, Zeile+1) 
oCell.Value = dat 
oCell=oSheet.getCellByPosition(1, Zeile+1) 
oCell.Value = hab 
oCell=oSheet.getCellByPosition(2, Zeile+1) 
oCell.Value = sol 
oCell=oSheet.getCellByPosition(3, Zeile+1) 
oCell.Value = beschr 
'...
Hinweis: Mit oCell.Value kannst Du nur numerische Inhalte übergeben. Da ein Teil Deiner Variablen als String deklariert ist mußt Du die Werte dieser Variablen mittels oCell.String = ... in die Zellen schreiben.


Gruß
Stephan

Basic Programmierung für Calc

von witchcorp » Mo, 09.08.2004 08:43

Hallo,
ich habe mir vorgenommen eine calc Tabellendokument mit einen Formular zu entwerfen, dass diese Tabellen mit Werten füttert. Ich habe dazu zwei Fragen.
1. Wie kann ich die Werte aus den Formularfeldern auslesen, die dann eingetragen werden sollen?
2. Wie kann ich die Zellen, in die die Werte kommen sollen so ansprechen, dass immer die nächste leere Zeile verwendet wird.
Bisher habe ich folgenden Code entwickelt (Bitte nicht lachen, ich bin blutige Anfängerin :oops: )

Private Sub OKButton_Click()
Dim art As String
DIM dat As Long
DIM hab As String
DIM sol As String
DIM beschr As String
DIM oDocument as Object, oSheet as Object, oCell as Object, oComboBox as Object
art = oComboBoxArt
dat = oDateFieldDatum
hab = oTextBoxHaben
sol = oTextBoxSoll
oDocument=ThisComponent
If art = ("Betriebskosten") Then
oSheet=oDocument.Sheets.getByName("Betriebskosten")
oCell=oSheet.getCellByPosition(0, 1)
oCell.Value = dat
oCell=oSheet.getCellByPosition(1, 1)
oCell.Value = hab
oCell=oSheet.getCellByPosition(2, 1)
oCell.Value = sol
oCell=oSheet.getCellByPosition(3, 1)
oCell.Value = beschr
Elseif art = ("Autokosten") Then
oSheet=oDocument.Sheets.getByName("Autokosten")
oCell=oSheet.getCellByPosition(0, 1)
oCell.Value = dat
oCell=oSheet.getCellByPosition(1, 1)
oCell.Value = hab
oCell=oSheet.getCellByPosition(2, 1)
oCell.Value = sol
oCell=oSheet.getCellByPosition(3, 1)
oCell.Value = beschr
Elseif art = ("Mietkosten") Then
oSheet=oDocument.Sheets.getByName("Mietkosten")
oCell=oSheet.getCellByPosition(0, 1)
oCell.Value = dat
oCell=oSheet.getCellByPosition(1, 1)
oCell.Value = hab
oCell=oSheet.getCellByPosition(2, 1)
oCell.Value = sol
oCell=oSheet.getCellByPosition(3, 1)
oCell.Value = beschr
Elseif art = ("Durchlaufende") Then
oSheet=oDocument.Sheets.getByName("Durchlaufende")
oCell=oSheet.getCellByPosition(0, 1)
oCell.Value = dat
oCell=oSheet.getCellByPosition(1, 1)
oCell.Value = hab
oCell=oSheet.getCellByPosition(2, 1)
oCell.Value = sol
oCell=oSheet.getCellByPosition(3, 1)
oCell.Value = beschr
Elseif art = ("Einnahmen") Then
oSheet=oDocument.Sheets.getByName("Einnahmnen")
oCell=oSheet.getCellByPosition(0, 1)
oCell.Value = dat
oCell=oSheet.getCellByPosition(1, 1)
oCell.Value = hab
oCell=oSheet.getCellByPosition(2, 1)
oCell.Value = sol
oCell=oSheet.getCellByPosition(3, 1)
oCell.Value = beschr
Elseif art = ("Kassenbuch") Then
oSheet=oDocument.Sheets.getByName("Kassenbuch")
oCell=oSheet.getCellByPosition(0, 1)
oCell.Value = dat
oCell=oSheet.getCellByPosition(1, 1)
oCell.Value = hab
oCell=oSheet.getCellByPosition(2, 1)
oCell.Value = sol
oCell=oSheet.getCellByPosition(3, 1)
oCell.Value = beschr
else
oSheet=oDocument.Sheets.getByName("Betriebskosten")
oCell=oSheet.getCellByPosition(0, 1)
oCell.Value = dat
oCell=oSheet.getCellByPosition(1, 1)
oCell.Value = hab
oCell=oSheet.getCellByPosition(2, 1)
oCell.Value = sol
oCell=oSheet.getCellByPosition(3, 1)
oCell.Value = beschr
End If

End Sub

Dieser Code trägt mir immerhin Werte (leider nur Nullen) in das sheet "Betriebskosten" ein. Die anderen elseif Bedingungen sind nicht testbar, da ich ja die Werte nicht aus den Boxen rauskriege. Zudem habe ich bisher auch nur rausbekommen wie ich die Zellen über die Position ansprechen kann, also nicht relativ.
Ich sitze seit zwei Tagen mit verschiedenen Dokumentationen dran kriegs aber nicht hin (Ich kann kein "Variable nicht belegt" mehr sehn :x )
Danke
Bianca

Nach oben