3 Excel vs Access - Döntés a gyakorlatban

A gyakorlatban a legtöbb levéltáros vagy történész két Microsoft program között választ: Excel vagy Access. Ebben a fejezetben megvizsgáljuk, hogy mikor melyiket érdemes használni, és hogyan lehet áttérni Excelből Accessbe.

3.1 Mi az Excel és mi az Access?

Mielőtt eldöntjük, melyiket használjuk, meg kell értenünk, hogy mire tervezték őket. Az Excel és az Access ugyan mindkettő a Microsoft Office része, de alapvetően különböző problémákat oldanak meg.

3.1.1 Excel: A táblázatkezelő (Spreadsheet)

Az Excel 1985-ben jelent meg. Az alapelv egyszerű: egy hatalmas táblázat, ahol minden cella tartalmazhat számot, szöveget vagy képletet.

3.1.1.1 Mire tervezték az Excelt?

1. Számolásra és pénzügyi elemzésre

Az első táblázatkezelők (1970-es évek) számviteli feladatokhoz készültek: költségvetés tervezése, bevételek-kiadások követése, “Mi lenne, ha…” elemzések.

Példa: Költségvetés

         A               B          C          D
1    Kategória       Terv_Ft    Valós_Ft   Eltérés_Ft
2    Személyi        5000000    4850000    =C2-B2
3    Dologi          2000000    2150000    =C3-B3
4    Beruházás       3000000    2900000    =C4-B4
5    ───────────────────────────────────────────────
6    Összesen        =SUM(B2:B4) =SUM(C2:C4) =SUM(D2:D4)

Ha megváltoztatjuk a B2 cellát → azonnal frissülnek az összes kapcsolódó cella. Ez az Excel erőssége: dinamikus, interaktív számolás.

2. Adatelemzésre és vizualizációra

  • Pivot táblák (1994): Húzd-és-dobd összesítések
  • Grafikonok: 50+ típus - szépen formázható
  • Conditional formatting: Cellák automatikus színezése érték alapján

3. Gyors prototípus készítésére

Az Excel azonnal elindítható, nincs szükség adatbázis-tervezésre - megnyitjuk, beírjuk az adatokat.

Jellemzői:

  • Képletek és függvények: 400+ beépített függvény (SUM, AVERAGE, VLOOKUP, IF, DATE…)
  • Grafikonok: Szép vizualizációk, interaktív elemek
  • Pivot táblák: Gyors összesítések húzd-és-dobd módszerrel
  • Makrók (VBA): Programozható automatizálás

Filozófia: Az Excel egy rugalmas, vizuális számológép - gyors, egyszerű, intuitív. Nem adatbázis, hanem munkafelület számoláshoz és elemzéshez.

3.1.2 Access: Az adatbázis-kezelő (RDBMS)

A Microsoft Access 1992-ben jelent meg - egy relációs adatbázis-kezelő rendszer (RDBMS) asztali környezetbe tervezve. A cél az volt, hogy kis- és középvállalatok is elérhető áron tudjanak professzionális adatbázisokat építeni.

3.1.2.1 Mire tervezték az Accesst?

1. Kapcsolatok kezelésére

Az Access relációs modellt valósít meg - Edgar F. Codd 1970-es elméletére épül: táblák, kapcsolatok, referenciális integritás.

Példa: Kutatószolgálat

KUTATÓK tábla:

Kutató_ID (PK) Név Email Intézmény
1 Kovács János kovacs@elte.hu ELTE BTK
2 Nagy Anna nagy@ppk.hu PPKE BTK

LÁTOGATÁSOK tábla:

Látogatás_ID (PK) Kutató_ID (FK) Dátum Megjegyzés
101 1 2024-11-05 Kádár-kor kutatás
102 1 2024-11-12 Színháztörténet
103 2 2024-11-06 Levéltártan

IRATOK tábla:

Fond_ID (PK) Jelzet Megnevezés
5 XXV-1 Tanácsi ülések
7 XXV-2 Polgármesteri

KÉRÉSEK kapcsoló tábla (N:M):

Kérés_ID (PK) Látogatás_ID (FK) Fond_ID (FK)
1 101 5
2 101 7
3 102 5

Kapcsolatok: - KUTATÓK ↔︎ LÁTOGATÁSOK: 1:N (egy kutató → több látogatás) - LÁTOGATÁSOK ↔︎ IRATOK: N:M (kapcsoló táblával)

Ez Excelben lehetetlen tisztán megoldani!

2. SQL lekérdezésekre

Az Access SQL-t használ - összetett lekérdezések egyszerűen:

-- Kik látogattak novemberben és milyen fondokat kértek?
SELECT Kutatók.Név, Látogatások.Dátum, Iratok.Jelzet
FROM ((Kutatók 
    INNER JOIN Látogatások ON Kutatók.Kutató_ID = Látogatások.Kutató_ID)
    INNER JOIN Kérések ON Látogatások.Látogatás_ID = Kérések.Látogatás_ID)
    INNER JOIN Iratok ON Kérések.Fond_ID = Iratok.Fond_ID
WHERE Látogatások.Dátum BETWEEN #2024-11-01# AND #2024-11-30#;

3. Űrlapokra és jelentésekre

Az Access felhasználói felületet is biztosít:

  • Űrlapok: Adatbevitel user-friendly módon, validációval, dropdown listákkal
  • Jelentések: Nyomtatható dokumentumok, csoportosítással, összesítésekkel

4. Referenciális integritásra

Az Access garantálja, hogy idegen kulcs mindig létező elsődleges kulcsra mutat - nem lehet törölni szülőt, ha van gyerek rekord.

Filozófia: Az Access egy relációs adatbázis-kezelő - strukturált, szabályozott, integritás-központú. Nem számolásra, hanem adatok biztonságos tárolására és összekapcsolására tervezték.


3.2 Részletes összehasonlítás

3.2.1 Adatstruktúra

Excel: - Munkafüzet → Munkalapok (függetlenek egymástól) - Nincs automatikus kapcsolat - VLOOKUP-pal “kapcsoljuk össze” őket

Access: - Adatbázis → Táblák (kapcsolódnak egymáshoz) - Grafikus relationship designer - Natív JOIN-ok


3.2.2 Adatmennyiség és teljesítmény

Szempont Excel Access
Max sorok 1.048.576 ~2 GB fájl
Gyakorlatban ~10.000 sor Millió+
1.000 sornál Gyors Gyors
10.000 sornál Lassul Gyors
100.000 sornál Nagyon lassú Gyors

Valós példa: 5.000 fond Excelben = 20 mp megnyitás, 15 mp szűrés. Ugyanez Accessben = 2 mp megnyitás, azonnali szűrés.


3.2.3 Kapcsolatok kezelése: VLOOKUP pokla vs JOIN egyszerűsége

3.2.3.1 Hogyan épül fel a relációs struktúra Excelben?

Ha több adatcsoportot szeretnénk külön-külön tárolni és összekapcsolni, minden entitásnak saját munkalapot adunk, és azonosítókkal (ID) hivatkozunk egymásra.

A munkafüzet felépítése – 3 munkalap:

Kutatók    ←→    Látogatások    ←→    Iratok

Kutatók munkalap – minden kutató egyszer, egy sorban:

Kutató_ID Név Email Intézmény
1 Kovács János kovacs@elte.hu ELTE BTK
2 Nagy Anna nagy@ppk.hu PPKE

Iratok munkalap – minden fond egyszer, egy sorban:

Fond_ID Jelzet Fond_neve
10 XXV-1 Tanácsi ülések
11 XXV-2 Polgármesteri iratok

Látogatások munkalap – csak ID-kat tárol, a neveket FKERES hozza be:

Látogatás_ID Kutató_ID Dátum Fond_ID Kutató_neve (képlet) Jelzet (képlet)
101 1 2024-11-05 10 =FKERES(B2;Kutatók!$A:$B;2;0) =FKERES(D2;Iratok!$A:$B;2;0)
102 2 2024-11-12 11 =FKERES(B3;Kutatók!$A:$B;2;0) =FKERES(D3;Iratok!$A:$B;2;0)

A FKERES képlet értelmezése:

=FKERES( B2 ; Kutatók!$A:$B ; 2 ; 0 )
          ↑         ↑           ↑   ↑
     ezt keresem  hol keresem  2.  pontos
     (Kutató_ID)  (A oszlop=ID oszlop egyezés
                  B oszlop=Név) =Név

Két alapszabály:

  1. Az ID oszlop mindig az első a keresési tartományban
  2. A tartományon $ jelek – különben másoláskor eltolódik: Kutatók!$A:$B

Előny: Ha Kovács János emailje megváltozik, csak a Kutatók lapon kell javítani – a Látogatások lapon automatikusan frissül.

Korlát: Ez a megoldás olvasásra jól működik, de írásra törékeny. Ha valaki új oszlopot szúr be a Kutatók lap elejére, a FKERES rossz oszlopból olvas – a képletben lévő 2 szám nem követi az elmozdulást.


Excel - FKERES/VLOOKUP problémák:

Két munkalap: KUTATÓK (Kutató_ID, Név) és LÁTOGATÁSOK (Látogatás_ID, Kutató_ID, Dátum).

A LÁTOGATÁSOK-ban minden sorban kell egy FKERES:

=FKERES(B2;Kutatók!$A:$B;2;0)

Problémák: - Törékeny: Oszlop sorrend változik → elromlik - Lassú: Minden cellában újra számol - Korlátozott: Csak jobbra keres - Nincs integritás: Lehet nem létező ID - Karbantartás: Új oszlopnál frissíteni kell a képletet - Hibakezelés: #HIÁNYZIK hibák, ha nincs találat

Valós történet: Beszúrtunk egy új oszlopot a KUTATÓK táblába → 300 sor FKERES elromlott, mert megváltozott az oszlopsorrend!

Access - JOIN egyszerűsége:

SELECT Látogatások.Dátum, Kutatók.Név
FROM Kutatók 
INNER JOIN Látogatások 
  ON Kutatók.Kutató_ID = Látogatások.Kutató_ID;

Vagy grafikusan a Query Designerben! Nincs törékeny képlet, nincs karbantartás.


3.2.4 Adatintegritás

Funkció Excel Access
Mezőtípus Nincs ellenőrzés Szigorú (Text, Number, Date…)
Kötelező mezők Nincs Required = Yes
Egyedi értékek Nincs automatikus Primary Key
Ref. integritás Nincs Enforce Referential Integrity
Validáció Data Validation (korlátozott) Validation Rule + Input Mask

Példa: Születési év validáció

Excelben:

1985        ✓ (OK)
nyolcvan    ✓ (elfogadja! - ROSSZ)
3025        ✓ (elfogadja! - jövőbeli év)
(üres)      ✓ (elfogadja!)

Accessben: - Data Type: Number - Required: Yes - Validation Rule: Between 1900 And Year(Date()) - Input Message: “Adjon meg egy születési évet 1900-2024 között” - Ha hibás → NEM ENGEDI ELMENTENI


3.2.5 Felhasználói felület

Excel: Cellák - gyors, de veszélyes (könnyen el lehet rontani, bárki bármit beírhat)

Access: Űrlapok - user-friendly, biztonságos

┌─────────────────────────────┐
│  Új kutató felvétele        │
├─────────────────────────────┤
│  Név: [____________]        │
│  Email: [___________]       │
│  Intézmény: [▼ ELTE BTK]    │
│                             │
│  [Mentés] [Mégse] [Törlés]  │
└─────────────────────────────┘

3.2.6 Több felhasználó egyidejű munkája

Excel: - Egyszerre csak egy ember tud írni - Megosztott munkafüzet létezik, de korlátozott és gyakori ütközés - Verziókonfliktusok

Access: - Split Database: Több ember dolgozhat egyidejűleg - Record locking: Ki kinek a sorát szerkeszti - Nincs verziókonfliktus


3.2.7 Amit az Excel jobban tud

Számítások és képletek: SUM, AVERAGE, IF, komplex pénzügyi függvények
Grafikonok: Gyönyörű vizualizációk, sok típus
Pivot táblák: Interaktív, húzd-és-dobd elemzés
Gyors prototípus: Azonnal kezdhetünk
Ad-hoc elemzés: Szabadon kísérletezhetünk

Következtetés: Excel és Access kiegészítők, nem konkurensek!

Gyakori workflow: 1. Excel → Adatgyűjtés, gyors bevitel 2. Access → Strukturálás, kapcsolatok, hosszú távú tárolás 3. Excel → Exportálás, statisztikák, grafikonok elemzéshez

3.3 Átmenet Excelből Accessbe - Lépésről lépésre

Ha már van egy Excel táblázatunk, de rájöttünk, hogy Access jobb lenne, át kell vinniünk az adatokat. Ez NEM egyszerű másolás-beillesztés - előkészítés és tervezés szükséges!

3.3.1 1. lépés: Tisztítsuk meg az Excel adatokat

Az Excel rugalmas - bármit megenged. Az Access szigorú - csak tiszta, strukturált adatokat fogad el.

3.3.1.1 1.1 Távolítsuk el az üres sorokat

Probléma: Üres sorok az adatok között - Access nem tudja, hol van vége.

Megoldás: 1. Jelöljük ki az A oszlopot 2. Home → Find & Select → Go To Special… 3. Válasszuk: Blanks 4. Jobb klikk → Delete → Delete Sheet Rows

3.3.1.2 1.2 Első sor = Fejléc (és CSAK az!)

Probléma: Cím, magyarázat a táblázat felett.

Megoldás: Töröljük az 1. sor előtti minden sort. Maradjon CSAK a fejléc az 1. sorban.

Jó fejléc: - Rövid, értelmes nevek - Nincs szóköz (használjanak _ vagy CamelCase-t) - Nincs spec. karakter

3.3.1.3 1.3 Nincs összevont cella

Megoldás: 1. Jelöljük ki az egész táblát (Ctrl+A) 2. Home → Merge & Center → Unmerge Cells

3.3.1.4 1.4 Nincs képlet (csak értékek)

Megoldás: 1. Jelöljük ki a táblát (Ctrl+A) 2. Ctrl+C (másolás) 3. Jobb klikk → Paste Special (Ctrl+Alt+V) 4. Válasszuk: Values 5. OK

3.3.1.5 1.5 Ellenőrző checklist

☐ Nincs üres sor
☐ Első sor = fejléc
☐ Nincs összevont cella
☐ Nincs képlet
☐ Nincs cím/dátum felette
☐ Minden oszlop egy típus
☐ Konzisztens adatok

3.3.2 2. lépés: Tervezzük meg az Access struktúrát

NE rohanjanak azonnal importálni! Először gondoljuk végig a struktúrát.

3.3.2.1 2.1 Milyen táblák kellenek?

Kérdések: 1. Milyen entitások vannak? 2. Minden entitásnak külön tábla!

Példa: Kutatószolgálat

Excel tábla (rossz):

Kutató_név | Email | Dátum | Fond | Téma
Kovács János | kovacs@elte.hu | 2024-11-05 | XXV-1 | Kádár-kor
Kovács János | kovacs@elte.hu | 2024-11-05 | XXV-2 | Kádár-kor  ← redundancia!

Entitások: 1. Kutatók 2. Iratok 3. Látogatások

Access táblák: - KUTATÓK (Kutató_ID, Név, Email, Téma) - Iratok (Fond_ID, Jelzet, Megnevezés) - LÁTOGATÁSOK (Látogatás_ID, Kutató_ID, Dátum) - KÉRÉSEK (Kérés_ID, Látogatás_ID, Fond_ID) - kapcsoló tábla N:M-hez

3.3.2.2 2.2 Milyen kapcsolatok vannak?

1:N: Egy kutató → több látogatás
N:M: Egy látogatás → több fond, egy fond → több látogatás (kapcsoló tábla kell!)

3.3.2.3 2.3 Rajzoljuj le a struktúrát!

KUTATÓK ──1:N── LÁTOGATÁSOK ──N:M── IRATOK
                     │
                 KÉRÉSEK
              (kapcsoló tábla)

3.3.3 3. lépés: Importáljuk Accessbe

3.3.3.1 3.1 Access megnyitása

  1. Nyissuk meg Access-t
  2. Blank Database
  3. Fájlnév: Kutatoszolgalat.accdb
  4. Create

3.3.3.2 3.2 Excel fájl importálása

  1. External Data fül
  2. New Data Source → From File → Excel
  3. Browse… → Válasszuk ki az Excel fájlt
  4. OK

Import Wizard:

  1. Show Worksheets → Jelöljük be a munkalapot → Next
  2. “First Row Contains Column Headings”Next
  3. Ellenőrizzük az adattípusokat (Text/Number/Date) → Next
  4. “Let Access add primary key”Next
  5. Tábla neve (pl. FONDOK) → Finish

3.3.3.3 3.3 Több tábla importálása

Importáljuk egyesével: - Kutatók.xlsx → KUTATÓK tábla - Iratok.xlsx → IRATOK tábla - Látogatások.xlsx → LÁTOGATÁSOK tábla

3.3.4 4. lépés: Definiáljuk a kapcsolatokat

3.3.4.1 4.1 Relationships ablak

  1. Database ToolsRelationships
  2. Jobb klikk → Show Table…
  3. Adjunk hozzá minden táblát → Close

3.3.4.2 4.2 Kapcsolat létrehozása

KUTATÓK ↔︎ LÁTOGATÁSOK (1:N):

  1. Húzzuk Kutató_ID-t KUTATÓK-ból → LÁTOGATÁSOK-ba
  2. Enforce Referential Integrity
  3. Cascade Update (NE)
  4. Cascade Delete (NE - veszélyes!)
  5. Create

Mit jelent az Enforce Referential Integrity?

Ez garantálja, hogy: - Nem törölhetünk kutatót, akinek van látogatása - Nem írhatunk be nem létező Kutató_ID-t - Adatkonzisztencia garantált

☐ Cascade Update Related Fields: - Ha megváltoztatjuk a szülő elsődleges kulcsát → automatikusan frissül az összes gyerek idegen kulcs - Példa: Kutató_ID = 1 → 100 megváltozik → Access automatikusan átírja az összes Látogatás.Kutató_ID = 1-et 100-ra - Miért NE? Az elsődleges kulcsot sosem kellene megváltoztatni! Ha mégis szükséges, akkor tudatosan, manuálisan tegyük - így látjuk a következményeket.

☐ Cascade Delete Related Records: - Ha törlünk egy szülő rekordot → automatikusan törlődik az összes hozzá tartozó gyerek rekord is - Példa: Törlik Kovács János kutatót → Access automatikusan törli az összes látogatását, kérését, megjegyzését - Miért NE? Adatvesztés veszély! Egy véletlen törlés sok értékes adatot törölhet. Levéltári nyilvántartásban ez elfogadhatatlan.

Ajánlott megoldás: - Soft delete: Ne töröljünk, hanem jelöljük inaktívnak - Adjunk hozzá egy “Aktív” mezőt (Igen/Nem) - Törlés helyett: Aktív = Nem - Így megmarad minden adat, de nem jelenik meg a szokásos lekérdezésekben

3.3.4.3 4.3 További kapcsolatok

Ugyanígy: - LÁTOGATÁSOK ↔︎ KÉRÉSEK - IRATOK ↔︎ KÉRÉSEK

3.3.4.4 4.4 Ellenőrzés

Teszt: Próbáljunk meg törölni egy kutatót, akinek van látogatása.

Eredmény:

Access: "The record cannot be deleted because table 'LÁTOGATÁSOK' includes related records."

Működik! A referenciális integritás működik!

3.3.5 Gyakori buktatók az átmenetnél

Dátumok elromlanak: Állítsuk Date/Time típusra, ellenőrizzük az import után
Nullák eltűnnek: “007” → Text típus kell
Encoding: UTF-8 használata magyar ékezetek miatt
Redundancia: Normalizálják, mielőtt importálnak!

3.4 Ellenőrző kérdések

  1. Mi a fő különbség az Excel és Access filozófiájában?
  2. Hogyan lehet Excelben több munkalap adatait összekapcsolni? Írja le a szükséges lépéseket!
  3. Milyen konkrét problémák vannak a FKERES használatával több munkalap összekapcsolásakor?
  4. Mit jelent az adatintegritás? Hogyan biztosítja Access?
  5. Mikor érdemes Excelt használni Access helyett?
  6. Mit jelent a referenciális integritás? Miért fontos?
  7. Milyen lépések szükségesek az Excel → Access átmenethez?
  8. Miért veszélyes a Cascade Delete opció?
  9. Hány rekordnál kezd lassulni az Excel a gyakorlatban?
  10. Hogyan működik a kapcsoló tábla N:M kapcsolatnál?
  11. Mit kell ellenőrizni az Excel importálása előtt?