Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 25. 5. 2012 18:55:36

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,950

Ukládání makrem do více složek - VYŘEŠENO

- Zdravím.
     Mám dotaz na mažnost ukládat do více foldrů. "Mám soubor, který generuje velké množství řádků a sloupců". Proto musím ukládat do více foldrů (složek). Probíhá to tak, že vygeneruji  (mnohokrát za sebou) soubor s téměř 20.000 řádků a 101 sloupců (dělám to pomocí pole - "na doraz počítače" to jsem musel optimalizovat podle HW). Mezivýsledek uložim na list a ten pak postupně ukládám ve formě složek relační databáze - 1. sloupec (klíč), + 2. sloupec uložím do foldru č.1, 1.sl+3.sl uložím do foldru č.2 ..až 1.sl+101sl ukládám do foldru s názvem 100. To jsou dbf soubory, nakonec původní zdrojový list 101 sloupců smažu, uložim startovací data pro další soubor a uložím pod původním názvem - formát ods.
     Problém je v tom, že jsem upravil několik maker bez "UNA" a kupodivu ukládají jen do prvního a druhého foldru. Při třetím uložení hlásí, že nemůže přečíst nějakou komponentu. První uložení probíhá z formátu ods do dbf, druhé z dbf do dbf a pak chyba.
     Tak jsem to udělal v UNU - nahrávané makro a chodí to jako mraky - které mohu sledovat z okna, protože na compa nesmím ani šáhnout (rychlost je také stejná). Nevím proč to je. Tady je jedno z maker, které jsem upravoval a ladil jak jen mně napadlo - už nevím co by se dalo dělat.

Sub Uloz_DBF 
dim document as object
dim sURL, sDBF as string
dim ii as integer
dim SL as string ' Proměnná načítaná originálně z generátoru (číslo souboru)
FOR ii = 1 To 99 ' Číslo ii - "název foldru a konec názvu souboru dbf"
document   = ThisComponent
SL = 3 'Originálně (číslo souboru) načítá se z generátoru
sDBF = "file:///D:/WorkA/N_pokus/" + ii + "/C_6_49_n_" + SL +"_" + ii+ ".dbf"
    Dim mFileProperties(1) As New com.sun.star.beans.PropertyValue
    mFileProperties(0).Name = "FilterName"
    mFileProperties(0).Value = "dBase"
    mFileProperties(1).Name = "FilterOptions"
    mFileProperties(1).Value = "IBMPC_850"
    document.storeAsURL(sDBF, mFileProperties())
Next ii
End Sub 

Nahrané makro s UNEM jsem udělal bez cyklu a chodí tak jak má. Proč? V cyklu se mi makro s UNO nepodařilo uložit vůbec, tak jsem to víckrát nezkoušel.

Děkuji za radu

Editoval neutr (26. 5. 2012 15:03:31)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#2 25. 5. 2012 19:50:11

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Ukládání makrem do více složek - VYŘEŠENO

Stačí přidat příkaz wait 10 (možná i méně) - systém nestačí vytvářet složky a vkládat do nich soubory.

Sub Uloz_DBF 
dim document as object
dim sURL, sDBF as string
dim ii as integer
dim SL as string ' Proměnná načítaná originálně z generátoru (číslo souboru)
Dim mFileProperties(1) As New com.sun.star.beans.PropertyValue
document   = ThisComponent
SL = 3 'Originálně (číslo souboru) načítá se z generátoru
FOR ii = 1 To 10 ' Číslo ii - "název foldru a konec názvu souboru dbf"
sDBF = "file:///home/dan/Dokumenty/" + ii + "/C_6_49_n_" + SL +"_" + ii+ ".dbf"
    mFileProperties(0).Name = "FilterName"
    mFileProperties(0).Value = "dBase"
    mFileProperties(1).Name = "FilterOptions"
    mFileProperties(1).Value = "IBMPC_850"
    document.storeAsURL(sDBF, mFileProperties())
    wait 10
Next ii
End Sub

;o)


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 26. 5. 2012 05:30:16

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,950

Re: Ukládání makrem do více složek - VYŘEŠENO

To není ono - nefunguje ani 50 milisec.
Hláška systému je : sequence element is not assignable by given value. Tak jsem zkoušel deklarovat více "elementů", ale i méně. Stále stejný výsledek. Například :

    Dim mFileProperties(0) As New com.sun.star.beans.PropertyValue    
    mFileProperties(0).Name = "FilterOptions"
    mFileProperties(0).Value = "IBMPC_850"
    document.storeAsURL(sDBF, mFileProperties())
    wait 50

Nebo také více - což je zřejmě správná cesta, jen nevím jaký parametr deklarovat př.

    Dim mFileProperties(2) As New com.sun.star.beans.PropertyValue
    mFileProperties(0).Name = "URL"
    mFileProperties(0).Value = "file:///D:..........................."    
    mFileProperties(1).Name = "FilterName"
    mFileProperties(1).Value = "dBase"
    mFileProperties(2).Name = "FilterOptions"
    mFileProperties(2).Value = "IBMPC_850"
    document.storeAsURL(URL, mFileProperties())
    wait 50

Zkoušel jsem modifikovat "URL" jak přímou deklarací - a pak také "store URL", tak jak naznačuji výše, nebo i odkazem URL - Value = sDBF
    Stále stejný výsledek - uložím správně do dvou prvních foldrů a pak hláška....Charakter práce vyžaduje mezi uložením vždy mezioperaci - i to mám odzkoušené - a nic. Při tom nahrané makro to umí, a není vidět žádný rozdíl v deklaracích s UNO, a bez UNO.

Editoval neutr (26. 5. 2012 05:38:19)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#4 26. 5. 2012 13:42:20

sedlacekdan
Moderátor
Místo Nehvizdy
Registrace: 21. 6. 2010
Příspěvků: 617

Re: Ukládání makrem do více složek - VYŘEŠENO

Tak chybička bude někde jinde, mě makro fungovalo, protože jsem přesunul definici thisComponent mimo cyklus a dokument se ukládal vždy z původního ods souboru.


Ta chyba bude pravděpodobně v tom, že uplatňujete filtr dBase při ukládání dbf souborů.
Zkusil jsem tuto úpravu a funguje - nejprve uložíme do složky 1 první soubor dbf z ods, následně jen přeukládáme do dalších složek dbf soubor (bez uplatňování úložního filtru):

Sub Uloz_DBF 
dim document as object
dim sURL, sDBF as string
dim ii as integer
dim SL as string ' Proměnná načítaná originálně z generátoru (číslo souboru)
document   = ThisComponent
' Číslo ii - "název foldru a konec názvu souboru dbf"

SL = 3 'Originálně (číslo souboru) načítá se z generátoru
sDBF = "file:///home/dan/Dokumenty/" + "1" + "/C_6_49_n_" + SL +"_" + "1" + ".dbf"
    Dim mFileProperties(1) As New com.sun.star.beans.PropertyValue
    mFileProperties(0).Name = "FilterName"
    mFileProperties(0).Value = "dBase"
    mFileProperties(1).Name = "FilterOptions"
    mFileProperties(1).Value = "IBMPC_850"
    document.storeAsURL(sDBF, mFileProperties())
FOR ii = 2 To 99 
sDBF = "file:///home/dan/Dokumenty/" + ii + "/C_6_49_n_" + SL +"_" + ii+ ".dbf"
    thisComponent.storeAsURL(sDBF, array())
Next ii
End Sub

Zkuste a dejte vědět


;o)


Linux Mint 16 Petra - Apache OpenOffice 4.0.1
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#5 26. 5. 2012 15:02:04

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,950

Re: Ukládání makrem do více složek - VYŘEŠENO

To bylo ono. Dík Dane. Mně to chodí hned od jedničky z ods do dbf, a stejné je to z dbf do dbf.
    Dal jsem do cyklu jen sDBF = .... a Store. Rozdíl v chování programu může být u Tebe dán tím, že to pouštíš na Linuxech. Já mám Wokna XP.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

Zápatí