Tábla összehasonlítása ACCES VBA

Tábla összehasonlítása ACCES VBA
2015-03-11T10:27:41+01:00
2015-03-11T12:05:04+01:00
2022-12-02T07:05:38+01:00
B3Outlet
Van több táblám , mindegyikhez van egy szerkesztés közbeni változata. ezeket a névben a H_ előtaggal láttam el.
Az adott táblapár legyen pl.  "Tabla" és a "H_Tabla".
Kellene egy összehasonlító lejkérdezést vagy VBA rutint készítenem, ami  a "H_Tabla" nem azonos rekordjainak számát adja vissza.
Azaz a "Tabla" több rekordot tartalmaz és a "H_Tabla" összes rekordját és annak összes mezőjét ami lehet null adat is össze kell hasonlítani. Ha van egy bitnyi eltérés is akkor az nem azonos tehát növeli a számlálót. a végén megkapnám hány olyan rekordot tartalmaz a "H_Tabla" ami nincs tökéletesen benne a "Tabla"-táblában.
Mutasd a teljes hozzászólást!
left join-nal kapcsolod össze a 2 táblát( htabla left join tabla), a join feltételben az összes mezőt felsorolva. Azoknál a mezőknél, ahol lehet null az érték, nz() függvénnyel vmilyen spéci nem null értékre konvertálva a null-t végzed el az összehasonlítást, mert a null az ugye semmivel sem egyenlő.

A where-ben a tabla egy olyan mezőjére szűrsz is null-lal, ami csak akkor lehet null, ha nincs illeszkedő rekord a tabla táblában és ezen rekordokat számlálod meg.
Mutasd a teljes hozzászólást!

  • Eddig ezt csináltam, amikor megakadtam. Ez nagyjából az amit írtál... (az egyszerűság kedvéért csak pár mezőt raktam bele.
    Mivel a 'Törölt' mező boolean gondolom azt nem kell nul adatra levizsgálni ( két állású)
    Az 'UT_MOD_Adatrögzítő' string az 'UT_MOD_DATUM' pedig dátum formátumú.
    Próbáltam de a JON-on belűl nem tudtam NZ-t használni. Megoldható, vagy a két tábla helyett két lekérdezést kell összehasonlítani amiben már nincsenek null adatok?

    SELECT Count(H_TBL_OBJ_CSOP.Azonosító) AS CountOfAzonosító
    FROM H_TBL_OBJ_CSOP LEFT JOIN TBL_OBJ_CSOP ON (H_TBL_OBJ_CSOP.UT_MOD_DATUM = TBL_OBJ_CSOP.UT_MOD_DATUM) AND (H_TBL_OBJ_CSOP.Törölt = TBL_OBJ_CSOP.Törölt) AND (H_TBL_OBJ_CSOP.UT_MOD_Adatrögzítő = TBL_OBJ_CSOP.UT_MOD_Adatrögzítő)
    HAVING (((Count(H_TBL_OBJ_CSOP.Azonosító)) Is Not Null));
    Mutasd a teljes hozzászólást!
  • Megoldható, vagy a két tábla helyett két lekérdezést kell összehasonlítani amiben már nincsenek null adatok?

    Természetesen.

    HAVING (((Count(H_TBL_OBJ_CSOP.Azonosító)) Is Not Null));

    Na ne már

    where H_TBL_OBJ_CSOP.Azonosító is null
    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