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

[Delphi] Pobieranie danych z serwera MySQL.

Integers 02 Maj 2011 12:04 2991 12
  • #1 02 Maj 2011 12:04
    Integers
    Poziom 13  

    Witam.
    Czy ktoś może rzucić okiem co robię nie tak, w jednym programiku obsługuję tabelę w komponencie ZeosLib i wszystko jest ok, a w drugim jest podobne zapytanie - ale inna tabela i nie wyszukuje mi rezultatów.

    Używam Delphi 2007 ZEOSDBO-6.6.6-stable z http://zeos.firmos.at/

    Kod: Delphi
    Zaloguj się, aby zobaczyć kod


    I mimo, że:
    - w DBGrid mi wyświetla pozycję,
    - jest pełne pole np. nick2='ktosiek',
    - wyświetla Query.RecordCount=1
    to w Memo1 nie wpisuje mi zawartości nick2;

    proszę o jakąś sugestię, dodam że baza jest na hostingu.

    Edit ------------------------
    Że tak się niefachowo wyrażę "ślepy w karty nie gra", poprawiłem co było do poprawienia, ale nadal nie ma oczekiwanego efektu w funkcji SELECT, ale ...
    nie wiem jak to się dzieje, że jak SELECTa mam w jednej procedurze a w drugiej wyświetlanie danych do StrinGirda to jest OK,
    natomiast pobieranie tych danych w tej samej procedurze bezpośrednio po sobie nie działa - komunikat że nie ma kolumn które wiem że są i działają...
    czy może jakąś pętle opóźniającą żeby dane z serwera dotarły?? . bo może tu jest problem?

    0 12
  • Servizza
  • Pomocny post
    #2 03 Maj 2011 14:43
    redie
    Poziom 15  

    Ja również się spotkałem z czymś takim że atrybut Query->RecordCount by równy 0 mimo iż w tabeli były rekordy.
    Rozwiązaniem było wywołanie funkcji:

    Kod: delphi
    Zaloguj się, aby zobaczyć kod

    0
  • Servizza
  • #3 03 Maj 2011 18:44
    Integers
    Poziom 13  

    OK dzięki, sprawdzę czy to wystarczy

    Edit kilkanaście minut później ---------------------------

    Niestety takie rozwiązanie nic nie zmienia <załamka>. Już nawet zrobiłem sobie jak najbardziej prymitywnie żeby tylko ta opcja przeszła.
    Zrobiłem tak i działa:

    Kod: delphi
    Zaloguj się, aby zobaczyć kod


    natomiast taka informacja nie chce przejść przez gardło kompilatora
    Kod: Delphi
    Zaloguj się, aby zobaczyć kod


    A tak jak pisałem żeby było ciekawiej jeśli wypisuje wszystkie dane do stringa to działa pięknie,
    ...
    DM.ZQuery.FieldByName('nick').AsString
    ...
    a pojedynczych informacji się boi jakby tylko gwiazdkę tolerowało. Tak czy owak dzięki jak nie będzie chciało się poprawić to poprzestanę na gwiazdce.

    0
  • Pomocny post
    #4 04 Maj 2011 00:10
    blue_17
    Poziom 32  

    Przeanalizuj to jak to jest zrealizowane

    Kod: delphi
    Zaloguj się, aby zobaczyć kod


    Więcej tutaj

    http://wiki.lazarus.freepascal.org/MySQLDatabases

    I polecam Lazarusa do baz danych bo jest full darmowy do komercji również a do takich celów ma od razu gotowe kontrolki tak że wystarczy wstawić 4 kontrolki jakiegoś DBgrida i ma się już gotową aplikację nie tak jak standardowo w Delphi że trzeba było około 8 kontrolek wstawić

    Mogę wstawić jak zrealizowałem wyszukiwanie w swojej aplikacji

    Tu może kolega zobaczyć jak to działa ale jeszcze nie na MYSQL-u ale zmiany w programie są kosmetyczne

    https://www.elektroda.pl/rtvforum/topic1910688.html

    mogę udostępnić kod lub kawałki ale to proszę na PW

    Pozdrawiam

    0
  • #5 04 Maj 2011 13:08
    Integers
    Poziom 13  

    Ok dzięki wielkie, myślę ze to na jakiś czas wyczerpuje temat.

    Dodano po 4 [godziny] 19 [minuty]:

    żeby już było wszystko w jednym miejscu to pytanie o przykład który teoretycznie nie ma prawa nie zadziałać, a jednak nie chce udaje mi się skasować wskazanej pozycji mimo że wszystkie zmienne są w porządku.

    Kod: Delphi
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #6 04 Maj 2011 15:29
    blue_17
    Poziom 32  

    Tu masz konsolkę SQL którą jakiś czas temu namalowałem :) działa z każdym zapytaniem to rozwiązanie ma tylko taką wadę że kiedy chcesz usunąć tabelę którą oglądasz w DBGridzie wyskakuje wyjątek ale ją usuwa, ale chyba nie masz tego problemu.



    Kod: delphi
    Zaloguj się, aby zobaczyć kod


    Pokombinuj a zapewne znajdziesz rozwiązanie (kod jest z lazarusa jak widzisz że dużo prościej :D )

    Pozdrawiam

    0
  • #7 04 Maj 2011 16:12
    Integers
    Poziom 13  

    działa pięknie, dziękuję

    i w praniu wyszła jeszcze taka sprawa: co jakiś czas nie wiedzieć czemu zawieszała mi baza przy różnych operacjach i jedyne co mi przyszło do głowy to zakazane wyrazy i znaki, w ostateczności doszedłem do wniosku ze jak chcę wstawić jako luźny ciąg znaków takie:
    ~!@#$%^&*()_+|{}:"<>?`-=\[];,./
    to za każdym razem mi się wiesza i odmawia posłuszeństwa czy jest jakiś prosty sposób aby to obejść bo rozumiem ze znak mnożenia albo przecinek mogą sprawiać takie problemy; jedyne co mi przychodzi do głowy to zamiast znaku mnożenia wstawić &42 ale znak & też czasem może być używany w tekście.

    Byłbym wdzięczny za sugestie.

    0
  • #8 04 Maj 2011 16:20
    blue_17
    Poziom 32  

    Wszystko powinno śmigać możesz pokazać jak to rozwiązałeś dla innych :)

    A co do kodu to pokaż jak to wygląda kiedy zapiszesz to zapytanie w kodzie a właściwie w kontrolce w której jest zapytanie.

    Przypuszczam co może sprawiać kłopoty bo to nie baza tylko zapytanie może być błędne :)

    A baza na XAMPP-ie czy na "żywym serwerze" :?:

    0
  • #9 04 Maj 2011 16:31
    Integers
    Poziom 13  

    baza jest na serwerze na hostingu MySQL 5, jeszcze to sprawdzę ale na zwykłych literach i cyfrach śmiga
    co do przykładu to w powyższych w miejsce np. hasła wpisuje właśnie taki ciąg znaków,

    Kod: delphi
    Zaloguj się, aby zobaczyć kod


    cały kod jest dość rozległy i zajął by znacznie więcej niż na klikaliśmy do tej pory :)
    jest jeszcze opcja ze mam włączona obsługę polskich znaków bez której nie było problemów:
    Kod: delphi
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #10 04 Maj 2011 16:42
    blue_17
    Poziom 32  

    Kod: delphi
    Zaloguj się, aby zobaczyć kod


    Powinno działać :)

    To ciekawe że kompilator przełyka Ci apostrof i cudzysłów koło siebie w bezpośrednim zapisie błędu nie wyrzuca :?:

    Skrajne apostrofy w zapytaniu zmień na znaki w kodzie ASCI to zaoszczędzi dużo problemów

    0
  • #11 04 Maj 2011 16:50
    Integers
    Poziom 13  

    ja poprawiłem w powyższym poście i zdjąłem //, ogólnie cudzysłów już nie brałem do znaków specjalnych - po prostu o nich zapomniałem że będą potrzebne

    0
  • Pomocny post
    #12 04 Maj 2011 16:56
    blue_17
    Poziom 32  

    A co do tego kodu to Zobacz jak mam w kodzie konsolki i zrób podobnie bo nie masz zabezpieczenia, a dokładnie nie masz commit a to dosyć ważne jak jeszcze coś by się pogmatwało. :D

    Działa poprawnie zapytanie :?:

    0
  • #13 04 Maj 2011 17:02
    Integers
    Poziom 13  

    tak działa, dzięki myślę że temat wyczerpaliśmy :)

    0
  Szukaj w 5mln produktów