140
Ms Access
  • rushman
    #60
    valamikor beszéltünk a lista-kombinált lista témáról,

    namost az nem jön össze, hogy egy listát feltöltök adatokkal, és mondjuk a felh. kiválaszt egyet, kattintásra előjön egy másik űrlap a választott értékkel (eddíg megy), majd ha kilép, akkor ezt az értéket kiszedi a lista tartalmából (na ez nem!). Ezt excelben meg tudom csinálni, mivel ott a lista vezérlőelemnek van additem, és removeitem metódusa, amivel ez megoldható, viszont az accessnek nincs, és ezt valahogy mindenképp meg kéne csinálnom, mert máshogy egész egyszerűen nem tudom...
  • Zipus
    #59
    Add meg részletesebben, hogy mi az adatbázis összetétele, hátha össze tudunk hozni valamit!
  • Dj Révész
    #58
    Egyébként csak ezt az egy adatbázist szeretném összehozni, mert a cégnél ahol dolgozom még nincs ilyen. Gondoltam bevágódok a séfnél:-) Alapokat tanultam, de inkább csak használni, mint tervezni tudom(sajna)
  • Dj Révész
    #57
    Köszi! Meg fogadom a tanácsaitokat! Egyébként a leírtakon kívül semmi extra nem lessz benne, úgy hogy csak össze hozom valahogy:-)
  • Zipus
    #56
    Igazad van, mindennek az alapja a tervezés, normalizálás! Anno tanárom úgy tanította, hogy adatbázis programozásnál a munka 70%-a a tervezés 30 %-a a programozási munka! Teljes mértékben igaz!
    Ha mindezt jól csináltad, akkor is közbejöhet még, hogy a megrendelő a mintaadatbázis bemutatásakor benyögi: jó, jó, de ezt meg ezt szeretné még látni, bevinni stb.
    Ez a méreg!
  • rushman
    #55
    Ajánlanák egy-két könyvet elolvasásra, amelyek adatbázis-tervezéssel foglalkoziknak (szoftverfüggetlenül), mert ezen ismeretek nélkül maximum egy alapszintű adatbázist tudsz összehozni, tele hibával. Saját baklövéseimen tapasztaltam (többször is), hogy nem voltak jól megszerkesztve a táblák, kapcsolatok, és a fejlesztés közepénél ki kellett dobnom a munkám felét, mert elcsesztem a tervezést.

    Tehát olvass egy kicsit a téma ezen részéről, mert óriási segítség a későbbiekben
  • Zipus
    #54
    Igen, azt tartalmazzák! De, ez a legegyszerűbb forma! Ez amit már felvázoltál egy raktárgazdálkodási nyilvántartás lenne bonyolult formában. Neked el kell dönteni milyen mélységben szeretnél belemenni!
    pl. cikkszám alapján lehetne azonosítani egy terméket, ami alapján én felvinném a be-és kimenő forgalom táblába, hogy mi jön illetve megy.
    Ez egy kombinált listába jelenne meg a ki-és be táblára épülő űrlapon. Ezen felül már csak a mennyiséget kellene konkrétan bevinni.
    Ha persze ezt még bővíteni szeretnéd azzal, hogy melyik partner mit vitt illetve hozott, akkor ez már egy segédtáblát is igényel!
    Szóval a döntés, hogy mit szeretnél a te kezedben van!
  • Dj Révész
    #53
    Hát gondoltam, hogy nem lesz egyszerű:-). És a másik két tábla az mit tartalamazzon? Ezek tartalmazzák majd külön a be, és külön a kimenő forgalmat? Ezt le lehet így fórumon vázolni, vagy ne fárasszalak:-)?
  • Zipus
    #52
    Értem, hogy mit szeretnél, ez azonban nem olyan egyszerű, hogy egy tábla alapján megoldható!
    Minimum létre kell hozni két táblát és két azokra szerkesztett űrlapot és ezekbe kell felvinned a te tábládat használva a ki-és bejövő forgalmat. Ezek alapján aztán már bármilyen lekérdezést meg lehet valósítani! Na persze,ha a táblákat, kapcsolatokat megfelelően megtervezted. Normalizálás! :-)
  • rushman
    #51
    nem igazán tiszta, mit akarsz
  • Dj Révész
    #50
    Hahó, nincs megoldás?
  • Dj Révész
    #49
    Sziasztok! Az a kérdésem, hogy ha van egy saját adatbázisom, pl: külömböző áruk, ezek színei, tulajdonságai, cikkszám, darabszám stb. Hogyan lehet a leg könnyebben meg csinálni azt, hogy követni lehessen a kijövő, bejövő forgalmat.Lehet ehhez valami jó kis űrlapot szerkeszteni??
  • rushman
    #48
    egyébként a tajszám ellenőrző utasítás valahogy így nézne ki:

    Private Sub tajszammező_AfterUpdate()

    Dim db As Database, rst As Recordset, adat as Long

    Set db = CurrentDb
    Set rst= db.OpenRecordset("ideírdaTAJTábládnevét", dbOpenTable)
    ' tábla típusú rekordhalmaz megnyitása

    adat = ide írd a TAJszám mező elérési útját, utána .Value pl: Me.Tajszam.Value
    ' adat változóban tároljuk a felh. bevitt értéket, később ezt hasonlítjuk össze a rekordhalmaz elemeivel

    rst.Seek "=", adat
    If rst.NoMatch Then
    Exit Sub 'nincs egyezés, ezért kilépés
    Else
    MsgBox"Van már ilyen TAJszám!"
    DoCmd.GoToControl Tajszam beviteli mező neve
    End If

    rst = Nothing
    db = Nothing
    ' Kiürítés

    End Sub

    Viszont az van ezzel, hogy nálam nem akar működni, csak access98-on. Ennyire jutottam...

  • rushman
    #47
    ilyen esetekre a rekordforrás nem egy tábla, hanem vagy egy létező lekérdezés (lsd:Zipus), vagy egy helyben szerkesztett sql utasítás
  • Zipus
    #46
    Ez miért gond? A lekérdezésbe az összes táblát beviszed, amiben benne vannak a celláid és utána írod a mező sorba ugyanazt!
  • ronny666
    #45
    Ez fasza, thx!!!

    És mi van akkor, ha a cellák különböző táblában vannak? Akkor már nem megy a dolog, erre is megoldásod???
    Pl:
    1 tábla, első cella: Tajszám
    1 tábla, második cella: Családi név
    2 tábla, első cella: Utónév
    3 tábla, első cella: Utónév 1

    A lekérdezésben a CsN+Un+Un1-et kéne összevegyíteni..
  • Zipus
    #44
    Egyszerű a kérdés:
    A lekérdezésbe beviszed azt a táblát amiben ezek a mezők szerepelnek és utána a mező sorba begépeled:
    valami:[Tajszám]&[Családi név]&[Utónév]&[utónév1]
    Bár nem értem mi szükség van lekérdezésben erre! Jelentésnél érthetőbb!
  • ronny666
    #43
    Sziasztok, abban segítsetek nekem lécci, hogy lekérdezésnél, hogyan lehet 2,3 cellát egybe illeszteni.
    Tehát: van 1 lekérdezésem, ami lekérdezi a nevet:
    0. cella: Tajszám
    1. cella: Családi név
    2. cella: Utónév
    3. cella: utónév 1

    Igenám, de ez nekem egy cellába kéne 1 rendezni a nevet a későbbi feldolgozások miatt....
    Van valakinek ötlete???
  • SoDI---
    #42
    Zipus azt akarja mondani, hogy a jelentés annak a lekérdezésnek az adatait vegye alapul, amelyik megkérdi, hogy mi legyen a refszám.
  • Zipus
    #41
    nem a lekérdezést, jelentést!!!
  • Zipus
    #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...
  • Zipus
    #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?
  • ronny666
    #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!
  • ronny666
    #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...
  • ronny666
    #30
    rushman, sikerült összetákolni valamit?
  • ronny666
    #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[i/] 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.
  • ronny666
    #27
    rushman, előre is köszi a segítséget
  • ronny666
    #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.
  • Zipus
    #24
    Igen! Lásd #19
  • ronny666
    #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?
  • Zipus
    #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.