FireBird Generátor olvasása MS Access szkriptel.

FireBird Generátor olvasása MS Access szkriptel.
2017-09-13T10:58:30+02:00
2017-09-13T13:10:14+02:00
2022-10-15T23:26:37+02:00
Joules83
Sziasztok !

Van egy FireBird adatbázis (amihez korábban írt programból ki maradt egy funkció, forráskód persze nincs ahogy az szokás) melyből ODBC kapcsolaton keresztül egy MS Access szkriptben kellene kiolvasni, lépetni egy adott firebird generátort értékét amely alapján a hiányzó rekordokat kell majd egy insert into -val létrehozni a firebird néhány csatolt táblájába. (ezzel nincs gond)

Az alábbi neten talált módszer nem működik a generátor aktuális értékének kiolvasására
select GEN_ID(<generatornev>, 0) from <ODBC kapcsolat neve>;

Az érdemi válaszokat előre is köszönöm.

Üdv
 Joules83
Mutasd a teljes hozzászólást!

  • Hali!

    from <ODBC kapcsolat neve> helyett FROM RDB$DATABASE;

    Egyébként:
    SQL statements for generators

    Üdv,
    Berko
    Mutasd a teljes hozzászólást!
  • Kedves Berko !

    Sajnos a  SELECT GEN_ID(<gen_név>, 0 ) FROM RDB$DATABASE;   nem működik az MS Access-ben.
      (E módszernél, ahol nincs megadva az ODBC kapcsolat neve akkor a rendszer nem tudja, hogy
       melyik firebird adatbázisból - sajna több is van- olvassa ki a GENERATOR értékét.)

    A SELECT GEN_ID(<gen_név>, 0 ) FROM RDB$<odbc név>;    sem működik.

    A FlameRobin programban persze a leírt módszerrel nincs gond
        SELECT GEN_ID(<gen_név>, 0 ) FROM RDB$DATABASE;
    Csak éppen ezt kb. 60-70 ezer rekordra kellene ráengedni hetente 1x  kicsit macerás,
    ezért kellene ezt szkriptből megoldani a feladatot.

    Üdv
     Joules83
    Mutasd a teljes hozzászólást!
  • Szia!

    Nem ismerem az Access Lelki világát, de az RDB$DataBase-t ugyanúgy kell használni mint bármelyik más táblát.
    Régen volt amikor ODBC-t használtam, de tudomásom szerint ODBC csak egy kapcsolat a szerverhez. Azon belül a táblát neked kell külön megadnod kérésenként. Amennyiben van 100 táblád akkor 100 ODBC kapcsolattal dolgozol ?

    Esetleg még azt is megpróbálhatod, hogy egy olyan táblából kérsz le 1 rekordot amelyiket el tudod érni ODBC kapcsolaton keresztül.
    pl.:
    select GEN_ID("gerenrátorneve", 0) FROM USERS where id=1
    bár 2.0-tól ajánlott forma:
    SELECT NEXT VALUE FOR "gerenrátorneve" FROM USERS where id=1

    Üdv,
    Berko
    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