Delphi MSSQL update két táblában

Delphi MSSQL update két táblában
2015-02-10T15:36:48+01:00
2015-02-10T21:20:23+01:00
2022-12-02T04:10:39+01:00
Althai
Sziasztok, 

Adott két MSSQL táblázat:
1. tábla (megbízók): id, mb_nev, mb_cim,....stb.
        A megbízókból csak egy lehet.
2. tábla (telephelyek): id, mb_nev, th_nev, .... stb. 
        Egy megbízóhoz tartozhat több telephely is. 

Mind a két táblázatom egy-egy DBGridben van megjelenítve.
Az 1-es DBgridben Click eseményre kilistázom a 2-es DBgridben a kiválasztott megbízóhoz tartozó telephelyeket. 

Egy megbízó módosítás form-ot szeretnék létrehozni a programomhoz, ami az 1-es táblában a megbízó nevét módosítja és ezzel egy időben a 2-es táblázatban is módosítja a vele megegyező telephely nevekhez tartozó megbízó neveket is.
Mutasd a teljes hozzászólást!

  • Helló,

    Az az alapvető baj ezzel, hogy redundánsan tárolod a megbízó nevét. Ehelyett az alsó grid-ben a megbízó nevét a megbízók táblából kéne venned (pl. kalkulált mezővel) vagy talán van valami lookup mező is (soha nem használtam ilyet, csak sql-t), de az sql kifejezésekről már ne is beszéljünk. 

    Javaslom, hogy olvass el valamilyen anyagot az adatbázis-tervezés alapjairól, mielőtt komoly munkába fogsz. Vagy csak keress rá arra, hogy "adatok normalizálása" a googlin.

    Üdv

    GyK
    Mutasd a teljes hozzászólást!
  • Először is 3. normálforma
    Olvasd át, bár ez kissé száraz, de van rá példafeladat.

    A te esetedben a telephelyek táblában mb_nev helyett mb_id legyen, ami a megbizó table megfelelő id mezőjét tartalmazza.
    Mutasd a teljes hozzászólást!
  • Amit eddig hallottál az igaz, a 2 grid pedig 

    tipikusan megvalósítható egy ado query és egy ado dataset kombinációjával.

    Az ado dataset-ben meg lehet adni a master field mezőt.
    Az ado dataset datasource értéket az adoquery datasource-ának nevét kell adni.
    aztán be lehet állítani a kapcsolómezőket.

    1. tábla 
    MBId, Megbízó neve, stb

    2. Tábla THID, Telephely neve, MB_Id

    Az Ado dataset-ben összerendeled az MBID mezőt és az MB_ID mezőt, így amikor 
    Ez egy MAster Detailed kapcsolat.
    Amikor rekordot léptetsz az 1. gridben, akkor a hozzá tartozó telephelyek lesznek szűrve 
    a 2. gridben.

    kép mellékelve
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd