logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

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

arnoldziq 14 Mar 2012 17:27 2560 10
REKLAMA
  • #1 10676864
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 300
    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.
    Załączniki:
    • IBEVENTTest_d2009_src.zip (11.11 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 10676987
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    Jak na złość zgubiły mi sie IBXy :( Ale tak patrząc na pliki - a może transakcję potrzeba? Bo w zasadzie połączenie jest, ale bez transakcji aktywnej.
  • REKLAMA
  • #3 10677008
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 300
    Dodałem transakcję.
    Kod: Delphi
    Zaloguj się, aby zobaczyć kod
    Bez rezultatu :/
  • REKLAMA
  • #4 10677745
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    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 ;)
  • #5 10677777
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 300
    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
    #6 10679328
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    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...
  • #7 10679554
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 300
    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.
  • #8 10681162
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    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.
  • REKLAMA
  • #9 10698552
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    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:
    • FBEventWacher.rar (609.93 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #10 10698844
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 300
    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...
  • #11 10700609
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    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.

Podsumowanie tematu

✨ Użytkownik napotkał problem z odbieraniem zdarzeń (Event-ów) w bazie danych Firebird 2.5 przy użyciu Delphi. Po utworzeniu bazy danych oraz tabeli z wyzwalaczem, który powinien generować zdarzenie 'NEW_TRIGGER', użytkownik nie otrzymywał oczekiwanych powiadomień. W odpowiedziach zasugerowano dodanie transakcji oraz sprawdzenie poprawności połączenia z bazą. Użytkownik przetestował różne wersje Delphi (w tym XE2 i 2009), a także przeniósł projekt do Delphi 5, gdzie zdarzenia działały poprawnie. Wskazano również na możliwość konfliktu komponentów oraz sugerowano reinstalację środowiska programistycznego.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA