Lekérdezésre alapozott űrlapon nem lehet adatokat módosítani
Lekérdezésre alapozott űrlapon nem lehet adatokat módosítani
Üdv mindenkinek!
Nem értem hogy mi alapján enged/nem enged adatmódosítást a BASE a lekérdezés által visszaadott rácsban, vagy a lekérdezésre alapozott űrlapon.
Annyit véltem felfedezni hogy amennyiben csak egy táblára van alapozva a lekérdezés (és a selectben szerepel az elsődleges kulcs is), akkor már az eredményrácsban is enged szerkeszteni, illetve ha erre a riportra építek űrlapot, akkor engedi az adatok módosítását. De ennek ugye nem sok értelme lenne, akkor már a táblában is szerkeszthetek...
Azonban két tábla esetén már nem egyértelmű számomra hogy miért nem enged bizonyos esetekben adatot módosítani.
Három táblánál meg már bele sem merek gondolni hogy mit csinálok rosszul....
Ha valaki tudja hogy mi a feltétele annak hogy egy több táblás riportra épített űrlappal lehessen adatokat módosítani akkor kérem hogy segítsen, mert ha megzizzenek sem értem meg a logikáját.
Itt egy példa ami nem enged adatot módosítani! Ha törlöm belőle az "IN" részt és a FROM-ból a járőrök-et akkor engedi a módosítást... Ha valaki tud komolyabban segyíteni benne akkor szívesen elküldöm a doksit.
Előre is köszönöm.
SELECT DISTINCT "adatok"."belaz", "adatok"."jaror_azonosito", "adatok"."jaror_nev", "adatok"."esemeny_idopontja", "adatok"."cim_kiadva", "adatok"."JKV_keszult", "adatok"."foglalas", "adatok"."cimkiadastol_foglalasig", "adatok"."jelzestol_foglalasig", "adatok"."elindult_foglalas", "adatok"."elindult_gps_szerint", "adatok"."cimkiadastol_elindulasig", "adatok"."cimkiadastol_elindulasig_gps_szerint", "adatok"."kierkezett_gomb", "adatok"."jaror_menetido", "adatok"."esemeny_beerkezestol_kierkezesig", "adatok"."gyujtas_bekapcsolva", "adatok"."jegyzokonyv_ssz"
FROM "kivstat"."adatok" AS "adatok", "kivstat"."jarorok" AS "jarorok", "kivstat"."parameterek" AS "parameterek" WHERE "adatok"."jaror_azonosito" IN ( SELECT "sorszam" FROM "jarorok" WHERE "irrealis_indulasban_szamitson" = 1 ) AND "adatok"."cimkiadastol_foglalasig" >= "parameterek"."valotlan_indulas_idohatar"
Nem értem hogy mi alapján enged/nem enged adatmódosítást a BASE a lekérdezés által visszaadott rácsban, vagy a lekérdezésre alapozott űrlapon.
Annyit véltem felfedezni hogy amennyiben csak egy táblára van alapozva a lekérdezés (és a selectben szerepel az elsődleges kulcs is), akkor már az eredményrácsban is enged szerkeszteni, illetve ha erre a riportra építek űrlapot, akkor engedi az adatok módosítását. De ennek ugye nem sok értelme lenne, akkor már a táblában is szerkeszthetek...
Azonban két tábla esetén már nem egyértelmű számomra hogy miért nem enged bizonyos esetekben adatot módosítani.
Három táblánál meg már bele sem merek gondolni hogy mit csinálok rosszul....
Ha valaki tudja hogy mi a feltétele annak hogy egy több táblás riportra épített űrlappal lehessen adatokat módosítani akkor kérem hogy segítsen, mert ha megzizzenek sem értem meg a logikáját.
Itt egy példa ami nem enged adatot módosítani! Ha törlöm belőle az "IN" részt és a FROM-ból a járőrök-et akkor engedi a módosítást... Ha valaki tud komolyabban segyíteni benne akkor szívesen elküldöm a doksit.
Előre is köszönöm.
SELECT DISTINCT "adatok"."belaz", "adatok"."jaror_azonosito", "adatok"."jaror_nev", "adatok"."esemeny_idopontja", "adatok"."cim_kiadva", "adatok"."JKV_keszult", "adatok"."foglalas", "adatok"."cimkiadastol_foglalasig", "adatok"."jelzestol_foglalasig", "adatok"."elindult_foglalas", "adatok"."elindult_gps_szerint", "adatok"."cimkiadastol_elindulasig", "adatok"."cimkiadastol_elindulasig_gps_szerint", "adatok"."kierkezett_gomb", "adatok"."jaror_menetido", "adatok"."esemeny_beerkezestol_kierkezesig", "adatok"."gyujtas_bekapcsolva", "adatok"."jegyzokonyv_ssz"
FROM "kivstat"."adatok" AS "adatok", "kivstat"."jarorok" AS "jarorok", "kivstat"."parameterek" AS "parameterek" WHERE "adatok"."jaror_azonosito" IN ( SELECT "sorszam" FROM "jarorok" WHERE "irrealis_indulasban_szamitson" = 1 ) AND "adatok"."cimkiadastol_foglalasig" >= "parameterek"."valotlan_indulas_idohatar"
OpenOffice.org 3.2.1
OOO320m19 (Build:9505)
ooo-build 2010-06-02
WIN XP prof.
OOO320m19 (Build:9505)
ooo-build 2010-06-02
WIN XP prof.
- r4zoli
- Site Admin
- Hozzászólások: 850
- Csatlakozott: 2008. február 17., vasárnap 4:52
- Tartózkodási hely: Budapest
Re: Lekérdezésre alapozott űrlapon nem lehet adatokat módosí
Nincs semmi titok benne az OOo Base felhasználói felület nem támogatja a lekérdezés alapú adatmódosítást.
Olvasd el, és lehetőleg tartsd be az útmutatót a fórum használatához.
AOO 3.4.1 win7, LibO 4.0 win7.
AOO 3.4.1 win7, LibO 4.0 win7.
Re: Lekérdezésre alapozott űrlapon nem lehet adatokat módosí
Tisztelt r4zoli!
Köszönöm a gyors választ!
Az érdekes volt hogy volt olyan két táblás lekérdezés aminél engedte az adatmódosítást, de nem értetem hogy ott miért, és
a másiknál (lásd fent) miért nem.
Tudsz valami megoldást a problémámra?
Munkahelyemen Linux alapu gépeket használunk Open Office 3.2-vel. Olyan elemzéseket kellett végezzek amelyek már komolyan megterhelték a Calc-ot és egyértelmű volt hogy egy adatbázisba importálva és onnan lekérdezve sokkal egyszerűbb.
1. Először lértehoztam az adatbázist beágyazottként (odf), azonban valami miatt rendszeresen összeomlott a BASE és ilyenkor az egész odf fájl megsérült... 2 percenként csináltam biztonsági másolatokat, később újra írtam a riportokat, de nem segített.
2. Ezután felrakattam egy MySql-t és az OOO-t használtam előtétprogramként. Láss csodát azóta nem volt összeomlás.
3. Mivel nincs más lehetőség a cégnél, szükségem lenne az adatok különböző szempontból történő megjelenítésére (feltételek egy másik táblában) ÉS a megjelenített rekordok mezőiben történő adatmódosítás lehetőségére.
Elég nagy probléma ha rászántam ennyi időt és pont arra nem tudom majd használni amire kellene.....
Van valami lehetőség arra hogy mégis használhassam a BASE-t előtétként???
Ha nincs akkor van értelme esetleg egy windows alapú gépet beszereztetnem access-szel? abban van lehetőség a fentiekre?
Előre is köszönöm a problémámra fordított idődet.
Köszönettel: housefly.
Köszönöm a gyors választ!
Az érdekes volt hogy volt olyan két táblás lekérdezés aminél engedte az adatmódosítást, de nem értetem hogy ott miért, és
a másiknál (lásd fent) miért nem.
Tudsz valami megoldást a problémámra?
Munkahelyemen Linux alapu gépeket használunk Open Office 3.2-vel. Olyan elemzéseket kellett végezzek amelyek már komolyan megterhelték a Calc-ot és egyértelmű volt hogy egy adatbázisba importálva és onnan lekérdezve sokkal egyszerűbb.
1. Először lértehoztam az adatbázist beágyazottként (odf), azonban valami miatt rendszeresen összeomlott a BASE és ilyenkor az egész odf fájl megsérült... 2 percenként csináltam biztonsági másolatokat, később újra írtam a riportokat, de nem segített.
2. Ezután felrakattam egy MySql-t és az OOO-t használtam előtétprogramként. Láss csodát azóta nem volt összeomlás.
3. Mivel nincs más lehetőség a cégnél, szükségem lenne az adatok különböző szempontból történő megjelenítésére (feltételek egy másik táblában) ÉS a megjelenített rekordok mezőiben történő adatmódosítás lehetőségére.
Elég nagy probléma ha rászántam ennyi időt és pont arra nem tudom majd használni amire kellene.....
Van valami lehetőség arra hogy mégis használhassam a BASE-t előtétként???
Ha nincs akkor van értelme esetleg egy windows alapú gépet beszereztetnem access-szel? abban van lehetőség a fentiekre?
Előre is köszönöm a problémámra fordított idődet.
Köszönettel: housefly.
OpenOffice.org 3.2.1
OOO320m19 (Build:9505)
ooo-build 2010-06-02
WIN XP prof.
OOO320m19 (Build:9505)
ooo-build 2010-06-02
WIN XP prof.
Re: Lekérdezésre alapozott űrlapon nem lehet adatokat módosí
r4zoli!
Bocs az ismételt zavarásért...
Ha csinálok egy űrlapot aminek az alapja a lekérdezésem (megjelennek egy táblázatbanaz eredmény rekordok) ,
majd beszúrok egy másik űrlapot ugyanarra az űrlaptervre (legyen a neve "Form_adatok") aminél:
tartalomtípus: tábla; tartalom "adatok" , tehát az az űrlap csak a táblára támaszkodik, akkor ebben a rácsban engedi a módosítást (hiszen csak a táblára épül.).
Kipróbáltam és működik akkor is ha a "Form_adatok" alapja egy egytáblás lekérdezés amiben a paraméter a jegyzőkönyv sorszáma.
Tehát azt meg tudom csinálni hogy az űrlap egyik táblázatban megjelenítem a lekérdezés eredményét, itt látom a jegyzőkönyv sorszámát is, és ezt adom meg a másik űrlapnak paraméterként amire a másik táblázat épül...
KÉRDÉS:
- Lehetne írni egy olyan makrót ami a MainForm rácsában kiválasztott rekordsor meghatározott mezőjét (jegyzokonyv_sorszam) használja paraméternek a másik űrlap adatforrásául szolgáló lekérdezésben?
Ebben az esetben ha belekattintok a lekérdezés generálta rácsban a rekrodba akkor a másik rácsban azt a rekordot jelenítené meg az "adatok" táblából (where jegyzokonyv_sorszama= a mainForm rácsában kiválasztott rekord jegyzokonyv_sorszama mezőjének értéke)
Nagyon fontos lenne hogy létezzen valami megoldás az egyszerű adatmódosításra...túl sok időt töltöttem vele ahhoz hogy a főnökömnek azt mondjam hogy kidobott idő volt...
Köszönöm.
Bocs az ismételt zavarásért...
Ha csinálok egy űrlapot aminek az alapja a lekérdezésem (megjelennek egy táblázatbanaz eredmény rekordok) ,
majd beszúrok egy másik űrlapot ugyanarra az űrlaptervre (legyen a neve "Form_adatok") aminél:
tartalomtípus: tábla; tartalom "adatok" , tehát az az űrlap csak a táblára támaszkodik, akkor ebben a rácsban engedi a módosítást (hiszen csak a táblára épül.).
Kipróbáltam és működik akkor is ha a "Form_adatok" alapja egy egytáblás lekérdezés amiben a paraméter a jegyzőkönyv sorszáma.
Tehát azt meg tudom csinálni hogy az űrlap egyik táblázatban megjelenítem a lekérdezés eredményét, itt látom a jegyzőkönyv sorszámát is, és ezt adom meg a másik űrlapnak paraméterként amire a másik táblázat épül...
KÉRDÉS:
- Lehetne írni egy olyan makrót ami a MainForm rácsában kiválasztott rekordsor meghatározott mezőjét (jegyzokonyv_sorszam) használja paraméternek a másik űrlap adatforrásául szolgáló lekérdezésben?
Ebben az esetben ha belekattintok a lekérdezés generálta rácsban a rekrodba akkor a másik rácsban azt a rekordot jelenítené meg az "adatok" táblából (where jegyzokonyv_sorszama= a mainForm rácsában kiválasztott rekord jegyzokonyv_sorszama mezőjének értéke)
Nagyon fontos lenne hogy létezzen valami megoldás az egyszerű adatmódosításra...túl sok időt töltöttem vele ahhoz hogy a főnökömnek azt mondjam hogy kidobott idő volt...
Köszönöm.
OpenOffice.org 3.2.1
OOO320m19 (Build:9505)
ooo-build 2010-06-02
WIN XP prof.
OOO320m19 (Build:9505)
ooo-build 2010-06-02
WIN XP prof.
- r4zoli
- Site Admin
- Hozzászólások: 850
- Csatlakozott: 2008. február 17., vasárnap 4:52
- Tartózkodási hely: Budapest
Re: Lekérdezésre alapozott űrlapon nem lehet adatokat módosí
Lehet hogy makró nélkül is megoldható, lásd a példa fájlt az angol fórum hozzászólásból.: http://user.services.openoffice.org/en/ ... 39&t=32499
Ezt a fenti megoldást találtam elsőre, ahol az alűlap adata alapján frissíti a főürlap adatait
A makró programozásba nem merültem el, nincs rá időm és kedvem se igen.
Ezt a fenti megoldást találtam elsőre, ahol az alűlap adata alapján frissíti a főürlap adatait
A makró programozásba nem merültem el, nincs rá időm és kedvem se igen.
Olvasd el, és lehetőleg tartsd be az útmutatót a fórum használatához.
AOO 3.4.1 win7, LibO 4.0 win7.
AOO 3.4.1 win7, LibO 4.0 win7.
Re: Lekérdezésre alapozott űrlapon nem lehet adatokat módosí
Köszönöm!
OpenOffice.org 3.2.1
OOO320m19 (Build:9505)
ooo-build 2010-06-02
WIN XP prof.
OOO320m19 (Build:9505)
ooo-build 2010-06-02
WIN XP prof.
Re: Lekérdezésre alapozott űrlapon nem lehet adatokat módosí
Mellékeltem egy megoldási lehetőséget.
- Csatolmányok
-
- proba_table.odb
- (14.85 KiB) Letöltve 113 alkalommal.
tamasaz
Re: Lekérdezésre alapozott űrlapon nem lehet adatokat módosí
a teszt űrlap - makroval kezelt
a teszt2 űrlap - varázslóval létrehozott főűrlap - alűrlap
a teszt2 űrlap - varázslóval létrehozott főűrlap - alűrlap
- Csatolmányok
-
- proba_table.odb
- (23.1 KiB) Letöltve 112 alkalommal.
tamasaz
Re: Lekérdezésre alapozott űrlapon nem lehet adatokat módosí
létrehoztam egy lekérdezést két táblából "Lekérdezés_teszt1" néven;
ennek felhasználásával készítettem egy űrlapot "Lekérdezés_teszt1" néven;
ezen az űrlapon bármely adatbeviteli billentyű megnyomására a "teszt2"."teszt21" mezőt átírja "javítva" szövegűre
a rács billentyűzet figyelő eseményéhez írt macro alapján el tudsz indulni
ennek felhasználásával készítettem egy űrlapot "Lekérdezés_teszt1" néven;
ezen az űrlapon bármely adatbeviteli billentyű megnyomására a "teszt2"."teszt21" mezőt átírja "javítva" szövegűre
a rács billentyűzet figyelő eseményéhez írt macro alapján el tudsz indulni
- Csatolmányok
-
- proba_table.odb
- (32.05 KiB) Letöltve 130 alkalommal.
tamasaz
Re: Lekérdezésre alapozott űrlapon nem lehet adatokat módosí
köszönöm, megnézem!
Mennyire vagy otthon az OOOBase űrlap vezérlőelemeinek elérésében, és értékeinek kiolvasásában makró szinten?
housefly
Mennyire vagy otthon az OOOBase űrlap vezérlőelemeinek elérésében, és értékeinek kiolvasásában makró szinten?
housefly
OpenOffice.org 3.2.1
OOO320m19 (Build:9505)
ooo-build 2010-06-02
WIN XP prof.
OOO320m19 (Build:9505)
ooo-build 2010-06-02
WIN XP prof.
Re: Lekérdezésre alapozott űrlapon nem lehet adatokat módosí
Megnéztem az eredeti kérdésben megadott SQL-t és a következőket találtam:
0: a lekérdezésed eredmény csak egy táblából jön, tehát elvileg szerkezthető
1: FROM "kivstat"."adatok" AS "adatok", "kivstat"."jarorok" AS "jarorok", "kivstat"."parameterek" AS "parameterek"
helyett:
2:FROM "kivstat"."adatok" AS "adatok", "kivstat"."parameterek" AS "parameterek"
3: WHERE "adatok"."jaror_azonosito" IN ( SELECT "sorszam" FROM "jarorok" WHERE "irrealis_indulasban_szamitson" = 1 )
helyett:
4: WHERE "adatok"."jaror_azonosito" IN ( SELECT "jarorok"."sorszam" FROM "kivstat"."jarorok" AS "jarorok" WHERE "jarorok"."irrealis_indulasban_szamitson" = 1 )
Próbának készítettem egy hasonló lekérdezést - nekem működött.
Készítettem egy Űrlapot Rács vezérléssel - majd futás közben cserélgettem alatta az adatforrást:
oForm.Commandtype=0
oForm.Command= "tábla neve"
oForm.reload
oForm.Commandtype=1
oForm.Command= "lekérdezés neve"
oForm.reload
oForm.Commandtype=2
oForm.Command= "SELECT ...."
oForm.reload
Azt találtam, hogy ha rácsban megjelenítendő adatok csak egy táblából származtak lehetett szerkeszteni.
Ha olyan lekérdezést készítünk, melynek eredményében több táblából származó adatok vannak, akkor már nem lehet szerkeszteni.
Természetesen ezt az esetet is lehet kezelni, de akkor ezt már programozni kell:
a rács billentyűzet kezelő eseményét felhasználva meghatározható, hogy mely sorban és oszlopban vagyunk
event.source.column ; event.source.model.row . Készíthetünk pl. egy dialog ablakot ahová kitehetjük az adott cella eredeti értékét és egy szerkeszthető mezőt az új érték bevitelére. Mentéskor pedig végre kell hajtani a megfelelő táblán a megfelelő update-t és reload.
0: a lekérdezésed eredmény csak egy táblából jön, tehát elvileg szerkezthető
1: FROM "kivstat"."adatok" AS "adatok", "kivstat"."jarorok" AS "jarorok", "kivstat"."parameterek" AS "parameterek"
helyett:
2:FROM "kivstat"."adatok" AS "adatok", "kivstat"."parameterek" AS "parameterek"
3: WHERE "adatok"."jaror_azonosito" IN ( SELECT "sorszam" FROM "jarorok" WHERE "irrealis_indulasban_szamitson" = 1 )
helyett:
4: WHERE "adatok"."jaror_azonosito" IN ( SELECT "jarorok"."sorszam" FROM "kivstat"."jarorok" AS "jarorok" WHERE "jarorok"."irrealis_indulasban_szamitson" = 1 )
Próbának készítettem egy hasonló lekérdezést - nekem működött.
Készítettem egy Űrlapot Rács vezérléssel - majd futás közben cserélgettem alatta az adatforrást:
oForm.Commandtype=0
oForm.Command= "tábla neve"
oForm.reload
oForm.Commandtype=1
oForm.Command= "lekérdezés neve"
oForm.reload
oForm.Commandtype=2
oForm.Command= "SELECT ...."
oForm.reload
Azt találtam, hogy ha rácsban megjelenítendő adatok csak egy táblából származtak lehetett szerkeszteni.
Ha olyan lekérdezést készítünk, melynek eredményében több táblából származó adatok vannak, akkor már nem lehet szerkeszteni.
Természetesen ezt az esetet is lehet kezelni, de akkor ezt már programozni kell:
a rács billentyűzet kezelő eseményét felhasználva meghatározható, hogy mely sorban és oszlopban vagyunk
event.source.column ; event.source.model.row . Készíthetünk pl. egy dialog ablakot ahová kitehetjük az adott cella eredeti értékét és egy szerkeszthető mezőt az új érték bevitelére. Mentéskor pedig végre kell hajtani a megfelelő táblán a megfelelő update-t és reload.
tamasaz