Ms Access

← ElőzőOldal 3 / 3

Jelentkezz be a hozzászóláshoz.

#40
Ez a paraméteres lekérdezés esete! Hozz létre egy ürlapot, ami rákérdez a ref számra. Azt beviszed egy lekérdezés feltétel sorába és utána hívod meg a lekérdezést!

Titan
#39
Na, jah, de Én azt szeretném, hogy ha rákattintok a jelentésre, akkor kérdezze meg a ref.számot, majd egy entert nyomva ahoz a refszámhoz tartozó elmeket jelenítse csak meg.
A ref.szám=rekord számmal.

Addig eljutottam, hogy beírok neki a beviteli mezõben egy olyat, hogy "@enter", erre kilök az indítás elején egy ablakot, ahova beírhatok paramétert vagy bármit, de nem annak a bevitt paraméternek megfelelõen listázza a jelentést...valami még hiányzik...

#38
Erre való az Openreport metódus! pl: DoCmd.Openreport "Jelentés neve", acViewNormal, "Refszam=valami"

Titan
#37
Aha értem...csak azt nem tudom, hogy mi az a parancssor amivel, csak egy adott rekordra kérdezzen rá és azon értékeket írja csak ki...
Mert most jelenleg az összes rekordot kilistázza a nyomorút, de nekem csak egy kell...
A wordot egyenlõre hanyagolom, mert egyszerûbbnek tûnik a jelentés formázása a doksim mintájára...
Szal a jelentés készítésnél mi az a parancssor, ami egy rekordra adataira vonatkozik?
A másik meg az, hogy mi az a parancssor ami -tól -tólig van?

#36
ok, rendben, értem

rushman
#35
Úgy néz ki, megvan:

Elõször is be kell kapcsolni a Visual Basic ablakban ( tools->references->keresd ki:Microsoft Word 8.0(9.0)Object Library) a Word Object Library-t. Ha ez megvan akkor használhatóvá válnak a word hivatkozási parancsok.

Egy eljárás, mely megnyitja a word-öt, majd hozzáad egy szövegrészt:

Sub eljaras()

Dim WordProgram as New Word.Application
Const Szoveg As String = "Ez íródik be a Wordbe"

WordProgram.Visible = True
'Láthatóvá tesszük a Wordöt
WordProgram.Documents.Add
' Egy új dokumentumot megnyitunk
WordProgram.Selection.TypeText Szoveg
' ...és bele a szövegünk
End Sub


Persze ez csak az alap szemléltetésére írtam, ennél komolyabb dokumentumok és létrehozhatók. További infó a VBA Object Browser-ében.

rushman
#34
Szimplán jelentésként egyszerûbb, ott a jelentés rekordforrása egy olyan lekérdezés, mely a szükséges adatokat tartalmazza.

Megoldható azonban az is, hogy az adatokat átadd egy office alkalmazásnak (így a Wordnek is).

Jelenleg szaraxik az offiszom, ha rendbevágom, utánanézek


Ronny666:nem felejtettelek el!

Titan
#33
Hali skacok!

Beszarok, hogy az agész neten nem találok segítséget access-hez...így ez az utolsó próbálkozásom...
Az a problémám, hogy csináltam egy táblát, amibe gyûjtögetem az adatokat...stb.
Szeretnék olyat csinálni, hogy jelentés formában egy adott rekord adatait egy meghatározott nyomtatványba írja ki!
Tehát van nekem egy ref.számom, amihez tartozik egy csomó adat és ezen a ref.számhoz tartozó adatokat lekérhessem és kinyomtathassam egy nyomtatvány formályában...
A biankó nyomtatványom word-ben van, ha össze lehetne passzítani az király lenne, de ha nem akkor az se baj...
Ha esetleg akad olyan akinek van ICQ-ja, mirce..stb. és on-line tudna segíteni azt nagyon megköszönném!

#32
ok, várom a megoldást...

rushman
#31
beszart az offisz, egyszerûen az access indulásakor hibát jelez, aztán kilép. ma rakom vissza az offisz2000-ret, aztán utána meglesz. Emléletben már megvan, csak át kellem ültetni gyakorlatba is...

#30
rushman, sikerült összetákolni valamit?

#29
köszi mégeccer

rushman
#28
Most már értelek, az általam leírt megoldás tényleg csak következõ rekordra lépés esetén mûködik.
Elsõre az Eval függvény ugrik be, ki is próbálnám, de valami szaraxik az accesssel, újra fel kéne raknom. (mindig ezt írja ki, aztán kilép: hiba a dll betöltése közben)

Holnap v. hétfõn összeütök valamit.

#27
rushman, elõre is köszi a segítséget

#26
rushman: ki tudnál linkelni egy olyan db1-et, amin látszik is, hogy mi a lényeg?
ergo: tudnál csinálni egy olyan táblát/ûrlapot, ahol megvan a megoldás?
Addig ok, hogy indexelem, meg ki is írja a hibát, de csak akkor, ha a következõ rekordra akarok lépni...s nem akkor, amikor lelépek(átlépek) TABbal a köv. beviteli mezõre.
Pl, van 5 beviteli mezõ az ûrlapon, aminek elemei a TAJ tábla (1. számláló:nem lehet módosítani, 2 bev. mezõ: TAJszám (index, nem lehet azonos), 3 bev. mezõ:Név, 4. bev. mezõ: cím, 5. bev. mezõ: szül idõ.)
Namost, úgy kéne, hogy ha a 2. bev. mezõt kitöltöttem az ûrlapon, nyomok 1 TABot, akkor visíton, hogy "Ilyen már van".
Lehet, hogy csak én nem értem amit leírtál?

rushman
#25
úgy hiszem, kis gondok vannak a tábla készítésénél.
alapelv, hogy ha egy olyan mezõt akarok létrehozni (mint nálad a TAJszám), amely nem tartalmazhat két ugyanolyan rekordot, akkor azt kötelezõ indexelni. Tehát vagy elsõdleges kulcsként azonosítom (bár szerintem a nálad egy sorszám mezõ az igazi), vagy csak indexelem. Mindkét esetben hiba lép fel, ha a felhasználó már létezõ adatot akar felvinni, méghozzá akkor, amikor a vezérlõelem (a TAJszám bev.mezõ) elveszti a fókuszt. Ennél egyszerûbb megoldást nem tudok erre a problémára.

Lenne mégegy, de az rendkívül bonyolult, és VBA-ban kellene megírni. Létre kell hozni egy tábla típusú rekordset objektumot, amelynek elemei a tajszám mezõ rekordjai, ezt egy tömbben feltölteni futásidõben, majd a tömb adatait összehasonlítani ( do loop ciklussal) a bevitt adattal. Ha egyezés történt, figyelmeztetni kell a felhasználót, és törölni az általa bevitt adatot. Mégegyszer mondom, szerintem ez felesleges idõpocsékolás.

#24
Igen! Lásd #19

#23
Ez jó megoldás, de csak akkor mûködik, ha már a következõ rekordra lépek. Nekem akkor kéne a vizsgálat, mikor a TAB-bal lelépek a TAJszámok beviteli mezõrõl. Meg lehet csinálni ezt?

#22
Igen, ezért használok én mindig kombinált listát!

rushman
#21
nem, nekem a 2000(még offiszos) tökéletesen bevált!

ápropó, van egy nagy gondom az access-el, nevezetesen a lista vezérlõelem meglehetõsen bugyuta mivolta. Ugyanis nem lehet az elemeket mozgatni (úgy mint általtalában a lista vezérlõelemekkel, pl addItem, removeItem stb.), és már több prodzsektemet ( kellett átírnom miatta.

#20
Ti egyébként ismeritek az Access 2003-at? Mert én nem! :-(

#19
Jó amit Rushman ír, de én a BeforeUpdate() függvénnyel egybõl levizsgálnám a mezõt. Igaz itt meg kell írni hozzá a VB kódot!

rushman
#18
jajj, kihagytam egy fontos parancsot, névszerint kilépni az eljárásból a Hiba: címke elõtt, mert különben végtelen ciklusba kerül a kód!

rushman
#17
és akkor mi baj van?

szerintem azt kellene csinálni, hogy a következõ rekordra lépésnél (2105-ös hibával tér vissza, ha egy indexelt mezõben két ugyanolyan rekord van) figyeljük ezt a hibaszámot, és megjelenítünk egy párbeszédablakot, hogy elbacta a tajszámot, valahogy így:

Private Sub ujrekordCommandbar()

'az újrekord parancsgomb végzi a következõ rekordra
léptetést

On Error GoTo Hiba

'hibafigyelés elhelyezése, hiba esetén ugrás a címkére

DoCmd.GoToRecord , , acNewRec

'következõ rekordra lépés parancssora

Hiba:

'hibakezelés címke
If err = 2105 Then

'2105-ös hiba, tehát nem lehet a követk. rekordra lépni, tudjuk miért!
Msgbox("Hibásan adta meg a tajszámot!", vbExclamation)
DoCmd.GoToControl "tajszammezo"

'a tajszám beviteli mezõre visszük a fókuszt
Exit sub
Else
Resume 0

' egyéb hibánál vissza a hibát kiváltó sorra
End If

End Sub

#16
csak 1 gond van vele...
hogy akkor böki ki, hogy 2 TAJszámot vittem fel, amikor már az összes többi adatot is felvittem, s lépnék 1 következõ rekordra....
nem lehet elõbb vizsgáltatni valahogy?

#15
Fasza, thx...
így mûködik is a dolog

rushman
#14
a legegyszerûbb, ha a tábla tajszám mezõjét indexeled, tehát nem lehet azonos-ra állítod.

a bonyolultabb pedig vba-ban egyrekordhalmaz létrehozásával...

#13
oké, hogyan lehet a vizsgálatot megcsinálni???egyszerûen nem jövök rá...

#12
Ezt még a mezõ frissítése elött kell levizsgálni, nem az ürlapról való lelépés után! Akkor már hibásan felkerült az adatbázisba!

#11
Lenne egy másik kérdésem...
Azt, hogy lehet megoldani, ha ürlapon viszek be 1 adatot, s lelépek róla akkor csináljon egy vizsgálatot, hogy ez az adat már létezik-e, s ha igen, akkor visítson.....
Pl, ne tudjak 2 TAJ számot rögzíteni véletlenül...

rushman
#10
jah, asszem a kópia (replica/adatbázis-többszörözés) ilyen esetekben kitûnõen alkalmazható, próbáld ki (eszközök->többszörözés->kópia) mert én még nem használtam igazából...

#9
Az ott kérdezett számlaszámproblémára nem tudtál választ adni! Van ötleted azóta? Úgy látom a leírtakból, hogy Te azért használod is az Accesst!

rushman
#8
ja, és egyébként ez a módszer tuti tökéletesen mûködik, mert már többször használtam rekordszámlálásra ûrlapon

rushman
#7
gondoltam...

végre lehet hajtani minden vezérlõelemen futásidejû újralekérdezést. Ezt mondjuk a form_afterupdate() eljárásban tudod megtenni, egy vezerloelem.Requery utasítással. Ennyi

#6
nem jó sajnos...
a lista nem frissül a lekérdezéssel együtt, csak ha az ûrlapot újraindítom....

#5
megpróba, thx

rushman
#4
legegyszerûbben: a kijelzõ egy lista (formázva), melynek a rekordforrása a nevezett lekérdezés.

#3
ez rendben van, hogy a Count paranccsal megszámolom, de, mint elõször is kérdeztem, "ki kellene íratnom ezt a számot (ami folyamatosan változik, a bevitt adatoktól függõen) az ûrlapomra. "
Na ezt, hogy veszem ki belõle?

rushman
#2
elõször is ilyen topic már van:itt

másodszor válassz összesítõ lekérdezést, és azon belül a count kifejezést azon mezõben, amelyben a rekordokat meg szeretnéd számolni

#1
Segítsetek nekem lécci...
Ms access-ben van 1 lekérdezésem...Eddig minden ok, de nekem ki kellene számolnom, hogy hány db rekord van a lekérdezésben....
Ha elindítom a lekérdezést, akkor látom, hogy pl. 5 db rekord van benne, de ki kellene íratnom ezt a számot (ami folyamatosan változik, a bevitt adatoktól függõen) az ûrlapomra.
Tudja valaki a megoldást???
Plíz help



← ElőzőOldal 3 / 3