Lieferschein aus Datentabelle erstellen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: Lieferschein aus Datentabelle erstellen

Beitrag von Charly »

Hallo Bluescreen!

Mit der Calc-Funktion "sverweis" kannst du Daten von einem anderen Tabellenblatt holen. Die Funktion ist in der OpenOffice-Hilfe beschrieben.

gruß
Charly
BluescreenX
Beiträge: 8
Registriert: Mo, 12.01.2009 19:01

Re: Lieferschein aus Datentabelle erstellen

Beitrag von BluescreenX »

Mit dem SVerweis hab ich das nicht so richtig hinbekommen deswegen hab ich eine neue Funktion geschrieben die mir den Wert Tabellen übergreifend rauszieht. Ich krieg allerdings als Rückgabe immer Err: 501. Kann mir einer sagen warum ? Gibt es noch eine Einfachere Möglichkeit ?

Code: Alles auswählen

function GetValue(table as String,column as String)
	Dim sourceTable,sheets, selection as Object
	
	selection 	=  ThisComponent.getCurrentSelection() 
	if  selection.supportsService("com.sun.star.sheet.SheetCell") then
	
		row 			=   selection.getCellAddress().Row +1
		sourceTable 	=   ThisComponent.getSheets().getByName(table)
		
		if sourceTable <> NULL then
			GetValue = sourceTable.getCellRangebyName(column & row).getValue()
		else
			GetValue = table & " existiert nicht"
		end if
	end if
end function

Gruß
Bluescreen
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: Lieferschein aus Datentabelle erstellen

Beitrag von Charly »

Hallo Bluescreen!

Code: Alles auswählen

selection    =  ThisComponent.getCurrentSelection() 
In einer aus einer Tabelle aufgerufenen Funktion sollte man "getCurrentSelecton" vermeiden, da Calc die Funktionen immer wieder neu berechnet und es nicht sichergestellt ist, dass immer die richtige Zelle ausgewählt ist.

Code: Alles auswählen

if sourceTable <> NULL then
Ob eine Tabelle vorhanden ist, frägt man ab mit

Code: Alles auswählen

ThisComponent.getSheets().hasByName(table)
Beim Befehl

Code: Alles auswählen

sourceTable.getCellRangebyName(column & row).getValue()
musst du den String erst in eigenen Variablen aufbauen: wie Zelle = Column & Cstr(row).

Mir erscheint deine Methode mithilfe einer Funktion die Daten zu überspielen, nicht sehr erfolgversprechend. Da wäre eine SUB, die mit einer Tastenkombination aufgerufen wird wahrscheinlicher besser.

Am besten ist für mich nach wie vor die Methode mit sverweis. Hier brauche ich z.B. nur die Kundennummer eingeben und schon wird die ganze Tabelle mit den gewünschten Daten gefüllt. Ich habe die anbei ein kurzes Beispiel gemacht.

gruß
Charly
Dateianhänge
Lieferschein.ods
(8.62 KiB) 98-mal heruntergeladen
Gert Seler
*******
Beiträge: 1763
Registriert: Di, 03.10.2006 18:05

Re: Lieferschein aus Datentabelle erstellen

Beitrag von Gert Seler »

Hallo bluescreen,
hier findest Du Hilfe zu der Funktion SVERWEIS :

http://www.ooowiki.de/CalcFunktionenTab ... atenFinden

Mit Beispielen läßt sich besser lernen.

mfg
Gert
Es gibt nichts gutes, außer man tut es.
Win7_64 / LO_4.4.5.2
BluescreenX
Beiträge: 8
Registriert: Mo, 12.01.2009 19:01

Re: Lieferschein aus Datentabelle erstellen

Beitrag von BluescreenX »

Ok vielen Dank für das Beispiel. Also das mit dem SVerweis klappt jetzt halbwegs. Allerdings muss ich immer noch manuell die Kunden Nummer eintragen. Ich würde gerne das wenn ich der Kundentabelle eine Zeile auswähle sich alle Verweise automatisch aktualisieren und ich direkt drucken kann.
Eventuell würde das über einen Sheet Change Listener funktionieren der in einer globalen Variable speicher in welcher Zeile sich der Zeiger in der Kundentabelle befindet. Oder geht das wie so vieles in Calc auch einfacher ?

edit: Gibt es eigentlich irgendwelche Event callbacks wie zum Beispiel OnOpenWorkbook die von Calc Automatisch verwendet werden?

Gruß
Bluescreen
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: Lieferschein aus Datentabelle erstellen

Beitrag von Charly »

Hallo Bluescreen!

Ich habe mein Beispiel erweitert und drei Makros hinzugefügt. Wenn du jetzt auf das Tabellenblatt "Kundendatei" gehst, eine Zelle in der gewünschten Kundenzeile anklickst, kannst du das Makro KundeUebertragen starten durch Klicken auf das gleichnamige ICON in der Symbolleiste. Das Makro überträgt die Kundennummer in die Tabelle Lieferschein

Als Zusatz-Beispiel habe ich den Lieferschein noch ergänzt mit Artikeleinträgen. Das ICON ArtikelLoeschen löscht die Einträge des vorherigen Kunden. Bis zu 10 Artikel kannst du dann auf die gleiche Weise wie die Kundenamen übertragen. Also Zelle im Tabellenblatt"Artikeldatei" auswählen und Icon "Artikel eintragen" drücken. Dadurch wird die Artikelnummel übertragen.




Gruß
Charly
Dateianhänge
Lieferschein.ods
(17.14 KiB) 166-mal heruntergeladen
BluescreenX
Beiträge: 8
Registriert: Mo, 12.01.2009 19:01

Re: Lieferschein aus Datentabelle erstellen

Beitrag von BluescreenX »

Vielen Dank Charly! Das ist genau die Lösung die ich mir vorgestellt habe.

Gruß
Bluescreen
Antworten