[gelöst] Rechnen im Dialog?

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: [gelöst] Rechnen im Dialog?

Re: [teilweise gelöst] Rechnen im Dialog?

von wega » Sa, 27.12.2008 21:06

Hallo zusammen, hallo Jürgen.

jetzt nun endlich die Fassung, die ich als gelöst betrachte.
Die Zeiten werden richtig berechnet und für die nächste Buchung auch richtig vorgehalten, so dass man mit TAB in das nächste Zeitfeld des Auftrages gehen kann.
Diesmal ohne Zwischenspeicherung und Zwischenrechnung in Calc.

Dank an alle, die an der Lösungssuche beteiligt waren.
Hier nun auch die Fassung zur freien Weiterbenutzung für den, der dafür Verwendung hat.

Gruß
Werner
Dateianhänge
Zeiterfassung.ods
(40.87 KiB) 39-mal heruntergeladen

Re: [gelöst] Rechnen im Dialog?

von wega » Fr, 26.12.2008 23:27

Hallo Jürgen,

so ganzer Müll war das denn doch nicht.
Ich habe mich auf Grund dessen hingestzt und meine Datei noch mal überarbeitet.
Die Differenzberechnung habe ich mir dann auf die Calcseite gelegt und nach der dortigen Berechnung wieder zur Kontrolle in den Dialog geladen.
Merkwüdig ist nur, dass ich eine WAIT-Anweisung dazwischen schalten muss, um die in Calc berechnete Differenz vom Dialog wieder nach Calc zurückzuschreiben.
Auch darf diese Wait-Zeit nicht abgelaufen sein, daher möglichst verträglich hoch ansetzen.

Code: Alles auswählen

	Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").text = mySheet.getCellRangeByName("N1").string
	wait 10000
	mySheet.protect("")   'Tabelle wieder schützen
Es gelingt mir auch nicht, die Datei unter 3.0 und 2.4 gleichmaßen zum Laufen zu bringen.
3.0 funktioniert mit "Krampf" -> Wait-Anweisung
2.4 übernimmt nicht den berechneten Wert.

Danke aber auch für Deine Überarbeitung, den Code werde ich mir jetzt auch ansehen und wieder in meine Datei einbauen.
Der Kalender gefällt mir besonders.

mit Gruß
Werner
Dateianhänge
Zeiterfassung.ods
(40.74 KiB) 32-mal heruntergeladen

Re: [gelöst] Rechnen im Dialog?

von turtle47 » Fr, 26.12.2008 20:53

Ich nochmal:

Es ist ja schon bemerkenswert, dass in der von mir vorher eingestellten Datei, die bereit 7 mal runtergeladen wurde, nur Müll war aber keine Reaktion erfolgte.

Mein Fazit: Man sollte doch besser um diese Uhrzeit
von turtle47 am Do, 25.12.08 1:18

im Bett liegen und schlafen und sich besser aus allen Themen raushalten.

Danke für die freundschaftliche Unterstützung.

Hier nun die berichtigte Datei ohne Müll:
Dateianhänge
Timefield1.ods
(11.33 KiB) 33-mal heruntergeladen

Re: [gelöst] Rechnen im Dialog?

von turtle47 » Do, 25.12.2008 02:18

Hallo Werner,

sorry, auch wenn Weihnachten ist, so muss ich Dich leider enttäuschen.
Bestimmte Zeitdifferenzen werden in dem Dialog nicht richtig berechnet.

1. Beispiel
Beginn: 12:25 | Ende: 13:10 | Zeitbetrag: 00:85 > Error

2. Beispiel
Beginn: 22:00 | Ende: 06:00 | Zeitbetrag: 00:00 > Error

Ja, ich weiß, Du hast den Code von mir. :oops:
Aber wenn ich mir den Code im nachhinein ansehe ist das auch vollkommen logisch was da passiert. 8)

Als kleines Weihnachtspräsent und Wiedergutmachung hänge ich Dir eine Datei an bei der diese Fehler nicht auftreten. :D

Ich wünsche Dir und allen anderen noch ein schönes Weihnachtsfest.

Jürgen

Edit: Siehe nächsten Beitrag.

Re: Rechnen im Dialog?

von wega » Mi, 24.12.2008 00:13

Hallo zusammen,

mein dank an alle, die meine Lösungssuche unterstützt haben.

Hier die Datei, die jetzt dank eurer Hilfe funktioniert.
Vielleicht kann der eine oder andere aus diesem Forum auch etwas damit angangen.
Funktioniert unter OpenOffice.org 3.0
Bei früheren Versionen könnte es bei der Übergabe des GetControl-Time-Feldes Probleme geben.

Gruß
Werner
Dateianhänge
Zeiterfassung.ods
(38.55 KiB) 66-mal heruntergeladen

Re: Rechnen im Dialog?

von wega » Di, 23.12.2008 23:14

Hallo Jürgen,

Danke, genau das ist die Lösung.
Da hätte ich mir aber glatt die Zähne ausgebissen.

Danke und ein frohes Weihnachtsfest an alle Forenteilnehmer
Gruß
Werner

Re: Rechnen im Dialog?

von turtle47 » Di, 23.12.2008 22:35

Hallo Werner,

ganz so einfach ist das mit TimeField nicht. Ich habe dennoch etwas rausgefunden
und nach diesem Beitrag mal was zusammengebaut:

Code: Alles auswählen

Sub zeitbetrag_rechnen
Dim H As Long, M As Long, S As Long
Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").time = Dlg_Zeiterfassung.GetControl("TimeF_ende").time - Dlg_Zeiterfassung.GetControl("TimeF_beginn").time	
	
	oDoc = ThisComponent	
	oSheet = ThisComponent.CurrentController.getActiveSheet()
	oZell = oSheet.getCellRangeByName("A1") 'Zelle anpassen
	myTimeField = Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag")
	mytime = myTimeField.time
	H=Int(mytime/1000000)
	M=Int(mytime/10000)-H*100
	S=Int(mytime/100)-H*10000-M*100
	TimeCtlFieldToTime=TimeSerial(H,M,S)
	oZell.FormulaLocal = TimeCtlFieldToTime
End Sub
Bringt Dich das etwas weiter?

Jürgen

Re: Rechnen im Dialog?

von wega » Di, 23.12.2008 21:49

Hallo Winfried,

hie noch die Fehlermeldung.

Gruß
Werner
Dateianhänge
Fehlermeldung.jpg
Fehlermeldung.jpg (11.15 KiB) 903 mal betrachtet

Re: Rechnen im Dialog?

von wega » Di, 23.12.2008 21:41

Hallo Winfried,

erst einmal Danke für Deine Antwort.
Mit dem GetControl-Feld Time bereche ich die Differenz zwischen zwei Zeiten und gebe diese Diffrenz zur visuellen Kontrolle ebenfalls in einem GetControl-Feld aus. Hierzu Bild01.
Übertragen nach Calc wird aber das Ergebnis von Bild uebertragen_wird.
Folge ich Deiner Anweisung der Zuweisung erschein im berechneten GetControl-Feld das Ergebnis Bild02 und bei dem Versuch der Übernahme nach Calc die angezeigte Fehlermeldung.

Frage, wie kann ich das Ergebnis des GetControl-Feldes nach Calc übertragen?

Ich hoffe, dass ich meine Frage präzise genug gestellt habe.

mit Gruß
Werner
Dateianhänge
Bild01.JPG
Bild01.JPG (7.51 KiB) 915 mal betrachtet
uebertragen_wird.jpg
uebertragen_wird.jpg (2.28 KiB) 913 mal betrachtet
Bild02.jpg
Bild02.jpg (7.26 KiB) 914 mal betrachtet

Re: Rechnen im Dialog?

von komma4 » Di, 23.12.2008 12:01

wega hat geschrieben: Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").time
nach
Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").text ?

Durch Zuordnung:

Code: Alles auswählen

Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").Time = _
Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").Text

... ich frage mich aber: wozu?

Re: Rechnen im Dialog?

von wega » Mo, 22.12.2008 22:21

hallo zusammen,

wie bekomme ich den Inhalt von:
Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").time
nach
Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").text ?

mit Gruß
Werner

Re: Rechnen im Dialog?

von wega » So, 21.12.2008 19:18

hallo zusammen,

ich habe doch noch eine Frage zum Berechnen im Dialog.

die differenzzeit berechne ich wie folgt, nach dem die Eingabezelle de Focus verliert:

Code: Alles auswählen

Sub zeitbetrag_rechnen
	Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").time = Dlg_Zeiterfassung.GetControl("TimeF_ende").time - Dlg_Zeiterfassung.GetControl("TimeF_beginn").time
End Sub
Daraufhin wird mir im "TimeF_zeitbetrag" Fenster auch der richtige berechnete Differenzwert angezeigt.
Aber mit

Code: Alles auswählen

	if 	Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").time <> "" then
	mySheet.getCellRangeByName("H" & End_Row).value = cdate(Dlg_Zeiterfassung.GetControl("TimeF_zeitbetrag").text)
	end if
bekomme ich den angezeigten Wert nicht in die Calc übertragen. Dahin überträgt sich der Wert "00:00"

Was muß ich machen, damit sich die errechnete Differenzzeit nach Calc überträgt.

Gruß
Werner

Re: Rechnen im Dialog?

von wega » So, 21.12.2008 17:34

Hallo Jürgen,

danke, das war der entscheidende Hinweis, jetzt geht es auch bei mir weiter.

Gruß
Werner

Re: Rechnen im Dialog?

von turtle47 » So, 21.12.2008 16:44

Hallo Werner,

ich habe das für mich mal fogendermassen gelöst:

Code: Alles auswählen

Dim Dlg_Date,DateField1 as Object
dim myDate as String
Sub Call_Dlg_Date
	DialogLibraries.loadLibrary("MyDate") 
	oForm = DialogLibraries.MyDate.Dlg_Date
	Dlg_Date = CreateUnoDialog(oForm)
	DateField1 = Dlg_Date.getControl("DateField1")	
	oDateFieldModel = Dlg_Date.Model.DateField1
	oDateFieldModel.Text = date 'aktuelles Datum im Datefield anzeigen	
	Dlg_Date.execute()	
End Sub

Sub Insert_Date1
	oDoc = ThisComponent	
	oSheet = ThisComponent.CurrentController.getActiveSheet()
	oZell = oSheet.getCellRangeByName("A1") 'Zelle anpassen
	myDate = DateField1.text
	oZell.Value= CDate(myDate) 
	'oZell.NumberFormat = 30 'Format 13.05.06
	'oZell.NumberFormat = 31 'Format Sa 13.Mai 06
	'oZell.NumberFormat = 32 'Format 05.06
	'oZell.NumberFormat = 33 'Format 13.Mai
	'oZell.NumberFormat = 34 'Format Mai
	'oZell.NumberFormat = 35 'Format 2. Quartal 06
	oZell.NumberFormat = 36 'Format 13.05.2006
	'oZell.NumberFormat = 38 'Format Samstag, 13. Mai 2006
	'oZell.NumberFormat = 39 'Format 13. Mai 06
	Dlg_Date.endexecute()
end Sub
Viel Erfolg.

Jürgen

Re: Rechnen im Dialog?

von wega » So, 21.12.2008 16:22

Hallo zusammen,

bin endlich wieder an Bord und kann an meinem Programm weiterarbeiten.
Erst einmal vielen Dank für die hilfreichen anregungen.

Wenn ich den Anregungen fplge und die GetControll-Felder Date und Time verwende,
Wie bekomme ich denn deren Inhalt im richtigen Format lesbar in Calc angezeigt?

Bei der Datumsübergabe an Calc habe ich schon so meine Schwierigkeiten.
Da wird mir ein Wert übertragen, der mit dem eingegenem Datum eigentlich nicht zu tun hat.
Quellcode:

Code: Alles auswählen

	mySheet.getCellRangeByName("B" & End_Row).value = Dlg_Zeiterfassung.GetControl("DateF_datum").date
Ergebnis in Calc:
12.02.-8657

Wie muss eine Übergabe von Datum und Zeit an Calc richtig erfolgen?

Gruß
Werner

Nach oben