Strona 1 z 1
Wypełnianie tabeli ale w Write
: wt gru 04, 2012 1:08 pm
autor: wicy
Czy da się odwołać do poszczególnych komórek tabeli, ale zrobionej w Write nie w Calc?
Mam prostą ewidencję z lp, data, numer.
1) Chciałbym po otworzeniu pliku zwiększyć lp i ustawić kursor w nowym, ostatnim wierszu tabeli.
2) Kolejny problem to jak dodać nazwę autora do numeru wprowadzonego w lp i zapisanie go w odrębnym polu tabeli (lub tylko pokazanie w wyskakującym oknie).
Jak się za to zabrać?
Re: Wypełnianie tabeli ale w Write
: wt gru 04, 2012 1:23 pm
autor: Jan_J
Nie odpowiem, przynajmniej na razie. Musi dojrzeć. Może dałoby się bez pisania makr?
Ale w związku z problemem ogólniejsza refleksja. Nie moja, choć z wrocławskiego podwórka:
http://staryzgred.blogspot.com/2012/11/ ... -word.html
Re: Wypełnianie tabeli ale w Write
: wt gru 04, 2012 2:28 pm
autor: wicy
Ewidencja ma być używana przez wielu użytkowników, na wielu komputerach.
Dodanie nowego wiersza, auto numeracja pierwszej kolumny (lp), ustawienie kursora w pierwszym polu do edycji, ułatwi znacznie pracę i ograniczy możliwość popełnienia błędów. To samo ma uczynić wygenerowanie numeru pisma na podstawie inicjałów użytkownika.
Dobra, nie czekam na gotowca, nie znam OOBasic ale będę to sobie rozgryzał sam.
Udało mi się już przestawić kursor na ostatni wiersz tabeli.
Kod: Zaznacz cały
Tables = ThisComponent.getTextTables()
Table = Tables.getByIndex(0)
oCell = Table.getCellByName("A2")
oText = ThisComponent.Text
VCurs = ThisComponent.CurrentController.ViewCursor
Table = Tables.getByIndex(0)
oCell = Table.getCellByposition(0,table.rows.count-1)
Teraz muszę dodać nowy i zwiększyć numerację pierwszej kolumny (lp)
Re: Wypełnianie tabeli ale w Write
: wt gru 04, 2012 2:54 pm
autor: Jan_J
wicy pisze:Ewidencja ma być używana przez wielu użytkowników, na wielu komputerach.
W takim razie dlaczego dokument tekstowy, a nie baza danych?
Re: Wypełnianie tabeli ale w Write
: wt gru 04, 2012 3:03 pm
autor: wicy
Z powodu ograniczeń sieciowych, braków dostępów i niechęci informatyków, etc... Musi być dokument typu Write z powodu ogólnej tępoty użytkowników, którzy tylko Writera z grubsza ogarniają. Musi być OO z powodu braków w licencyjnych w MSO. Inaczej dawno bym sobie z tym poradził i nie błądził jak dziecko we mgle w OO Basicu.
Re: Wypełnianie tabeli ale w Write
: wt gru 04, 2012 3:24 pm
autor: Jan_J
Można napisać instrukcję, jak jeździć traktorem do sklepu po piwo. I nawet można z niej codziennie korzystać. Tylko że traktory w zasadzie służą do czego innego.
Załóż nową bazę danych. W niej załóż tabelę z polami lp, imię, itd. Wymuś żeby pole lp było kluczem głównym. Ustaw w opcjach, by wpis do pola lp był wymagany. Tyle wystarczy, by lp sama się numerowała.
Uwaga: to nie znaczy, że numeracja będzie zawsze po kolei. Każdy wpis zyska raz nadany numer, który nie będzie się zmieniał przy usuwaniu.
Re: Wypełnianie tabeli ale w Write
: wt gru 04, 2012 3:36 pm
autor: wicy
Jan_J pisze:Załóż nową bazę danych
Hehe... jak? Czym? Nie mam narzędzi ani uprawnień.
To by było dopiero wytaczanie działa na komara.
Poradziłem sobie już prawie, sklecając taki oto kod:
Kod: Zaznacz cały
Dim Rows As Object
Dim tcurs As Object
Dim oCell As Object
Tables = ThisComponent.getTextTables()
Table = Tables.getByIndex(0)
oCell = Table.getCellByName("A2")
oText = ThisComponent.Text
VCurs = ThisComponent.CurrentController.ViewCursor
Table = Tables.getByIndex(0)
oCell = Table.getCellByposition(0,table.rows.count-1)
tcurs = oCell.createTextCursor()
VCurs.gotoRange(oCell.Text.Start, False)
VCurs.gotoEndOfLine(False)
tcurs.string = table.rows.count-1
table.rows.insertbyindex(table.rows.count, 1)
pokoj = "001"
inicjaly="AA"
MsgBox "Twój numer pisma to: "+"numer_pisma/"+tcurs.string+"/"+pokoj+"/2013-"+inicjaly, MB_OK, "Numer pisma"
end sub
Prosiłbym jeszcze o dwie podpowiedzi
1) jak przed dodaniem wiersza w drugiej kolumnie wstawić bieżącą datę
2) jak pod "inicjały" podstawić nazwę użytkownika/autora otwierającego dokument?
Re: Wypełnianie tabeli ale w Write
: wt gru 04, 2012 6:39 pm
autor: Jan_J
wicy pisze:Hehe... jak? Czym? Nie mam narzędzi ani uprawnień.
To by było dopiero wytaczanie działa na komara.
OpenOffice.org Base wbudowana w pakiet. Do tego, co opisałeś, wystarczy.
Nie jest to armata na komara, tylko właściwe narzędzie do rejestrowania wpisów. Prostsze niż pisanie makra symulującego tabelę bazodanową w dokumencie tekstowym.
Prosiłbym jeszcze o dwie podpowiedzi
1) jak przed dodaniem wiersza w drugiej kolumnie wstawić bieżącą datę
2) jak pod "inicjały" podstawić nazwę użytkownika/autora otwierającego dokument?
@1 datę pobierzesz jako wartośćtypu variant/date: d = date()
albo w postaci tekstu d = str(date()). Dalej pozostaje wstawić ją do pola; utwórz w polu tabeli kursor tekstowy i napisz nim tekst, ale to już umiesz.
@2 właściwości thisComponent.DocumentInfo.author oraz thisComponent.DocumentInfo.ModifiedBy. W przypadku, kiedy dokument nie był modyfikowany, możesz dostać błędne dane. Trzeba by raczej poszukać tej nazwy w konfiguracji pakietu; jakoś nie widzę tego w dokumentacji...