Oldal: 1 / 1

Lekérdezésre alapozott űrlapon nem lehet adatokat módosítani

Elküldve: 2010. szeptember 27., hétfő 1:57
Szerző: housefly
Ü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"

Re: Lekérdezésre alapozott űrlapon nem lehet adatokat módosí

Elküldve: 2010. szeptember 27., hétfő 7:09
Szerző: r4zoli
Nincs semmi titok benne az OOo Base felhasználói felület nem támogatja a lekérdezés alapú adatmódosítást.

Re: Lekérdezésre alapozott űrlapon nem lehet adatokat módosí

Elküldve: 2010. szeptember 27., hétfő 22:06
Szerző: housefly
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.

Re: Lekérdezésre alapozott űrlapon nem lehet adatokat módosí

Elküldve: 2010. szeptember 28., kedd 10:15
Szerző: housefly
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.

Re: Lekérdezésre alapozott űrlapon nem lehet adatokat módosí

Elküldve: 2010. szeptember 28., kedd 16:00
Szerző: r4zoli
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.

Re: Lekérdezésre alapozott űrlapon nem lehet adatokat módosí

Elküldve: 2010. szeptember 28., kedd 20:06
Szerző: housefly
Köszönöm!

Re: Lekérdezésre alapozott űrlapon nem lehet adatokat módosí

Elküldve: 2010. október 13., szerda 12:40
Szerző: tamasaz
Mellékeltem egy megoldási lehetőséget.

Re: Lekérdezésre alapozott űrlapon nem lehet adatokat módosí

Elküldve: 2010. október 14., csütörtök 7:12
Szerző: tamasaz
a teszt űrlap - makroval kezelt
a teszt2 űrlap - varázslóval létrehozott főűrlap - alűrlap

Re: Lekérdezésre alapozott űrlapon nem lehet adatokat módosí

Elküldve: 2010. október 14., csütörtök 11:42
Szerző: tamasaz
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

Re: Lekérdezésre alapozott űrlapon nem lehet adatokat módosí

Elküldve: 2010. október 28., csütörtök 11:06
Szerző: housefly
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

Re: Lekérdezésre alapozott űrlapon nem lehet adatokat módosí

Elküldve: 2010. október 28., csütörtök 12:06
Szerző: tamasaz
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.