TIBScript-ből létrehozott Firebird DB > Transaction error

TIBScript-ből létrehozott Firebird DB > Transaction error
2014-06-10T15:34:18+02:00
2014-06-11T07:34:17+02:00
2022-12-01T04:41:52+01:00
mandula
Sziasztok !
 Szegény kardosi szenvedett nemrég hasonlóakkal, de most én is belefutottam...

1. Ha IBExpert-ből hozok létre egy adatbázist, azt gond nélkül kezeli
2. De ha ugyanazt a szkiptet egy Delphi7 alatti IBScript-ben futtatom le
> az adatbázis létrejön táblákkal, generátorral, stb.
De amint megpróbálok hozzá kapcsolódni egy Tranzakcióval, ezt a hibaüzenetet dobja:

Cannot perform operation -- DB is not open.
Pedig az adatbázishoz kapcsolódva van. Sikeresen megnyílt, stb.

Félreértés ne essék, nem én bénázok el valamit, hanem a Delphi dob valami hibás üzenetet, mert
- ha kicserélem a másik (IBExpert-tel létrehozott) adatbázisra, akkor minden rendben
- és IDE alatt is csinálja, ha megpróbálom az Active-ot TRUE -ra állítani.

Csak azt nem tudom, miért, és hogy lehetne kideríteni?
Mutasd a teljes hozzászólást!
Igen, úgy tűnik, ez volt a gond! Tanulságok másoknak:
1. TIBScript-nél ajánlatos egy külön TIBTransaction-t hozzárendelni !
2. Ez a tranzakció alapból Commit-ra legyen állítva !
3. Az IBScript komponenst ne hozzuk létre futás időben, mert .Free -nél elszáll, hanem helyezzük egy Form-ra vagy DataModul-ra.
4. Magába a script-sorokba érdemes egy-egy 

' COMMIT; '#13
sort beszúrni. (Főleg a tábla-szerkezet létrehozása után, illetve INSERT-ek előtt.)
Mutasd a teljes hozzászólást!

  • Szia!

    Csak első olvasatra tipp: commitálod a TIBScript bekötött tranzakciót a ExecuteScript hívást követően?

    BySzi
    Mutasd a teljes hozzászólást!
  • Persze !
     Hiszen máskülönben nem jönnének létre a táblák, az insert-ek, stb.
    KÉSZRE megcsinálja az adatbázist, amihez utána már nem tud csatlakozni!

    (IBExpert-ből gyönyörűen tudok, és ha exportálom a teljes szkriptet, és összehasonlítom, akkor elvileg ugyanaz mindkettő.)

    Azt még el kell, hogy mondjam, hogy először mindent (az adatbázist, a domain-eket) UTF8-nak definiáltam,
     és akkor az INSERT-ek sem futottak le, csak az üres táblaszerkezet és index-ek jöttek létre.

    Most átírtam az UTF8-at WIN1250-re, így már végrehajtódnak az IBScript-ben futtatott INSERT-ek. Csak amint ez kész, utána kakukk.
    Mutasd a teljes hozzászólást!
  • Tesztelgetek jobbra balra ... és azt hiszem alakulnak a dolgok.
    Úgy tűnik, ahhoz van köze, hogy nem szabad ugyanazt a tranzakciót használni a TIBScript-hez, mint más dolgokhoz. Főleg, hogy ha a

    DefaultAction = TARollback
    Persze ez még mind nem 100%. Most éppen azon vagyok kiakadva, hogy ha egyszer szépen lefut a szkript utolsó része... (az insert-ek), akkor miért marad üres a tábla?
    Mutasd a teljes hozzászólást!
  • Igen, úgy tűnik, ez volt a gond! Tanulságok másoknak:
    1. TIBScript-nél ajánlatos egy külön TIBTransaction-t hozzárendelni !
    2. Ez a tranzakció alapból Commit-ra legyen állítva !
    3. Az IBScript komponenst ne hozzuk létre futás időben, mert .Free -nél elszáll, hanem helyezzük egy Form-ra vagy DataModul-ra.
    4. Magába a script-sorokba érdemes egy-egy 

    ' COMMIT; '#13
    sort beszúrni. (Főleg a tábla-szerkezet létrehozása után, illetve INSERT-ek előtt.)
    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