Fájlok közötti adatkitöltés

Táblázatkezelő
Tom-ee
Önkéntesek
Hozzászólások: 53
Csatlakozott: 2011. december 27., kedd 11:24

Fájlok közötti adatkitöltés

Hozzászólás Szerző: Tom-ee »

Sziasztok!

Az alábbi problémára keresek megoldást. (szerintem ez is makróval oldható meg, bár erősen hajaz egy vlookup függvényre) Adott egy táblázat, amely személyek (és járművek) minden lényeges adatát tartalmazza egy cégen belül. Ez egy nagyobb nyilvántartás. Adott továbbá minden személynek egy-egy személyi karton, amely csak pár adatot tartalmaz. Ezek az adatok megtalálhatók a nagy nyilvántartásban is. Azt szeretném elérni, hogy a nagy nyilvántartás kitöltése után a kicsiket már ne kelljen újra, ugyan azokkal az adatokkal feltölteni. (egy fájlon belül egyszerű lenne a feladat, hiszen ha a fő nyilvántartás lenne mondjuk az első munkafüzet, a személyi kartonok pedig a többi, akkor fájlon belül a vlookup függvény kitöltené a szükséges paramétereket, de külön fájlokként kell kezelni őket...)
Arra gondoltam – amennyiben ez megoldható, de vevő vagyok más alternatívára is – hogy csinálnánk egy személyi karton sablont a megfelelő formázásokkal és egy makróval. A személyi karton, mint fájl neve az adott személy neve lenne. Ezt a fájlnevet egy makró megkeresné a nagy nyilvántartás adott oszlopában, és a hozzá tartozó adatokat automatikusan áthozná a nagy táblázatból a kicsibe. Sajnos – mivel nem fájlon belüli adat keresésről van szó – nem hiszem, hogy függvényekkel ez megoldható. Adott sorra, vagy oszlopra nem hivatkozhatok a nagy nyilvántartáson belül, mert ha új ember jön, vagy régi megy el, akkor a sorrend változik, tehát csak konkrét adat alapján kereshetek. (ez nem biztos, hogy a név lesz, lehet, hogy sorszámot kap majd mindenki, vagy a személyi számra keresünk rá, mert Szabó Péterből lehet több is, de személyi száma mindenkinek egyedi van...)

Előre is köszönöm a segítséget!
Csatolmányok
Személyi karton minta.ods
(9.1 KiB) Letöltve 102 alkalommal.
Nyilvántartás minta.ods
(10.64 KiB) Letöltve 105 alkalommal.
OpenOffice 4.1.1 a Windows 7-en
Tom-ee
Önkéntesek
Hozzászólások: 53
Csatlakozott: 2011. december 27., kedd 11:24

Re: Fájlok közötti adatkitöltés

Hozzászólás Szerző: Tom-ee »

“Ez aztán már tényleg adatbázis-kezelési problémának látszik, és nem a táblázatkezelő szoftver való hozzá.”

Ebbe mindig sikerül beleszaladni... =/ Pillanatnyilag – amolyan ideiglenes megoldásnak, amíg nem lesz erre megfelelő szoftver – megfelel a a “barkácsolt” calc-os megoldás, amennyiben van. A függvényekkel operálás lenne számomra az egyszerűbb, mert ahhoz valamennyire értek, a programozáshoz, makrókhoz egyáltalán nem.

“A függvények használata egy folyamatos "online" kapcsolatot jelent a két fájl között, ami nyilvánvalóan sok hibalehetőséget hordoz.

A makró viszont csak az adatátemelés (keresés, szűrés, másolás) idejére teremt kapcsolatot a két fájl között, egyébként mindkét fájl "éli a saját életét" független lesz a másiktól.”

Úgy értelmezem a lehetséges variációk alapján, hogy az egyszeri adatátmentés nekünk tökéletesen megfelel. A fő/nagy nyilvántartás sincs olyan gyakran megnyitva szerkesztésre, esetleg bizonyos lejárati dátumok (pl. orvosi alkalmassági) figyelésére, olvasásra, de ilyenkor adat nem változik. (legalábbis olyan adat nem, ami a személyi kartont érintené) A személyi karton adatait pedig tényleg nem nagyon módosítjuk, talán évente 1-2 alkalommal a könyvelés részére ki kell nyomtatni, de ennyi, lehetnek (sőt most is azok, csak write formátumban) teljesen önálló, “külön életet élő” fájlok. Persze néha napján lehetnek adat változások (pl. költözik és változik a lakcím), de ezt elvileg a nagy nyilvántartásban változtatnánk meg, és a következő személyi karton megnyitásnál a kartonban is módosulnia kellene.
A keresésnél mindegy, hogy egyedi belső azonosítót kap mindenki, vagy a személyi számot (ami mindenkinek egyedi és élete során nem változik) keresünk. Lehetne akár személyi igazolvány szám is, de az (bár elvileg egyedi) néha megváltozik. A személyi szám mellett az szól, hogy nem kell plusz adatot hozzá rendelni senkihez.
Az adatok kezelése egy ember kezében van, az ő gépén, nincs hálózaton, így a hozzáférés, makró futtatás sem okoz gondot. A makróban (megírásában) tudsz segíteni?
OpenOffice 4.1.1 a Windows 7-en
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4034
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Fájlok közötti adatkitöltés

Hozzászólás Szerző: Zizi64 »

A makróban (megírásában) tudsz segíteni?
Ennyi (ilyen kevés) információ alapján a válasz egyértelműen: NEM.

Ha majd egy-egy konkrét részfeladatnál tartasz a megvalósításban, és mutatod, hogy mit írtál eddig a makrókódba,
annak a ki-,/fel-,/megjavításában talán tudok segíteni.

Elsőre nézzük a személyi karton fájlodat.
Kézzel fogod beírni a személyi számot, vagy azt is a nagy fájl listájából akarod választani?
Célszerű ELSŐ oszlopnak berendezni a személyi számot a nagy adatfájlodban (nevezzük az egyszerűség kedvéért ADATBÁZISnak, bár tudjuk, hogy nem az). Akár VLOOKUP függvénnyel keresel benne, akár makróval: könnyebb lesz így a dolgod.

A háttér "adatbázisfájl" megnyitásához a loadComponentFromURL API függvényt kell használnod.
https://wiki.openoffice.org/wiki/HU/Doc ... tarDesktop

Kód: Egész kijelölése

Dim Doc As Object   
Dim Url As String
Dim Dummy() 'A PropertyValues (tulajdonságértékek) üres tömbje 
Url = "file:///C:/test.odt" 
Doc = StarDesktop.loadComponentFromURL(Url, "_blank", 0, Dummy)
Aztán meg kell szólítanod a munkalapot, majd a kívánt sort, oszlopot: cellát, vagy tartományt... Elvégezni a kívánt műveleteket, mejd gyorsan be is zárni a fájlt:
https://wiki.openoffice.org/wiki/Closing_a_document

Kód: Egész kijelölése

sub subClose(oDoc)
if fnSave(oDoc) then
        oDoc.close(true)
        fnClose = true
else
        if msgbox("Unable to save the file before closing." & chr(13) & _
         "Close any way?", 4 + 32, "File not saved warning") = 6 then
           oDoc.close(true)
        end if
end if
end sub
Persze kihagyhatod a kérdéseket, ha biztosan tudod, hogy nem változtattál semmit a fájlban, csakis adatot kértél le belőle...
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4034
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Fájlok közötti adatkitöltés

Hozzászólás Szerző: Zizi64 »

A függvényekkel operálás lenne számomra az egyszerűbb, mert ahhoz valamennyire értek, a programozáshoz, makrókhoz egyáltalán nem.
Így bajos lesz...
Andrew Pitonyak-nak remek API/BASIC példákkal teletűzdelt könyvei vannak, ingyenesen elérhetők.
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4034
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Fájlok közötti adatkitöltés

Hozzászólás Szerző: Zizi64 »

...vagy eleve rosszul értelmezem a feladatot? Lehet, hogy inkább a nagy fájlból kellene indítani a makrót, és az abban szereplő adatokat egy programciklussal "szétszórni" a személyi karton fájlokba?

Ebben az esetben a fő kérdés, hogy a személyi karton fájlnevek hogyan vannak képezve. Ezt vagy olyanra kell csinálni, hogy automatizálható ("kiszámolható") legyen, vagy azokat is le kell tárolni az "adatbázis" egy oszlopába, és onnan elővenni, amikor egyenként meg akarod nyitni a makróval az egyes személyi adat fájlokat.
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Tom-ee
Önkéntesek
Hozzászólások: 53
Csatlakozott: 2011. december 27., kedd 11:24

Re: Fájlok közötti adatkitöltés

Hozzászólás Szerző: Tom-ee »

Erre a változatra nem gondoltam (gondoltunk). Viszont elsőre sokkal kézen fekvőbbnek tűnik. A folyamat ugyanis valahogy úgy néz ki, hogy a nagy "adatbázisba" fel kell tölteni mindent, majd bizonyos adatokat a személyi kartonba is be kell írni. Eddig az volt az elmélet, hogy írjunk be mindent a nagy fájlba, majd nyissunk egy korábban elmentett sablont (ez a személyi karton, csak már névre szólóan átnevezve) és "hívjuk át" az adatokat a nagy fájlból. De sokkal egyszerűbbnek tűnik az, amit Te mondasz, így csak egy fájlt (a nagyot) kell megnyitni. Az adatok kitöltése után mondjuk egy gombbal generálhatna egy új fájlt bizonyos cellák adataival. A generált fájlt (immáron személyi karton) nem is biztos, hogy azonnal vissza fogják nyitni, mert nincs rá azonnal szükség, maximum egy adatellenőrzés céljából, de amennyiben a rendszer működik, egy idő után ez is elmaradhat.
Amennyiben ezt egyszerűbb kivitelezni, nekem jobban tetszik az ötlet. Azonban ahogy ezeket a gondolatokat írom, felmerült egy kérdés: honnan fogja tudni, hogy mely adatokból generáljon új fájlt? Vagy mindig létrehozza a már meglévőket is?
A személyi karton fájlnevei egyébként jelenleg így néznek ki: "Személyi karton - Kiss Pista". Ezt egyszerűsíteni fogjuk ilyenre: "Kiss Pista" Viszont itt még bezavarhatnak az azonos nevek, úgyhogy erre rákérdezek.
OpenOffice 4.1.1 a Windows 7-en
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4034
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Fájlok közötti adatkitöltés

Hozzászólás Szerző: Zizi64 »

Amennyiben ezt egyszerűbb kivitelezni, nekem jobban tetszik az ötlet. Azonban ahogy ezeket a gondolatokat írom, felmerült egy kérdés: honnan fogja tudni, hogy mely adatokból generáljon új fájlt? Vagy mindig létrehozza a már meglévőket is?
A makróval meg lehet vizsgáltatni, hogy LÉTEZIK-E a céltárhelyen az adott nevű fájl. Ha létezik, akkor nem hozza létre újra; vagy nem vizsgál ilyesmit, és MINDET felülírja az aktuális adatokkal.

Ez működhet például úgy, hogy egy "üres" template fájlt nyit meg, és minden ciklusban beleírja az adott személyhez köthető adatokat, majd elmenti a fájlt az automatikusan generált fájlnévvel, felülírva az előző azonos nevűt.
Vagy működhet úgy, hogy "belekukkant" a létező fájlba, és ha változást lát az aktuális "rekord"-hoz képest, akkor végez csak új adatkitöltést és mentést...

...Na, most a gond ezzel csak az, hogy ennek a megoldásnak a részletes kidolgozása és megvalósítása már nem a programcsomag használatával kapcsolatos jó szándékú, önkéntes segítség, hanem effektív MUNKA - a velejáró kellemetlenségekkel (munkadíj) együtt. ;-)
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4034
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Fájlok közötti adatkitöltés

Hozzászólás Szerző: Zizi64 »

Ez még önmagában nem rettentene el - bár jó lenne ismerni egy díjszabást a jövőre való tekintettel.
A fórumon való segítést saját döntésem alapján, önkéntesen (senki meg nem kért rá) végzem. Én is kérdezőként jöttem ide a fórumra, aztán láttam, hogy néhány kérdezőnek én is tudok segíteni.
Semmi kapcsolatom nincs a szoftvercsomagok (AOO/LO) fejlesztőivel - azon kívül, hogy néhány magyar fejlesztő ide is be van regisztrálva, de ritkán néznek be.

A cégemnél egész más területen dolgozunk (áramló mennyiségek mérése ipari környezetben: Flow-Cont Kft.) de a cég keretein belül teljesen hivatalosan tudok ilyesfajta segítő/alkalmazásfejlesztő munkát vállalni. A cég mérnök rezsi-óradíja 10.000,- Ft+ÁFA. (A nettó összegnek én kevesebb mint a felét fogom bruttó bérként megkapni, és még adóznom is kell belőle...)
Azt, hogy hány óra szükséges a rendszer megírásához, azt majd akkor tudom megmondani, ha a feladat végre kikristályosodik. Most még, - ahogy látom - eléggé képlékeny állapotban van.
Sok sikert!
Kovács Tibor (W10x64Pro/W7x64P: 7.5.8;
winPenPack/PortableApps: LO3.3.1-7.6.2, AOO4.1.14
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének szerkesztésével. Írd elé: [Megoldva].
Tom-ee
Önkéntesek
Hozzászólások: 53
Csatlakozott: 2011. december 27., kedd 11:24

Re: Fájlok közötti adatkitöltés

Hozzászólás Szerző: Tom-ee »

Köszönöm, észben tartom. :)
OpenOffice 4.1.1 a Windows 7-en
Válasz küldése