Numericfields in Zellbereich einfügen

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

Moderator: Moderatoren

Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Numericfields in Zellbereich einfügen

Beitrag von Jörg »

Hallo Fachleute,
Zunächst allen ein gutes 2016.
Sicher könnt Ihr mir bei meinen folgenden Problem helfen.
Zur Pflege meiner Preislisten möchte ich mir einen Dialog erstellen.
Mit nachfolgendem Code möchte ich mit den Numericfeldern 1 :21 den Zellbereich B5:V5 füllen:
Also Numericfeld1 in B5,............................,Numericfeld21 in V5

Code: Alles auswählen

sub neue_preise_eintragen
odoc = thiscomponent
osheet = odoc.sheets.getByName ("Preisliste")
	for ta = 1 to 21
   		osheet.getcellByPosition( ta, 4 ).formulalocal = oDialog6.getControl("NumericField" & ta+1).value
	next ta
	oDialog6.endexecute
end sub
Das Problem:
B5 wird mit Numericfeld2 gefüllt , das Numericfeld1 wird nicht eingetragen.

die zweite Sache wäre folgende:
Mit den Numericfeldern 22 :42 wiederum soll der Bereich B16 : V16 gefüllt werden.
Also müßte ja irgendwie anders definiert (unterschieden) werden.
Gruß Jörg
Gruß Jörg

Win 10 Pro AOO 4.1.15
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Re: Numericfields in Zellbereich einfügen

Beitrag von Jörg »

hallo,
sorry hab jetzt einfach nochmal was probiert und zwar so:
osheet.getcellByPosition( ta, 4 ).formulalocal = oDialog6.getControl("NumericField" & ta).value
anstatt ta +1 nur &ta
o.k. :oops:

Für´s zweite Problem allerdings hab ich noch keine Lösung
Gruß Jörg

Win 10 Pro AOO 4.1.15
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Numericfields in Zellbereich einfügen

Beitrag von Stephan »

Für´s zweite Problem allerdings hab ich noch keine Lösung
aber was ist da anders als beim ersten Beispiel, es bedarf doch nur der Anpassung der Zahlen:

Code: Alles auswählen

sub neue_preise_eintragen
odoc = thiscomponent
osheet = odoc.sheets.getByName ("Preisliste")
   for ta = 1 to 21
         osheet.getcellByPosition( ta, 4 ).formulalocal = oDialog6.getControl("NumericField" & ta).value
         osheet.getcellByPosition( ta, 15 ).formulalocal = oDialog6.getControl("NumericField" & ta+21).value
   next ta
   oDialog6.endexecute
end sub
Gruß
Stephan
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Re: Numericfields in Zellbereich einfügen

Beitrag von Jörg »

Hallo Stephan, danke für die schnelle Antwort.
Leider wird die Zeile

Code: Alles auswählen

 osheet.getcellByPosition( ta, 15 ).formulalocal = oDialog6.getControl("NumericField" & ta+21).value
angemeckert:

Objektvariable nicht belegt.
Gruß Jörg

Win 10 Pro AOO 4.1.15
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Re: Numericfields in Zellbereich einfügen

Beitrag von Jörg »

Hallo Stephan, ich nochmal

Nachdem ich das Programm neu gestartet habe, funktioniert Dein Code einwandfrei.

Vielen Dank.
Gruß Jörg
Gruß Jörg

Win 10 Pro AOO 4.1.15
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Numericfields in Zellbereich einfügen

Beitrag von Stephan »

Mutmaßlich existiert dann kein Feld namens "NumericField22" und Weitere auf dem Dialog.

Am Rande gesagt sollten die Felder nach Deiner Verbalaussage im ersten Teil ohnehin "Numericfeld..." heißen, sie heißen jedoch im Code "Numericfield..." was Du als funktionierend bestätigt hast. Vielleicht liegt da eine Verwechsdelung vor. Alles das hat aber Du vor Augen und ich kann es lediglich raten.


Gruß
Stephan
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Re: Numericfields in Zellbereich einfügen

Beitrag von Jörg »

Hallo Stephan,
da haben sich unsere Beiträge sicherlich überschnitten.
Habe mal meinen endgültigen Code unten rein gestellt.
Ich arbeite mit "alter" und "neuer" Preisliste.
Sobald neue Preise vorliegen, werden die bisher neuen Preise in die alte Preisliste kopiert und anschließend die neuen Preise (aus dem Dialog) in die Neue Preisliste eingetragen, jenachdem welche Kasse ich mittels der Listbox in die Hilfszelle A1 einfüge.
Eine Frage hätte ich noch.
Für´s Kopieren verwende ich setDataArray.
Ginge das auch für die Numericfields?
Möglicherweise hätte das einen positiven Einfluß auf die Performance, da die Werte nicht einzeln eingefügt werden.
Vielen Dank für Deine Hilfe.

Gruß Jörg

Code: Alles auswählen

Sub Preisliste_aendern 
Dim aData()

odoc = thiscomponent
osheet = odoc.sheets.getbyname ("Preisliste")
mycell = osheet.getCellRangeByName("A1")
mystring = mycell.string
'BKK
if mystring = "BKK" then
'kopiert preise aus neuer in alte preisliste
BKKneu = Array("B5:V5","B16:V16")
BKKalt = Array("B39:V39","B50:V50")
For i = 0 To 1
  oBereich = osheet.getCellRangeByName(BKKneu(i))
  aData = oBereich.getDataArray()
  oZielbereich = osheet.getCellRangeByName(BKKalt(i))
  oZielbereich.setDataArray(aData)
Next i
'fügt die neuen Preise aus dem Dialog ein
for ta = 1 to 21
         osheet.getcellByPosition( ta, 4 ).formulalocal = oDialog6.getControl("NumericField" & ta).value
        osheet.getcellByPosition( ta, 15 ).formulalocal = oDialog6.getControl("NumericField" & ta+21).value
   next ta
   end if
'AOK
if mystring = "aok" then
aokneu = Array("B6:V6","B17:V17")
aokalt = Array("B40:V40","B51:V51")
For i = 0 To 1
  oBereich = osheet.getCellRangeByName(aokneu(i))
  aData = oBereich.getDataArray()
  oZielbereich1 = osheet.getCellRangeByName(aokalt(i))
  oZielbereich1.setDataArray(aData)
Next i
for ta = 1 to 21
         osheet.getcellByPosition( ta, 5 ).formulalocal = oDialog6.getControl("NumericField" & ta).value
        osheet.getcellByPosition( ta, 16 ).formulalocal = oDialog6.getControl("NumericField" & ta+21).value
   next ta
   end if
'usw.
oDialog6.endexecute 
   end sub
Gruß Jörg

Win 10 Pro AOO 4.1.15
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Numericfields in Zellbereich einfügen

Beitrag von Stephan »

z.B.:

Code: Alles auswählen

sub neue_preise_eintragen
odoc = thiscomponent
osheet = odoc.sheets.getByName ("Preisliste")

Dim array_1(20)
Dim array_2(20)

for ta = 1 to 21
  array_1(ta-1) = oDialog6.getControl("NumericField" & ta).value
  array_2(ta-1) = oDialog6.getControl("NumericField" & ta+21).value
next ta

array_1a = Array(array_1())
array_2a = Array(array_2())

osheet.getCellRangeByPosition( 1, 4, 21, 4).setDataArray(array_1a())
osheet.getCellRangeByPosition( 1, 15, 21, 15).setDataArray(array_2a())

oDialog6.endexecute
end Sub
Gruß
Stephan
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

(Gelöst)Re: Numericfields in Zellbereich einfügen

Beitrag von Jörg »

Hallo Stephan,
ja genauso !!!!!!!!!!!!!!!

Vielen Dank und noch nen schönen Sonntag.

Gruß Jörg
Gruß Jörg

Win 10 Pro AOO 4.1.15
Antworten