[Gelöst] Makros, Eingabemaske

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

Moderator: Moderatoren

Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Makros, Eingabemaske

Beitrag von balu »

Hallo Jörg,
Allerdings würd ich gern, daß sich das Makro "showcolumnF" die Kundennr. aus Tab. 3 holt . Ginge das???
Das bekommst Du doch selber hin. Ich sag nur: Dannenhöfer :wink:.



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 :D
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Makros, Eingabemaske

Beitrag von clag »

Hallo Jörg,

machbar ist natürlich vieles ;)
Aber ich versteh noch nicht so recht was du meinst, von wo aus Tabelle3 und bei welcher Gelegenheit?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Jörg
*****
Beiträge: 401
Registriert: Mo, 21.10.2013 12:05

Re: Makros, Eingabemaske

Beitrag von Jörg »

Hallo clag und balu,
Ja den Dannenhöfer guck ich mir an. Versprochen. :roll:
Habe aber ein anderes Problem. Wie bekomme ich die Tabelle in meine Original-Mappe?
Habe es in einer 2. Bsp.Mappe mit verschieben probiert.
gut Formeln muß ich nachbessern, weil #REF!
Aber das Makro "ChangeCustomerData (document, Basic)" funzt nicht mehr.
"Pat. nicht im Bestand"
Dateianhänge
Eingabe.TB.ods
(190.97 KiB) 77-mal heruntergeladen
Gruß Jörg

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

Re: Makros, Eingabemaske

Beitrag von Jörg »

hm, unter "Meine Makros" gehts. :oops:
Gruß Jörg

Win 10 Pro AOO 4.1.15
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Makros, Eingabemaske

Beitrag von clag »

hallo Jörg,
Jörg hat geschrieben:Aber das Makro "ChangeCustomerData (document, Basic)" funzt nicht mehr.
"Pat. nicht im Bestand"
dann hast du vermutlich die Formel in 'Eingabemaske Kunden'.F7 nicht mit genommen
die gibt eine "1" aus wenn der die KundneNr existiert und einmalig ist und erst dann werden Änderungen übernommen!
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Jörg
*****
Beiträge: 401
Registriert: Mo, 21.10.2013 12:05

Re: Makros, Eingabemaske

Beitrag von Jörg »

ne, doch nicht.
Gruß Jörg

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

Re: Makros, Eingabemaske

Beitrag von Jörg »

Sorry, clag hatte Deinen Hinweis noch nicht gelesen gehabt.
Hatte auch ´nen #REF! Fehler in F7

Echt super.
Danke.
Gruß Jörg

Win 10 Pro AOO 4.1.15
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Makros, Eingabemaske

Beitrag von clag »

die Formel in F7sollte so aussehen
=ZÄHLENWENN(INDIREKT("Patientendatei.A2:A"&ANZAHL2(Patientendatei.A1:A48576));E8)

hat wohl bei deiner Kopieraktion die Referenz verloren
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Jörg
*****
Beiträge: 401
Registriert: Mo, 21.10.2013 12:05

Re: Makros, Eingabemaske

Beitrag von Jörg »

hat wohl bei deiner Kopieraktion die Referenz verloren
Ja so war es. Die ausgeblendete F-Spalte hatte mir noch Probleme beim Kopieren in Tab.1 gemacht, da ich hierfür ein anderes Makro verwende.
Scheint mir eleganter.

Code: Alles auswählen

sub neuerKunde
antwort = msgbox("Daten speichern?",36,"Neuer Patient")
if antwort = 7 Then
		 exit sub
end if		
rem define variables
 odoc = ThisComponent
        osheet = odoc.sheets(1)
        orange = osheet.getCellRangeByName("A28:J28")
        orangeAddress = orange.getrangeaddress
        odata()= orange.getdataarray
        oZielSheet = oDoc.sheets(0)
        c = oZielSheet.getCellRangeByName("A1:A5000").queryEmptyCells
        oZielCell = c(0).getcellbyposition(0,0)
        oZielCellAddress = oZielCell.getcelladdress
        X1=oZielCellAddress.column
        Y1=oZielCellAddress.row
        X2=oZielCellAddress.column+(orangeAddress.EndColumn-orangeAddress.StartColumn)
        Y2=oZielCellAddress.Row+(orangeAddress.EndRow-orangeAddress.StartRow)
        oZielrange=oZielSheet.getCellRangeByPosition(X1,Y1,X2,Y2)
        oZielrange.setdataarray(odata())
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")


rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Nr"
args5(0).Value = 2

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args5())

rem ----------------------------------------------------------------------

dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "ToPoint"
args6(0).Value = "$E$9:$E$17"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args6())

rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "Flags"
args7(0).Value = "SVD"

dispatcher.executeDispatch(document, ".uno:Delete", "", 0, args7())

rem ----------------------------------------------------------------------
dim args8(0) as new com.sun.star.beans.PropertyValue
args8(0).Name = "ToPoint"
args8(0).Value = "$E$9"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args8())

end sub
Für´s Löschen von E9:E17 hab ich noch ´nen anderen Code gefunden, bei Dannenhöfer(Hallo?).
Funkt schon in einem anderen Makro.
Nochmal vielen Dank und schöne Feiertage.
Falls ich nicht doch ´nen Problem habe 8)

Gruß
Jörg
Gruß Jörg

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

Re: Makros, Eingabemaske

Beitrag von Jörg »

Allerdings würd ich gern, daß sich das Makro "showcolumnF" die Kundennr. aus Tab. 3 holt . Ginge das???
Aber Ja!

Code: Alles auswählen

myDoc = thisComponent
mySheet = myDoc.sheets(1)

mycell = mysheet.getCellrangebyName("E8")
mycell.Formula = "='Eingabemaske Abr_Rechnung'.C10"
	myDoc = thisComponent
	mySheet = myDoc.sheets(1)
	myView = myDoc.CurrentController

	for i=0 to 8
		mysheet.getCellByPosition(5,8+i).string =""
	next

	oSpalte = mySheet.getcolumns().getByIndex(5)
	oSpalte.isVisible = true 
	mycell =  mysheet.getCellByPosition(5,8)
	myView.Select(mycell)

	oForm = mySheet.drawpage.forms.getbyindex(0)
	oControl = oForm.getByName("Schaltfläche 1")
	oControl.enablevisible = false
	oControl = oForm.getByName("Schaltfläche 2")
	oControl.enablevisible = false
	oControl = oForm.getByName("Schaltfläche 4")
	oControl.enablevisible = false
	oControl = oForm.getByName("Schaltfläche 7")
	oControl.enablevisible = false
	oControl = oForm.getByName("Schaltfläche 5")
	oControl.enablevisible = true
	oControl = oForm.getByName("Schaltfläche 6")
	oControl.enablevisible = true
end sub
@ balu jepp
Auch Dir schöne Feiertage.
Gruß Jörg

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

Re: Makros, Eingabemaske

Beitrag von Jörg »

Hallo glag,
hab nun doch noch ein Problem.
Wenn ich einen neuen Kunden anlegen will, schmeißt es mir die Formeln raus, die ja notendig sind
um den Datensatz aufzurufen, der geändert werden soll.
Hab ich da was verpeilt?
Gruß
Jörg
Gruß Jörg

Win 10 Pro AOO 4.1.15
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Makros, Eingabemaske

Beitrag von clag »

hallo Jörg,
keine Ahnung was du jetzt verdreht hast

Hier eine etwas erweiterte Version, bei einem Doppelklick auf "C10 in Tabelle3"
wird die Maske aus Tabelle2 zum ändern aufgerufen und die Nummer aus C10 dort eingetragen.
Das war doch was du wolltest?
Eingabe.TBx.ods
(187.66 KiB) 92-mal heruntergeladen
viel Spaß
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Jörg
*****
Beiträge: 401
Registriert: Mo, 21.10.2013 12:05

Re: Makros, Eingabemaske

Beitrag von Jörg »

Hallo Clag,
danke, daß Du Dir noch mal die Mühe gemacht hast. Doppelklick hat was. :D
Aber auch in deiner neuen Version ist es so, dass nach Anlegen eines Neukunden die SVerweisformeln zum Aufruf bestehender Kundendaten überschrieben werden.
Ist aber erstmal nicht schlimm. Ich habe erstmal 2 Masken draus gemacht.
Die Maske zum Ändern vorhandener Daten, die Du mir zur Verfügung gestellt hast, funktioniert so einwandfrei, habe lediglich den Tabellenindex in den Makros geändert, weil ja nun eine Tabelle mehr in der Mappe ist.
Werde mal versuchen o.g. Formel per Macro nach Neuanlage wieder einzufügen ( Balu hatte mir weiter oben geraten, anstelle von sverweis-> Zählenwenn zu verwenden).

Also bis denne und danke.
Jörg
Gruß Jörg

Win 10 Pro AOO 4.1.15
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Makros, Eingabemaske

Beitrag von clag »

Hallo Jörg

im Makro für den Doppelklick sind zwei in der falschen Reihenfolge
die letzten 3 Zeilen sollten so aussehen

also von

Code: Alles auswählen

sub GoCorrectData(event)
....
	end if
	call showColumnF
end sub 

auf

Code: Alles auswählen

sub GoCorrectData(event)
....
	call showColumnF
	end if
end sub 
damit nicht bei jedem Doppelklick das Tabellenblatt wechselt
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Makros, Eingabemaske

Beitrag von clag »

Hallo Jörg,

bei der von dir zur Verfügung gestellten Datei kann ich gar keinen neuen Patientendaten abspeichern, es wird bei "neu anlegen" lediglich eine Zahl generiert wenn man die Felder mit Inhalt füllt und dann "Neuen Kunden speichern " Button anklickt wird kein neuer Eintrag im Tabellenblatt " Patientendatei" generiert??

Wenn du eine Beispieldatei zur Verfügung stellst die funktional nicht dem dem Original entspricht ist es auch schwer möglich zu erkennen was bei dir jetzt schief läuft.
Zudem musst du auch schon mal beschreiben wie du bei deinen Aktionen vorgehst!

Wenn du sinnvolle Hilfe willst stelle zuerst eine Beispieldatei zur Verfügung die den realen Gegebenheiten entspricht.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Antworten