Delphi_interbase_procedura

Delphi_interbase_procedura
2007-04-23T15:08:25+02:00
2007-04-26T09:19:49+02:00
2022-11-04T09:15:33+01:00
Vili87
Szevasztok!

A Problémám az,hogy egy raktárnyilvántartó programot írok firebird serverre. A szerveren létrhozok egy before insert trigger-t a keszlet táblához,amelyben egy eljárást hívok meg,amely generál egy aru_id-t és átadja azt az új recordnak,meg persze a visszatérési értéke is az azonosító. Nekem erre az azonosítóra lenne szükségem a delphiben,de nem tudom,hogy hogyan lehet kiolvasnom a tárolt eljárásból.

Aki tud segítsen! Előre is köszönöm.
Mutasd a teljes hozzászólást!
Hi!

Nem tudom, hogy mit csinál a trigger, de nyilván célszerűbb, ha nem a triggerből, hanem delphiből hívod meg az azonosító generáló eljárásodat. Úgy visszakaphatod az értéket. Ezek után hívod meg az insertet.

Alex
Mutasd a teljes hozzászólást!

  • felveszel egy output parametert a tárolt eljáráshoz, és delphi-ben kiolvasod valtozo := eljarasnev.ParamByName['outputvaltozo'].AsInteger-rel.
    Mutasd a teljes hozzászólást!
  • Hi!

    Nem tudom, hogy mit csinál a trigger, de nyilván célszerűbb, ha nem a triggerből, hanem delphiből hívod meg az azonosító generáló eljárásodat. Úgy visszakaphatod az értéket. Ezek után hívod meg az insertet.

    Alex
    Mutasd a teljes hozzászólást!
  • Az eljárás, ahol egy generátor segítségével előállítok egy aru_id-t, a lényeg a retursban van:

    SET TERM ^;
    CREATE PROCEDURE PROC_ARUT_ELKESZIT
    RETURNS (ARU_ID INTEGER)

    begin
    Select gen_id(GEN_ARU_ID,1) from rdb$database into :ARU_ID ;
    suspend ;
    END^
    SET TERM ;^

    Delphiben miután lefut az eljárás(Execproc), visszakapod az aru_id-t:

    var azonosito:integer;
    begin
    DM.PROC_Arut_Elkeszit.ExecProc;
    azonosito:=DM.PROC_Arut_Elkeszit.ParamByName('ARU_ID').Value;
    Mutasd a teljes hozzászólást!
  • De miért? Ott a GeneratorField, erre vah kihegyezve, és azonnal ki is olvasható. (feltéve hogy az IB komponensekkel éred el)
    Mutasd a teljes hozzászólást!
  • Én így szoktam! A generatorfield-et még sosem próbáltam, de ha leírod, hogy hol találom, akkor megköszönöm!
    Mutasd a teljes hozzászólást!
  • Egy kis csemege a helpből

    TIBGeneratorField calls the server to generate values for a field in an IB dataset.

    Unit

    IBCustomDataSet

    Description

    Assign an instance of TIBGeneratorField as the value of a dataset’s GeneratorField property to indicate that the value of a specified field in the dataset can be generated by the server.

    Use the Field property to specify the field whose value is generated by the TIBGeneratorField object. Use the Generator and IncrementBy properties to specify how the server should generate field values. Use the ApplyEvent property to indicate when the TIBGeneratorField should call the server to generate field values.


    nem kell ezt túlbonyolítani
    Mutasd a teljes hozzászólást!
  • Köszi az információt!
    Mutasd a teljes hozzászólást!
  • Köszönöm a segítséget,sikerült megoldanom a dolgot vargalex1 módszerével. A többi megoldás is bizonyára jól használható, viszont ő volt az első akinek a megoldását tudtam alkalmazni,ezért a pontot most ő kapja. Mégegyszer köszönöm a segítséget mindenkitől.
    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