Adatbázis megfelelő elemeinek másolása

Táblázatkezelő
batyu82
Hozzászólások: 6
Csatlakozott: 2016. október 2., vasárnap 22:32

Adatbázis megfelelő elemeinek másolása

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

Üdv mindenkinek!

A cím nem lehetett túl hosszú, úgyhogy kifejteném:
Van egy exportált rendeléslista.
Az első sor tartalmazza a vevő összess kontaktadatát és az első rendelt termék nevét, darabszámát, árát.
A második sor ugyanez, de a második termékkel.
és így tovább a rendelés végéig. Az azt követő sor a következő vevő kontaktját tartalmazza, az általa rendelt első termékkel, stb

Ebből kellene egy nyomtatható megrendelőlapot összeállítani.
Ha csak egyetlen név van, könnyű.
Arra van szükségem, hogy legalább 30 ilyen megrendelőlap legyen egymás alatt/mellett,
DE a termék neve, darabszáma és ára csak akkor legyen listázva, ha a megrendelő neve megegyezik az adott megrendelőlapon lévővel
ÉS a vevő neve nem azonos a már listázottal.
A dolgot még egy picit csavarja, hogy minden terméknek van egy kódja és ez növekvő sorrendben kellene, hogy szerepeljen, de ha a fentiek teljesülnek, ezt egy egyszerű S-oszlop alapján történő rendezéssel is meg lehet oldani.

remélem, sikerült érthetően leírnom. csatolok egy példafájlt is (benne hagytam az eddigi felemás próbálkozásaimat is)

Tud valaki segíteni?
Csatolmányok
példalap.ods
(16.25 KiB) Letöltve 120 alkalommal.
OpenOffice 4.1.2
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4034
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Adatbázis megfelelő elemeinek másolása

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

Csak ötletelek... Ezekkel a beépített funkciókkal próbálkoztál már?

- Kimutatás tábla (más néven adattündér, vagy Pivot tábla)?
- Általános (vagy irányított) szűrő? (a leszűrt adatokat rögtön a kijelölt helyre másolhatja)
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].
batyu82
Hozzászólások: 6
Csatlakozott: 2016. október 2., vasárnap 22:32

Re: Adatbázis megfelelő elemeinek másolása

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

Köszönöm a választ és egyben bocsánat: nem a fenti értelmezésben nem adatbázis, csak hirtelen nem tudtam jobb szót a "több száz sornyi adat ömlesztve"- re :)
Tehát ez egy weboldalról letöltött rendeléslista. A fálj nem külső hivatkozást tartalmaz, csak az első "ord" munkafüzetlapra hivatkozik. Láttam, hogy gond volt a hivatkozással, talán azért mert csak 18 sort hagytam bent példának, a többit töröltem.
De sajnos a képlet amúgy sem működött jól. :-/
A Pivot tábla és a szűrő annyira nem jó megoldás, nem látnom kell az adatokat, hanem az "ord"-ból átmásolni a Munkafüzet2-be. Ott van egy formázott kis megrendelőlap a képletekkel.
Azt próbálom megoldani, hogy amikor az "ord" mezőbe bemásoljuk a megrendelést, a másik lapon automatikusan legyen 100 megrendelőlap.
A megrendelt termékeknek ABC sorrendben kell lenniük (ezt akár rendezhetjük manuálisan is), tehát arra gondoltam, hogy
az első megrendelőlap automatikusan az első sorból veszi az adatokat (név, rendelésszám, cím, első termék)
mivel az "ord" lapon a termékek ABC sorrendben vannak, itt már csak az kell, hogy a 2. - 3. - stb terméket beírja, HA a "D" oszlop (megrendelő neve) tartalma megegyezik a C16-al (megrendelő neve az első megrendelő esetében, nyilván mindegyiknél más)
ÉS a termék még nem szerepel.

A második lapnál a címadatokat szűri, tehát az első olyan találat jelenik meg az "ord" megfelelő oszlopából, ami eddig nem szerepelt, a termékek ugyanúgy listázódhatnak.
A gondot tehát az jelenti, hogy ami már egyszer találat volt, ne lehessen újra az.

Előre is köszi a segítséget. :)
OpenOffice 4.1.2
Avatar
Zizi64
Globális moderátorok
Hozzászólások: 4034
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Adatbázis megfelelő elemeinek másolása

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

Tehát ez egy weboldalról letöltött rendeléslista. A fálj nem külső hivatkozást tartalmaz, csak az első "ord" munkafüzetlapra hivatkozik. Láttam, hogy gond volt a hivatkozással, talán azért mert csak 18 sort hagytam bent példának, a többit töröltem.
De sajnos a képlet amúgy sem működött jól. :-/
Hibaüzenetként fájl-hiányt írt ki a Calc, és az Edit - Linkek menüpontban 4 tétel szerepelt, ezért gondoltam, hogy különálló fájlokra hivatkoztál. És főleg azért, mert - most látom csak - az "Ord" lap jelen van a mintafájlodban...

A rendeléslistára mindenképpen szükség lesz a segítéshez. Vagy az eredeti adatokkal, vagy - ha az érzékeny adatokat tartalmaz - az eredetivel azonos struktúrájú, fals adatokkal kitöltve legalább 3 oldalnyi adatra, azzal a kiegészítő információval, hogy melyik oszlop mit jelent...
Szükség van még további információkra, például olyan aprónak látszó részletekre, mit például:
- Ha egy oldalnál hosszabb lesz egy Megrendelőlap (mert sok tételt rendelt egy Megrendelő személy), akkor az minden oldalon kell, hogy tartalmazza a Megrendelő adatait, vagy csak az elsőn? Miből lehet majd azonosítani - mondjuk nyomtatás után -, hogy melyek tartoznak össze?
- Fix számú üres sor van az előreformázott Megrendelőlap sablon lapon?
- Egyetlen oldal van előre megformázva a sablon Megrendelőlapon? A többi (kb. 99, vagy több/kevesebb darab) lap formázása is a feladat része?
- Elegánsan, jól kezelhetően, makrókkal könnyedén vezérelhetően a Cellastílusokkal; vagy Microfostos, barkácsolós közvetlen (direkt) formázásokkal tervezed megformázni a Megrendelőlapokat? (Amit most láthatunk, az már a "formázott" állapot lenne?)
- Az Rendeléslista adathalmaza eleve rendezve van, kézzel rendezed, vagy a rendezés is beletartozik a feladatba?
- Mi szerint (melyik oszlop szerint van rendezve a Rendeléslista?
- Ha egy személy több dolgot is vásárolt, akkor - ahogy írod, és ha jól értem - annak csak egy sorban kell szerepelnie, de vajon a az adott tételre vonatkozó vásárlások árának összegével, vagy egyetlen diszkrét adattal?

Az egész feladat egyébként tipikus Adatbázis kezelési feladat, nem a Calc a legalkalmasabb a megvalósítására. Az Adatbázis kezelő (Base) használatában nem tudok segíteni, mert én se értek hozzá.

A Pivot tábla és a szűrő annyira nem jó megoldás, nem látnom kell az adatokat, hanem az "ord"-ból átmásolni a Munkafüzet2-be. Ott van egy formázott kis megrendelőlap a képletekkel.
Ha másolni kell, akkor a képletek, cellafüggvények használata bizonyosan nem jó megoldás. Egyébként se látom a módját, hogy miként lehetne a képleteket annyira "dinamikusan" használni, hogy a Megrendelő személyenkénti eltérő számú megrendelést normálisan lekezelje:
- Hogyan tudnád képlettel érzékelni, hogy egy Megrendelőnek már nincs több tétele, és új "fejlécet" kell gyártani? Több száz sorban kellene olyan embertelenül komplex képletet használnod (ami minden egyes aktív cellában lekezel a lista hosszától függő MINDEN véletlenszerűen oda kerülő esetet - egyszerre a Fejlécadatokat és Lista adatokat is -) ami labilissá tenné a működést.
- Gondolom, hogy nyomtatásnál el kell, hogy különüljön (külön lapokra kerüljön) egy-egy Megrendelő személy tételeinek listája...
- Hogyan tudnál képlettel oldaltörést beszúrni, ha egy fél oldalnál véget ér egy Megrendelő személy tételeinek listája?

Makró kell ehhez az én véleményem szerint. Méghozzá nem is egyszerű makró, makrórendszer... De ezt neked kell megírnod, és csak segíteni tudok a kód javításában, ha (egy teljes értékű mintafájllal együtt) feltöltöd ide a próbálkozásodat.

De véleményem szerint inkább el kellene mozdulnod az adatbázis kezelés megtanulásának és alkalmazásának irányába...
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: Adatbázis megfelelő elemeinek másolása

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

Már csak azért is kellene egy működő példafájl, mert ezen bármit csinálok mindig összeomlik tőle a program.
Próbáltam frissíteni a linkeket, próbálta mellőzni a frissítést, próbáltam törölni a linkeket...
Ennek ellenére nem tudok még egy névvel ellátott tartományt sem létrehozni a fájlodban, mert azonnal összeomlik.

Egy tiszta, más - nem létező - forrásokra való hivatkozások (Linkek) nélküli, továbbá működésképtelen képleteket nem tartalmazó minta fájl kellene ahhoz, hogy BÁRMIT ki tudjak próbálni rajta. Csak adatok legyenek benne és kézi átmásolással kigyűjtött adatok a másik lapon.
Itt az első üzenet rögtön a megnyitás után.
Itt az első üzenet rögtön a megnyitás után.
Akár frissítem, akár nem; akár törlöm, akár megtartom a linkeket, az összeomlás elkerülhetetlen.
Akár frissítem, akár nem; akár törlöm, akár megtartom a linkeket, az összeomlás elkerülhetetlen.
Itt például csak kijelöltem, és törölni akartam a képleteidet, és máris összeomlott.
Itt például csak kijelöltem, és törölni akartam a képleteidet, és máris összeomlott.
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: Adatbázis megfelelő elemeinek másolása

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

Ezt Calc képletekkel nem lehet megcsinálni (de legalábbis nem célszerű hozzákezdeni ilyen módon).
(...Azon túl, hogy ez egy tipikus Adatbázis kezelési feladat, és nem a táblázatkezelővel kellene barkácsolnod. De ahogy már írtam: adatbázis kezelés ügyben semennyit nem tudok segíteni.)

Szerintem a szűrőket kellene használnod, aztán másolgatni az eredményt - manuálisan.

...Vagy makróval vezérelni a szűrőket, és automatikusan másolgatni az eredményeket.
...Vagy mechanikusan (ciklikusan) végigvizsgálni az adatokat, és a makrókkal "szétdobálni" az adatokat a megfelelő helyekre.

De a makrós megoldáshoz látnom kellene, hogy mennyit tudsz a makrókról (nem a rögzítővel felvett makrókról, hanem az API függvények felhasználásával megírt makrókról...) Helyetted megírni nem fogom a makrókat, de ha látom, hogy egy kis segítség továbblendít egy aktuális problémán, akkor - képességeimhez mértem - megpróbálok majd segíteni.
De ha még nem tudod, hogy egy adott cellát hogyan kell "megszólítani makróval" és a tartalmát egy változóba kiolvasni, akkor célszerűbb előbb némi időt szánni az AOO/LO programmal történő vezérlésének megismerésére (nekem néhány év kellett ahhoz, hogy a mai "barkácsolós szintemre" elérjek), vagy keresni valakit, aki hivatásszerűen ilyen feladatok megoldására vállalkozik. (Nagy valószínűséggel ő is az adatbázisokkal történő megvalósítást fogja javasolni...)


Tippek a ciklikus vizsgálathoz:
A vásárlók neveinek vizsgálata közben egy többdimenziós tömbváltozót (Array) kell feltöltened a vizsgálat során először előforduló nevekkel. A tömbben tárolhatod akár azt is, hogy az adott évhez tartozó eredmény-cellatartomány adatai hányadik sorban kezdődnek. Ehhez a sorhoz képest kiszszámított eltolásokkal kell a megfelelő adatokat elhelyezned. Persze egy másik ágában a tömbnek gyűjtened kell azt is, hogy egy adott vásárló esetében hányadik vásárolt/feldolgozott tételnél jársz. Ezen vezérlő adatok alapján már egy-egy adatsor adatai megfelelőképpen szétrendezhetők (átírhatók/átmásolhatók) a megfelelő célterületre.
Ehhez folyamatosan (minden tétel esetében) végig kell pörgetni a tömböt a nevek szerint, hogy megállapítsd, hogy az éppen soron következő név szerepelt-e már. Ha igen, akkor növeled az ő tételeinek számát. Ha nem, akkor következő vásárlóként a nevet hozzáadod a tömbhöz.
A tömb éppen használatban lévő "koordinátái" és az ahhoz tartozó tömbadatok alapján a vizsgált tétel (sor) adatai már elhelyezhetők az eredmények közö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: Adatbázis megfelelő elemeinek másolása

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

A fő probléma ugye az, hogy az első olyan elemet kell listáznia ami megfelel a keresési feltételnek és még nem szerepel az előző eredmények között.
Ebben a példában:
1. olyan állat, ami még nem szerepel a jobb oldali "eredmény" szakaszban
2. olyan étel, ami az adott állathoz kapcsolódik és még nem szerepel
De arra még most se adtál egyértelmű mintapéldát, hogy ha egy vásárlónak több azonos nevű terméket is szállítottál (több alkalommal), akkor azok
- Külön tételként szerepeljenek az eredmény-táblában mindegyiknél az aktuális összeggel
- Egyetlen tételként szerepeljen, de az ár összegezve az adott személy összes azonos nevű tételének ára alapján
- Egyetlen tételként (csak az első megtalált) szerepeljen egyetlen (csak az első, hozzá tartozó) árral.
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].
batyu82
Hozzászólások: 6
Csatlakozott: 2016. október 2., vasárnap 22:32

Re: Adatbázis megfelelő elemeinek másolása

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

Üdv,

kicsit továbbgondoltam, mutatom az eredményt:
Csináltam egy nagyobb mintafájlt az eredeti alapján, hogy jobban lehessen látni.
4 lapból áll.
Az első (ord)azt mutatja, ahogyan én megkapom a weblapról a megrendeléseket.
A (munkalap2) csak azért készült, hogy átlátható legyen, az ord-nál el van csúszva a fejléc.
A Megrendelő nevű a megrendelőlap, ott van a kívánatos végeredmény első oldala, ami a
(k1) nevű pivot táblázatból nyeri az eredményt.
Így most már összesített és könnyen áttekinthető az adatforrás is.
Ami még hiányzik, az maga a megrendelőlap rendelés része, azaz:
- ha k1 B oszlopában (az elsőnél. alatta a másodiknál ez már D, utána F, stb) szám szerepel, akkor az adott sorban szereplő termék neve van a "Megnevezésnél", a szám a "Mennyiségnél" és az "Egységár" pedig a harmadik oszlopban mellette.
A HA-függvény adattömbként való alkalmazását gondoltam megoldásnak, de valamiért nem működik, csak a hamis eredményt adja vissza.
Javaslat esetleg?
OpenOffice 4.1.2
batyu82
Hozzászólások: 6
Csatlakozott: 2016. október 2., vasárnap 22:32

Re: Adatbázis megfelelő elemeinek másolása

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

OpenOffice 4.1.2
Válasz küldése