Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Delphi] Firebird + IBEvent. Nie otrzymuję Event-ów.

14 Mar 2012 17:27 2113 10
  • Moderator Programowanie
    Przyznam się, że utknąłem :/
    Robiłem to wcześniej setki razy, a teraz, z nieznanych przyczyn nie mogę odczytać przychodzących Event-ów :(
    Zacznę może od początku.
    Tworzę cobie na dysku bazę za pomocą Firebird 2.5, takim skryptem :
    Kod: sql
    Zaloguj się, aby zobaczyć kod
    Jak widać, skrypt tworzy bazę danych o nazwie BAZADANYCH.FDB na dysku D:, dwie proste tablice, jeden trigger.
    Następnie, wywołuję taki SQL :
    Kod: sql
    Zaloguj się, aby zobaczyć kod
    Trigger, bez problemu, wyzwala się i w momencie zapisu nowego rekordu, do tablicy TEST, tworzy nowy rekord w tablicy TriggerTest. Wszystko zatem dział tak jak powinno.
    Problem zaczyna się w momencie próby przechwycenia tego zdarzenia NEW_TRIGGER. Nie mogę przechwycić tego zdarzenia,za pomocą kontrolki IBEvent :/ I nie wiem dlaczego.
    Stworzyłem prosty projekt :
    Kod: delphi
    Zaloguj się, aby zobaczyć kod

    Nic nadzwyczajnego. Jedno IBDatabase, łączące się z bazą, jeden IBEvent, z zarejestrowanym dynamicznie event-em.
    A całość nie działa :/ I nie wiem dlaczego.
    Proszę kolegów o pomoc.
  • Moderator Programowanie
    Dodałem transakcję.
    Kod: delphi
    Zaloguj się, aby zobaczyć kod
    Bez rezultatu :/
  • Poziom 42  
    Przyznam, że nigdy z eventami nie miałem do czynienia... Może postaram się sprawdzić jutro w pracy, jak znajdę czas i nie zapomnę ;)
    Aha - domyślam się, że klienta FB także używasz w tej wersji?

    Aha - po co ten podwójny \\ w ścieżce? To nie C ;)
  • Moderator Programowanie
    Dżyszla napisał:
    Aha - po co ten podwójny \\ w ścieżce? To nie C ;)

    Ten \\ po to, żeby ładnie listing wyglądał :)
    Jak dasz jeden, to część będzie zamalowana na niebiesko :P
    A Delphi i tak to "strawi" :)
  • Pomocny post
    Poziom 42  
    Cześć!

    Więc zrobiłem testy (na tym pierwotnym projekcie, bez transakcji) :) Zmieniłem tylko ścieżkę do bazy oraz w opcji projektu odznaczyłem Link with runtime package. I zadziałało (Delphi XE2, 32-bit; Firebird 2.1.4 64-bit). W Delphi 6 niestety nie mogłem otworzyć projektu. Więc to nie wina kodu, jeśli u Ciebie nie działa...
  • Moderator Programowanie
    No wiem :/ Najśmieszniejsze jest to, że kiedyś to robiłem i szło bez problemów. Teraz się coś popsuło :( Tylko co ?
    Możesz mi podesłać skompilowany projekt? Dodaj tylko proszę jakiegoś TEdita z możliwością wpisania ścieżki bazy danych.
  • Poziom 42  
    Sorry, dużo czasu w pracy nie mam (jeszcze dziś godzinę u szefa spędziłem), więc już nie zaglądałem. Na jutro wziąłem urlop, więc będę mógł to w poniedziałek zrobić. No chyba, że do tego czasu ktoś inny tu zamieści.
  • Poziom 42  
    Zamieszczam skompilowany pod XE2 załączony projekt, rozszerzony o możliwość podania bazy, użytkownika, hasła oraz nazwy eventu. Sprawdzałem jeszcze u siebie jest ok, więc jak u Ciebie nie zadziała, to pokombinuj z klientem bazy.
    Załączniki:
  • Moderator Programowanie
    Skompilowany przez Ciebie project działa bez problemu :(
    [Delphi] Firebird + IBEvent. Nie otrzymuję Event-ów.
    No nic. Będę walczył.
    Jeżeli ktoś wpadnie na pomysł, dlaczego pod Delphi 2009 Enterprise nie chce to działać, to bardzo proszę o informację.

    Dodano po 2 [godziny] 44 [minuty]:

    Załamka... Przeniosłem projekt do Delphi 5... I wszystko działa.
    Muszę to odpalić pod Delphi 2009...
  • Poziom 42  
    Może to będzie radykalne, ale... spróbuj przeinstalować całe środowisko ;)

    A nie gryzą się jakieś komponenty miedzy środowiskami? z IB są chyba też źródła kompletne, więc można by spróbować je przebuildować. Ale - na początek spróbuj wszystkie pliki IB*.pas przenieść do katalogu projektu.