Dane z komórki do dialogu

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
Emart22
Posty: 20
Rejestracja: sob sty 11, 2014 11:29 pm

Dane z komórki do dialogu

Post autor: Emart22 »

Witam.
No właśnie, jak pobrać dane z komórki i wyświetlić w etykiecie w dialogu (chodzi o etykiety w dialogu "Sprzedaż"). Chcę żeby wyświetlał się się tam ostatni dodany wpis w arkuszu "Sprzedaż".

Kod: Zaznacz cały

Sub WyswietlOstatniWpis
rem Pobiera nr wiersza to działa
	EtykietaOWNrWiersza = SprzedazOknoDial.Model.GetByName("OWNrWiersza")
	EtykietaOWNrWiersza.Label = WieZm + 1
	
rem Ma pobierać datę z komórki - nie działa - wyświetla 00:00:00 a komórka sformatowana jest na format 36 xx.xx.xxxx
   oDocument = ThisComponent
	oSheet = oDocument.getSheets.getByName("Sprzedaż") 
   oCell = oSheet.getCellByPosition(0,WieZm+1)
   EtykietaOWData = SprzedazOknoDial.Model.GetByName("OWData")
	EtykietaOWData.Label = cDate(oCell.getValue)

rem Tutaj nie wyświetla nic
	EtykietaOWArtykul = SprzedazOknoDial.Model.GetByName("OWArtykul")
	oCell = oSheet.getCellByPosition(1,WieZm+1)	
	EtykietaOWArtykul.Label = oCell.getString

rem Tutaj wyświetla 0
	EtykietaOWCena = SprzedazOknoDial.Model.GetByName("OWCena")
	oCell = oSheet.getCellByPosition(2,WieZm+1)
	EtykietaOWCena.Label = oCell.getValue

rem Tutaj też 0
	EtykietaOWIlosc = SprzedazOknoDial.Model.GetByName("OWIlosc")
	oCell = oSheet.getCellByPosition(3,WieZm+1)
	EtykietaOWIlosc.Label = oCell.getValue

End Sub
Nie rozumiem czemu z nr wiersza działa a reszta nie.
OpenOffice 4.0.1 Windows 8.1
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Dane z komórki do dialogu

Post autor: Jan_J »

Etykiety kontrolek są danymi typu tekstowego. Wstawiając do nich liczby, tak naprawdę wymuszasz konwersję.
Ale to nic. Pobieranie właściwości getValue z komórki zawierającej tekst daje wynik 0. Na dodatek getValue nic nie wie o aktualnym formacie zawartości komórki. Pobieraj zawartość tekstową za pomocą getString.
Radzę zapoznać się z debuggerem Basica, z trybem pracy krokowej (F8) i wglądem w strukturę obiektów (Watch/Czujki). Większość problemów usuniesz z ich pomocą. To, czego się nie da, doczytasz w dokumentacji API albo prześledzisz dodatkiem X-Ray Tool (http://bernard.marcelly.perso.sfr.fr/index2.html).
Radzę także przygotowywać problem w sposób nadający się do natychmiastowego sprawdzenia. Podesłałeś funkcję z opisem kluczowych miejsc, ale trzeba było samemu zrobić sobie dialog. To nie zachęca do udzielenia pomocy. Warto, aby kod taki był możliwie uproszczony, pozbawiony nieistotnych kontekstów (w tym przypadku był).
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Emart22
Posty: 20
Rejestracja: sob sty 11, 2014 11:29 pm

Re: Dane z komórki do dialogu

Post autor: Emart22 »

Jak zwykle można liczyć na szybką i konkretną pomoc. Prawdę mówiąc to nawet nie wiem gdzie debuggera szukać, F8 dosyć często używam a czujki nie wiem z czym to się je. Co do tego, że podesłałem tylko procedurę to nie chciałem zbyt zaśmiecać bo jak dla mnie makro jest trochę rozbudowane, ale na przyszłość będę pamiętał. Niestety, przyszłość nadeszła, nadal nie jarze o co chodzi. Proszę o przejrzenie procedury WyswietlOstaniWpis w module Sprzedaz. Dziękuje za poświęcony czas.
Załączniki
Test.ods
(35.04 KiB) Pobrany 259 razy
OpenOffice 4.0.1 Windows 8.1
kerim
Posty: 3
Rejestracja: wt sty 22, 2013 12:13 pm

Re: Dane z komórki do dialogu

Post autor: kerim »

Witam
hahaha... tez jakas godzine myslalem co tam nakombinowales;)
Tu jest OK EtykietaOWNrWiersza.Label = WieZm + 1
ale tu i nizej powinno być oCell = oSheet.getCellByPosition(0,WieZm)
chodzi o ten +1 pokazuje puste wpisy bo odczytujesz ostatni wiersz+1 a tam nic nie ma

Pozdrawiam
OpenOffice 3.4 W7
Emart22
Posty: 20
Rejestracja: sob sty 11, 2014 11:29 pm

Re: Dane z komórki do dialogu

Post autor: Emart22 »

Witam
Miałem długą przerwę w pracy z OO. Spodziewałem się wszystkiego, ale takiego byka to nie, a ile siedziałem nad tym to moje. Wielkie dzięki Kerim.
OpenOffice 4.0.1 Windows 8.1
ODPOWIEDZ