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

Adatbázis kezelő

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

HozzászólásSzerző: housefly » 2010. szeptember 27., hétfő 1:57

Ü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"
OpenOffice.org 3.2.1
OOO320m19 (Build:9505)
ooo-build 2010-06-02
WIN XP prof.
housefly
 
Hozzászólások: 5
Csatlakozott: 2010. szeptember 27., hétfő 1:30

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

HozzászólásSzerző: r4zoli » 2010. szeptember 27., hétfő 7:09

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.
Avatar
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í

HozzászólásSzerző: housefly » 2010. szeptember 27., hétfő 22:06

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.
OpenOffice.org 3.2.1
OOO320m19 (Build:9505)
ooo-build 2010-06-02
WIN XP prof.
housefly
 
Hozzászólások: 5
Csatlakozott: 2010. szeptember 27., hétfő 1:30

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

HozzászólásSzerző: housefly » 2010. szeptember 28., kedd 10:15

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.
OpenOffice.org 3.2.1
OOO320m19 (Build:9505)
ooo-build 2010-06-02
WIN XP prof.
housefly
 
Hozzászólások: 5
Csatlakozott: 2010. szeptember 27., hétfő 1:30

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

HozzászólásSzerző: r4zoli » 2010. szeptember 28., kedd 16:00

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.
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.
Avatar
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í

HozzászólásSzerző: housefly » 2010. szeptember 28., kedd 20:06

Köszönöm!
OpenOffice.org 3.2.1
OOO320m19 (Build:9505)
ooo-build 2010-06-02
WIN XP prof.
housefly
 
Hozzászólások: 5
Csatlakozott: 2010. szeptember 27., hétfő 1:30

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

HozzászólásSzerző: tamasaz » 2010. október 13., szerda 12:40

Mellékeltem egy megoldási lehetőséget.
Csatolmányok
proba_table.odb
(14.85 KiB) 71 alkalommal.
tamasaz
tamasaz
 
Hozzászólások: 11
Csatlakozott: 2009. február 20., péntek 14:51

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

HozzászólásSzerző: tamasaz » 2010. október 14., csütörtök 7:12

a teszt űrlap - makroval kezelt
a teszt2 űrlap - varázslóval létrehozott főűrlap - alűrlap
Csatolmányok
proba_table.odb
(23.1 KiB) 65 alkalommal.
tamasaz
tamasaz
 
Hozzászólások: 11
Csatlakozott: 2009. február 20., péntek 14:51

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

HozzászólásSzerző: tamasaz » 2010. október 14., csütörtök 11:42

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
Csatolmányok
proba_table.odb
(32.05 KiB) 81 alkalommal.
tamasaz
tamasaz
 
Hozzászólások: 11
Csatlakozott: 2009. február 20., péntek 14:51

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

HozzászólásSzerző: housefly » 2010. október 28., csütörtök 11:06

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
OpenOffice.org 3.2.1
OOO320m19 (Build:9505)
ooo-build 2010-06-02
WIN XP prof.
housefly
 
Hozzászólások: 5
Csatlakozott: 2010. szeptember 27., hétfő 1:30

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

HozzászólásSzerző: tamasaz » 2010. október 28., csütörtök 12:06

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.
tamasaz
tamasaz
 
Hozzászólások: 11
Csatlakozott: 2009. február 20., péntek 14:51


Vissza: Base

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 0 vendég