Hirdetés

2024. április 23., kedd

Gyorskeresés

Hozzászólások

(#1) csika


csika
tag

Hi!
Volna egy nagy kérdésem.
Egy táblát akarok feltölteni Formon (Űrlapon) keresztül.
Hogy lehet azt megcsinálni, hogy ha bezárom a Formot (Windozos X-el, vagy nyomógombbal) akkor ne mentse el a táblába?
Próbáltam már nyomógómbra makrót is betenni, ami bezárja a formot mentés nélkül de akkor is beleteszi.
Swichboardon keresztül akarom elérni a Formot. Azonban Add in mod-ban vagy Edit módban nyitom meg akkor sem úgy működik ahogy én akarom.
Néztem a varázsló segítségével létrehozott mintaadatbázisokat is, de ott is fennt állt ez a probléma.
Acces 97-ben kéne ezt megcsinálni.
Mi lehet erre a megoldás?
Tudja valamelyikőtök?

Előre is köszi,
csika

Magyarok! Férfiak és asszonyok! Hallgassátok csika vezért!

(#2) rdi válasza csika (#1) üzenetére


rdi
veterán

tegyél föl egy mégse gombot :))
Delphi alatt ez egy destroy ha jól emlékszem, biztos visuálban is megoldható. Illetve az accesban van gomb amivel vissza mutathatsz egyelőző ablakra , nem ?

Fej! Tor! Potroh!

(#3) csika


csika
tag

Igen váltani todok ablakot, de attól még ott marad mögötte nyitva a Form amit be kellett volna zárni ...
Nincs delfin meg ilyesmi, csak Acces tömören ...

Magyarok! Férfiak és asszonyok! Hallgassátok csika vezért!

(#4) rdi válasza csika (#3) üzenetére


rdi
veterán

Nekem meg accesem nincs itt. De mivel úgy emlékszem, hogy megoldható, ezért megnézem otthon.

Fej! Tor! Potroh!

(#5) rdi


rdi
veterán

Akkor itt egy megoldás (?)

Szóval az ürlapon létre hozol egy gombot aminek az exit feliratot adod. Ezután bemész a tulajdonságaiba, ott az esemény sorban lévő hármas pontra kattintva eljutsz a visuak basic szerkesztőbe ahol beírod, vagy átírod a már meglévő sort:

rivate Sub Parancsgomb10_Click()
On Error GoTo Err_Parancsgomb10_Click


DoCmd.Close

Exit_Parancsgomb10_Click:
Exit Sub

Err_Parancsgomb10_Click:
MsgBox Err.Description
Resume Exit_Parancsgomb10_Click

na ennyi.

esetleg szépítheted azzal, hogy ha nem akarod menteni a már beírt rekordot, akkor kilépéskor eseményként törölje a beírt mezőket.

hej,hej... :)

Fej! Tor! Potroh!

(#6) csika


csika
tag

Igen, pont azt akarom, hogy Exit-re ne mentse bele a Form tartalmát a táblába.

A gomb alatt nekem is az van mint amit írtál te is.

Onclick eseményre futattja le ezt a Event procedure-t. Ezt én a varázslóval kattogtam össze. De mondom egyezik azzal amit írtál.
Az érdekelne, hogy hogyan tudom törölni a Form-ra bevitt adatokat, ha lenyomom ezt a gombot hiszen az onclicken már a kilépés van.


Az adattáblába csak úgy tudja lementeni a Formot ha minden mező ki van töltve.
A Formot Switchboard-ról nyitom meg, nemtom ez mennyit számít.

Magyarok! Férfiak és asszonyok! Hallgassátok csika vezért!

(#7) jeges válasza csika (#6) üzenetére


jeges
senior tag

én ezt csak úgy tudtam megcsinálni, ha egy külön adattáblát hoztam létre a formnak, az eredeti táblával azonos adatszerkezettel.
a form forrástáblája a külön segédtábla, az ok gombra a már beírt adatokat külön add query-vel áthelyezem a végleges helyükre és törtlöm a segédtáblát, a cancel gombbal viszont csukom a táblát és egy del query-vel törlöm a segédtábal adatait.
pl ha az ''adatok'' nevű táblába szerenék dolgozni, ahhoz csinálok egy ''adatok_tmp'' táblát. a form forrása az ''adatok_tmp'',
ok gombra futtatom az add query-t, ami az ''adatok_tmp'' aktuális sorát hozzáadja az ''adatok''-hoz és egy delete query-t, ami törli az ''adatok_tmp'' adatait.
cancel gombra csak az utóbbi del query-t futtatom
arra köll még vigyázni, hogy a rekordléptetéseket hogyan oldod meg :)

nem állítom, hogy egyszerű, de ezzel a megoldással tudtam csak korrektül megoldani a dolgot

mod: a korrekt megoldás alatt azt értem, hogy a ''megkezdett'', és autosorszámot is tartalmazó sort ne kelljen törölni, mer' akkó megszakad a folyamatos sorszámozás, ami nem túl elegáns...

[Szerkesztve]

(#8) csika


csika
tag

Hát az elvet értem én, de a megoldás nekem sötét még.

Ennyi query? Nem makro-t akartál írni. Makróval másolni át egyik táblából a másikba? Mert én olyan makrtót nem találok, csak copy objectet és delete objectet, de az más ...
Hogyis?

Magyarok! Férfiak és asszonyok! Hallgassátok csika vezért!

(#9) rdi válasza csika (#8) üzenetére


rdi
veterán

Csinált egy átmeneti táblát, amit nem véletlenül nevezett el tmp kiterjesztésűre.
Adatot véglegesen csak ezen az átmeneti táblán keresztül ment el, ha nem akar menteni akkor distroy parancs vagy vmi ilesmi, gondolom.
Minden adattáblához csinált ilyet.
Úgy emlékszem, én is csináltam hasonlót vmelyik adatbázisnál. Fő az elegancia :)

Fej! Tor! Potroh!

(#10) csika


csika
tag

Mondom az elvet értem.
De mivel viszi át az adatot a tmp-s táblából a másikba?
Makroval? Akkor melyikkel? Mert én nem találtam ...

Destroy meg nekem kinai az Accesben ...

Magyarok! Férfiak és asszonyok! Hallgassátok csika vezért!

(#11) rdi válasza csika (#10) üzenetére


rdi
veterán

nincs a visulba olyasféle parancs, hogy sortörlés?
amikor elindítod a kilépés eseményt, akkor sorban végrehajt mindent az exit parancs előtt.
Ugye delphiben az adatbeviteli hálón (ha ezt magyarul hálónak hívják ?) viszed be az adatokat, és csak akkor mented az adatbázisba, ha befejezted az adatbevitelt és leokézod.
Ha nem akarod menteni és úgy kilépni akkor sima close parancs, ami bezárja a formot és kész. Úgyhogy most én nem értem.
Ha törölni akarsz, és nem fontos az elegancia, akkor simán betöltöd az adathalmazt, törölsz, aztán mentessz. Kicsit csúnya, ha egyedi sorszámot generálsz, de ugye több elvi lehetőséged is van javítani.

Fej! Tor! Potroh!

(#12) Luxurka válasza csika (#1) üzenetére


Luxurka
tag

Hello!

Szerintem leg1xübbben úgy tudod megoldani (bár elég régiek az
access ismereteim), ha az értékét eseményre iratod be a megfelelő mezőbe.
pl:

sub beiro
textbox értéke = x mezővel és stb
end sub

aztán ezt szépen meghivod egy gombbal és beirkálja az adatokat
ha meg kilépsz a formból,akkor nem történik semmi.

Na elég zavaros volt? :)
Holnapra aszt hiszem tudok biherálni egy példát is.....ha kell



[Szerkesztve]

(#13) csika


csika
tag

rdi: nem értelek. Én egy hete még nem is lőttem az Acceshez, csak kaptam vele egy szép kis melót. Delfin meg visual azt asse tudodom micsoda ...
Jelen esetben a form egy táblába néz bele. Azzal is szívtam 2 napot, hogy a formmal ne lehessen látni az adatbázisban lévő adatokat. A formot swichboardon keresztül nyitom meg Add-in módban. Ezt át kéne állítani? Mert akárhogy zárom be a formot, bezárásra is bementi a táblába (ha makróval zárom be és a makróba azt állítom be, hogy ne mentsen akkor is belementi ...)

Törlés se lenne gond. Raktárkészletet kell csak nyilvántartani, nem kell sorszámozni.

Luxurka: nekem sajnos télleg zavaros volt. Várom a példát akkor nagyon.

Előre is köszi a segítséget mindannyiótoktól.

Magyarok! Férfiak és asszonyok! Hallgassátok csika vezért!

(#14) rdi válasza csika (#13) üzenetére


rdi
veterán

Nem véletlenül nem írtam példát, csak programozási elvet próbáltam leírni.
Már elég régen nem írok programot, amikor írtam akkor se sokat, tehát minden egyes lépést újra kell csinálnom. Ahhoz meg elég lusta vagyok.
Raktári nyilvántartást kell csinálnod, arra meg van mintaprogram, nem ?
Várom Luxurka példáját én is.

[Szerkesztve]

Fej! Tor! Potroh!

(#15) csika


csika
tag

Hát van mindtaadatbázis ... az nem túl jó ...

Nekem sokkal kevesebb mezőt kell letárolnom, kivenni nem lehet belőlel a fölösleget ... lényeg nekem más kell.
A Formnál ráadásul be lehet látni nála a táblába, régebbi adatokat át lehet írni stb ...
Nálam a készletmozgás lenne csak letárolva az aktuális készletet ebből számolja ki egy lekérdezés ... Ennek meg nemnagyon jó ha átírják a tábláját ...

Magyarok! Férfiak és asszonyok! Hallgassátok csika vezért!

(#16) jeges válasza csika (#13) üzenetére


jeges
senior tag

no, bocsesz, nem vótam...
az átmeneti táblából a végleges helyre egész egyszerűen egy add query-vel raktam át...csináltam egy add query-t, ami a _tmp-ből a véglegesbe tolja a megfelelő sort, és docmd.runquery-vel (vagy hasonlóval) az ok gomb onclick eseményekor futtattam a query-t, aztán a másik query-t, ami törölte az adott sort.
a cancel gomb megnyomásakor (onclick) pedig csak a törló lekérdezést

az add-in módú megnyitás jó arra, hogy ne lássa a júzer az adatokat, de arra nem, hogy a sorszámozás ne szakadjon meg, mert az új rekord megnyitásakor, ha bármit (!!!!) beír, módosít a felhasználó, már lérejön az új rekord, aminek már akkor van autosorszáma. ezzel a runquery-vel azt érem el, hogy csak akkor jön létre új sorszám a végleges táblában, ha a felhasználó exaktul kifejezi azon akaratát, hogy hozzam létre az új rekordot (ok gomb). ha pedig nem (cancel gomb), akkó' törlöm a _tmp tábla adatait, és nem nyúlkálok bele a véglegesbe.

(#17) jeges válasza csika (#15) üzenetére


jeges
senior tag

ha nagy a készlet, vagy méginkább, ha nagy a készletforgalom, vagy ha többen is használnák az adatbázist, jó kontrollja a készletmozgás adattáblába való irkálás ellenőrzésére, ha külön letárolod bizonyos időközönként a konkrét készletet (pl naponta vagy hetente).
külön ellenőrző rutinnal összevethető így, hogy a korábban tárolt készet megegyezik-e a forgalomból származtatható készlettel :)
ha naponta tárolod, így a készlet lekérdezése is sokkal gyorsabb lehet bármilyen múltbeli időpontra :)
(merhogy ugye nem köll a bazi nagy forgalom táblában matatni)

egyébként meg módosító felületet nem feltétlen köll csinálni, vagy csak nagyon szűk körben...(létrehozni meg stornózni lehet így, de átírogatni nem)

(#18) jeges


jeges
senior tag

hja, és a félreértések elkerülése végett destroy nem na'on van az access-ben :)
(legjobb tudomásom szerint)
ezér' is kölött ezt a bonyolult, de sztem sok szempontból jó elkerülő megoldást használni...az se utolsó előnye pl, hogy egyszerre többen is rögzíthetnek adatokat úgy, hogy nem ''fogják le'' az éles adattáblát (a _tmp tábla nálam lokálisan tárolódott, így gyorsabb is az adatbevitel, a végleges meg központilag, backupolható módon, biztonságosabban).

(#19) rdi válasza csika (#15) üzenetére


rdi
veterán

Akkor viszont valahol van az accesben olyan funkció, hogy az adatbázis zárolása, hogy ne módosíthasson, csak mentéskor programból fusson a módosítás.
Nyilván vannak különböző jogosultságok az adatbázis kezelésére, nem?
Az addquery az meg visual parancs?

Fej! Tor! Potroh!

(#20) csika


csika
tag

Jeges: küldtem egy levelet a ph-ban megadott címedre.
Válaszolj rá plíz.


Nem nagy adatbázis lenne, és nem is lenne hálózati módja.
Egy ember kezelné.

Magyarok! Férfiak és asszonyok! Hallgassátok csika vezért!

(#21) jeges válasza rdi (#19) üzenetére


jeges
senior tag

nem, add query úgy kezdődik, hogy ''add'', azaz egy táblához rekordokat hozzáadó lekérdezés :)
(amennyire tudom, viszonylag sztenderd sql parancs)

sajna egyébként ilyen funkció nincs, épp ez a gond, ezér' kellett külön táblába' tárolni...:U

(#22) jeges válasza csika (#20) üzenetére


jeges
senior tag

nézem, nézem, de egyelőre nem gyön... :U
este több időm lenne ránézni... :B

(#23) jeges válasza csika (#20) üzenetére


jeges
senior tag

no, meggyött, kűddtem választ is, írd meg, melyik megoldás érdekel! :)

(#24) Luxurka válasza csika (#13) üzenetére


Luxurka
tag

halihó! jaj de régen volt már access
Szóval csinálsz egy űrlapot és belrakosgatod a beviteli mezőidet,
de minden hivatkozás (kötetlen!) nélkül. Legyen ez egy szimpla beviteli mező.
Hivatkozási neve legyen: beviteli 1
Ezután save és ha okés akkor jöhet a VB editor ALT+F11
Elvileg a class objects-ek között megjelenik a Form_''Form neve''

Private Sub Parancsgomb4_Click()
Set dbs = CurrentDb '' Adatbázis beállítása, a jelenlegi
Set rst = dbs.OpenRecordset(''bla'') ''bla tábla beállítása
rst.AddNew ''Új rekord hozzáadása
rst![beviteli 1] = bevitelimezo1
rst![beviteli 2] = bevitelimezo2
rst.Update
End Sub

Aztán ezt az kis progit meghívod egy gombbal a formból, ha lefut, akkor felveszi
az adatokat, ha nem fut le, akkor nem csinál semmit :D
Ja, de a kizárásokat azt mindet NEKED kell beleprogramozni, de
szerintem megéri!
Na azért megirtam accessban is, de csak 2000-et találtam itthon és magyart, de vszinu müködik angolon is.
Elküldöm mindjárt
üdv
Lux!

(#25) Luxurka


Luxurka
tag

Ha a MSN is úgy akarja akkor megkaptátok, ha nem akkor sikítani!
Tényleg hol lehetne jól delphi(n)-ül +tanulni?

(#26) jeges válasza Luxurka (#24) üzenetére


jeges
senior tag

működik az angolból is, de ha jól emléxem, csak ha a dao struktúra megfelelően van beállítva :)

közbe' én is csináltam példaadatbázist, elkűdtem, hátha :)

(#27) csika


csika
tag

Luxurka:
Köszi, de változtak az adataim, mindjárt frissítettem itt is.
csika@primposta.com-ra küld el légyszi. Másikat nem tudok cégtől olvasni.
És nekem Acces97 van a cégnél (angol). De max megnézem majd otthon 2002-esben, és akkor már át tudom ültetni a cuccost ...
Köszi.

Magyarok! Férfiak és asszonyok! Hallgassátok csika vezért!

(#28) Luxurka


Luxurka
tag

Azt hiszem elment, bár ebbe a nyamvadt MSN (forró levél)-ben soha nem bizok.
Ha nem kaptad volna meg, akkor elküldtem rdi-nek is. Én csak este leszek
otthon, mert megyek falat kaparni :) Ha nem jön össze, akkor elküldöm még 1x este 10 után.

(#29) csika


csika
tag

Luxurka:
Köszi, megjött, de Acces 97-be nem tudom megnézni. otthon megnézem 2002-ben.
Thx.

Magyarok! Férfiak és asszonyok! Hallgassátok csika vezért!

(#30) csika


csika
tag

OFF

Az emelcímem akartam itt átírni, mert már nem használom amit a regisztrációkor megadtam. Átírom. Ki is írja hogy sikeres regisztráció/adatmódosítás. Mégse változik ...
Miért is

ON

Magyarok! Férfiak és asszonyok! Hallgassátok csika vezért!

(#31) jeges válasza csika (#29) üzenetére


jeges
senior tag

konvertáltam előző verzióba (mivel ez 2000es vót, feltehetőleg 97be) :U
próbáld megnyitni amit mostan kűttem :)

(#32) Luxurka válasza csika (#30) üzenetére


Luxurka
tag

Szerintem accessban van a nyilvántartás :P
Na mind1

(#33) KSanya válasza csika (#1) üzenetére


KSanya
tag

Nekem is ugyanez volt a problémam, és íme a megoldás:

Létrehozol egy parancsgombot, ami a form bezárását csinálja, és átírod a kódot:

If Me.Dirty then
Me.Undo
end if

ezt kell beírni a

DoCmd.Close

sor elé.

A formon be lehet állítani, hogy ne legyen az X bezáró gomb a jobb felső sarokban, és már meg is vagy, mert így csak a bezárás gombbal tudod bezárni a formot, ami viszont nem menti el a változást

(#34) rdi válasza KSanya (#33) üzenetére


rdi
veterán

Na ugy-e!
Működik ?

Fej! Tor! Potroh!

(#35) KSanya válasza rdi (#34) üzenetére


KSanya
tag

nekem így megy egy eszköznyilvántartás :)

(#36) csika


csika
tag

Köszi a segítséget mindenkinek.

Külön köszönet jegesnek a sok-sok segítségért.

Az adatbevitel már működik rendesen ... most jönnek majd a lekérdezések ... :)

Magyarok! Férfiak és asszonyok! Hallgassátok csika vezért!

(#37) F-ECT$


F-ECT$
titán

Ha van egy Access táblám (akarmi.mdb), akkor azt Java-n keresztül, hogy tudom elérni?

Dive ever, work never.

(#38) F-ECT$


F-ECT$
titán

UP!

Dive ever, work never.

(#39) F-ECT$


F-ECT$
titán

FEL!

Dive ever, work never.

(#40) Axxel válasza F-ECT$ (#39) üzenetére


Axxel
csendes tag

Bővebben: link

'A gyerekeimet CONTROLnak, ALTnak és DELnek fogom nevezni. Ha Valami gond lesz velük, csak megütöm őket kétszer és minden rendbejön''

(#41) F-ECT$ válasza Axxel (#40) üzenetére


F-ECT$
titán

Kösz! Én is keresgéltem a Neten, csak nem találtam ilyen jó leírást.

Dive ever, work never.

(#42) xkacsa


xkacsa
csendes tag

.

[Szerkesztve]

(#43) xkacsa


xkacsa
csendes tag

Nekem is lenne egy kérdésem.
.mdb fájlban van két tábla
Az egyikből egy mező utolsó 5 karakterét át kellene másolni a másik tábla egy mezőjének utolsó 5 karakterét felülírva úgy, hogy a többi ne változzon

Pl:
1.tábla A mezője . . . . . . . 2.tábla B mezője
12:34:56:78:9A . . . . . . . AF:00:12:12:12

ebből kellene ez:

1.tábla A mezője . . . . . . . 2.tábla B mezője
12:34:56:78:9A . . . . . . . AF:00:16:78:9A

(#44) jeges válasza xkacsa (#43) üzenetére


jeges
senior tag

ez akkor oldható meg, ha a felülírandó tábla bármely rekordjához a másik tábla egyetlen rekordja rendelhető hozá vmilyen kulccsal. a legjobb az 1:1 kapcsolat

ekkor csinálsz egy update query-t, amibe a két táblát egymáshoz illesztve berakod, és az egyik tábla meghatározott mezőjét felülírod a másik tábla meghatározott mezőjével.
ennek már csak a ''finomított'' változata a következő:
legyen mezo1 a felülírandó és mezo2 az új adatot tartalmazó mező!
mezo1-et update-eld a
mid(trim(mezo1),1,len(trim(mezo1))-5) & mid(trim(mezo2),len(trim(mezo2))-4;5)
kifejezéssel, és meg is vagy! :)

(#45) DrSoul


DrSoul
őstag

Sziasztok!
Most hülyét fogtok kapni tőlem, mert nem értek a programozáshoz.
Létre szeretnék hozni egy adatbázist access-el. Office2000 magyar.
Tulajdonképpen a videokazettáimat szeretném leltározni, ill. majd valamikor a CD-ket is.
NEm szimpla listát szeretnék: jó lenne, ha csak egy űrlapot kelljen csak kitötenem, és a film bekerül az adatbázisba, melyet aztán listázhatok több szempont szerint. Pl. akár csak egyszerűen az összes filmet, vagy akár beírok egy színész nevet, és kiírja, milyen filmek vannak meg nekem, vagy a jellege szerint (vígjáték, dráma stb.). MEg persze könnyebb lenne kikeresni, hogy melyik kazettán van (kód szerint) stb. Tudom, hogy van ilyesmi, hogy táblákat összekötni, de hogy konkrétan hogy oldom meg az egészet, az nem megy. :DDD
Azt nem tudom, ezek a változók mehetnek-e mind egy táblába, vagy több táblát kell létrehozni. Nézegettem az Access helpjét, de sokra nem jutottam.
Tudnátok tippeket adni? Csak ha van időtök, az alapoktól kéne, mert ilyet még nem csináltam. Nekem a help nem segített sokat, de ha tudtok valami jó (letölthető) e-book-ot, vagy ilyesmit, az is jó (ha lehet, magyarul).
Köszi! :C

[Szerkesztve]

Mindig az X jelöli a pontot...

(#46) doc


doc
nagyúr

Nekem is van kérdésem Access-szel kapcsolatban:
szeretnék egy olyan beviteli maszkot, ahova irányítószám, városnév, utca és házszám kerülne. ilyesmivel próbálkoztam:

0000, LCCCCCCCCCCCCCCCCC, LCCCCCCCCCCCCC 099999999

de nem fogadja el, amit beírok neki
plíz adjatok építő javaslatokat!

(#47) jeges válasza doc (#46) üzenetére


jeges
senior tag

ezt egy mezőbe akartad besuvasztani? :U
egyszerűbb vón sztem úgy, hogy külön mezőbe teszed az irányítószámot (aminek tényleg lehet ''0000'' maszkot beállítani), külön mezőbe a várost, utca nevét, házszámot. utóbbi 3-at sztem nem jó ötlet maszkolni, mer' nem csak egyforma karakterszámú város- és utca-nevek léteznek, de az irányítószámot megkötheted 4 karakterre :)
(ha jól emléxem, az ''A'' betűvel mutathatod meg az accessnek, hogy oda karaktert vársz, és ''0''-val, hogy számot - közbe kipróbáltam, és tényleg :) )

(#48) jeges válasza DrSoul (#45) üzenetére


jeges
senior tag

asszem access-be van video-téka példaadatbázis, próbáld meg azt megnézni, hogy müxik (ha más nem, a micosoft oldaláról letölthető). lehet belőle tanulni - legalábbis ami az adatszerkezet felépítését illeti.
segítségképpen: ha a példaadatbázis úgy indul el, hogy nem látszik maga az adatszerkezet (pl. táblák, lekérdezések, stb), az adatbázis indításakor nyomd folyamatosan a shiftet, és akkó' megjelenik :)
hja, és ha kezdő vagy, az űrlapokat csilivili varázslókkal is elő lehet állítani, ebből is sokat tanulhatsz.
jó szórakozást :)

(#49) doc válasza jeges (#47) üzenetére


doc
nagyúr

ezt egy mezőbe akartad besuvasztani?
akarja a fene, de ez van a tankönyvben levő feladatban :(
azért is akartam LCCCCCC-t, mert elvileg ez egy kötelező és sok opcionális karakter, de legfeljebb megoldom sima szövegként

de van más kérdésem is:
hogy tudok hivatkozni egyik táblából egy másik elemére?
pl. remekül működik az érvényességi feltételnél a <[ADAT] , ha az aktuális táblában van, de másik táblában levő adatra hogy tudok hivatkozni? próbáltam a <[MASIK.ADAT]-ot, de nem jött össze...

(#50) jeges válasza doc (#49) üzenetére


jeges
senior tag

próbáld így:
[MASIK].[ADAT]
vagy
[MASIK]![ADAT]

:)

Copyright © 2000-2024 PROHARDVER Informatikai Kft.