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

[EXCEL,VBA] Sortowanie mysql

-Tomi- 17 Lip 2015 23:56 795 12
  • #1 17 Lip 2015 23:56
    -Tomi-
    Poziom 13  

    Witam

    Tym razem mam problem z sortowaniem bazy msql wywołuję poniższy kod i nic się nie dzieje, proszę o pomoc co jest nie tak.

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod
    [/code]

    0 12
  • #2 18 Lip 2015 01:37
    rufek90
    Poziom 24  

    Puszczałeś to zapytanie do bazy? Temat sugeruje, że masz problem z sortowaniem, więc rozumiem, że nieposortowane dane udaje ci się uzyskać?
    Jak dla mnie, zapytanie jest poprawne składniowo, ale nie widzę, abyś coś dalej robił z wynikiem.

    Jeżeli jednak masz problem nie z sortowaniem, a z obsługą pobranych danych, to spróbuj tak (wygooglane, ale wygląda rozsądnie)

    Code:

    Sheets("sheet_name").Cells(1, 1).CopyFromRecordset rs

    0
  • #3 18 Lip 2015 20:30
    101pawel
    Poziom 25  

    -Tomi- napisał:
    Tym razem mam problem z sortowaniem bazy msql wywołuję poniższy kod i nic się nie dzieje
    Daj cały kod, bo ten fragment, niewiele pomaga. Co kryje się za "lacz"? Czy ten Recordset otwiera Ci się poprawnie? Jeśli tylko go otwierasz, i nic się nie dzieje - to tak ma być. Rozumiem, że "dzianie się" ma polegać na zwróceniu posortowanego recordsetu gdzieś-tam? Gdzie?

    0
  • #4 19 Lip 2015 01:31
    -Tomi-
    Poziom 13  

    Wszystko mi działa, ale to sortowanie niestety nie. Mam połączenie z bazą dodaje usuwam rekordy i jest ok. Dane wyświetlam w listbox. chodzi mi dokładnie o to żeby posortować dane wg 1 kolumny czyli wg nazwy (alfabetycznie) i wyświetlić ponownie listbox.

    0
  • Pomocny post
    #5 19 Lip 2015 13:42
    101pawel
    Poziom 25  

    -Tomi- napisał:
    Wszystko mi działa...
    Jeśli wszystko oprócz sortowania, to nie mamy wielkiego pola manewru. Spróbuj to wykonać bez apostrofów dla sortowanego pola. Potem - jeśli dalej nic, usuń słowo kluczowe ASC.
    I koniecznie sprawdź, czy pole nazwa rzeczywiście zapisałeś jako nazwa.

    2
  • Pomocny post
    #6 19 Lip 2015 14:46
    -psiak-
    Poziom 32  

    -Tomi- napisał:
    Wszystko mi działa, ale to sortowanie niestety nie.
    Wg mnie wygląda to w sposób następujący: napisałeś w zeszycie: "Mam cztery nogi." - i skarżysz się na forum że wciąż masz tylko dwie.

    Z tego co pokazałeś to może być tylko dwie opcji:
    • zapytanie ma się nijak do tego co wyświetlasz.
    • dostajesz posortowane, tylko że ustawiłeś niewłaściwe kodowanie bazy/tablicy/pola oraz sprawdzasz na niewłaściwym zakresie (np collate=binary zaś sprawdzasz np tylko: 'Ą', 'B')

    101pawel napisał:
    Spróbuj to wykonać bez apostrofów dla sortowanego pola. Potem - jeśli dalej nic, usuń słowo kluczowe ASC.
    I koniecznie sprawdź, czy pole nazwa rzeczywiście zapisałeś jako nazwa.
    Gdyby było właśnie to co podejrzewasz to efektem powinno być brak czegokolwiek przy wyświetlaniu, nie zaś inna kolejność rekordów.

    1
  • #7 19 Lip 2015 19:02
    -Tomi-
    Poziom 13  

    To może rozwinę swój kod i pokaże co chcę uzyskać i co mi nie wychodzi.

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Zrobiłem coś takiego i dalej nic, a co gorsza nawet nie ma żadnego błędu a baza msql dalej nie posortowana. Proszę dodarcie coś mądrego co tu może być nie tak. Połączenie z bazą działa na 100% bo dodaję i usuwam rekordy

    0
  • Pomocny post
    #8 19 Lip 2015 19:16
    marcinj12
    Poziom 40  

    Próbowałeś, jak kolega sugerował, usunąć apostrofy z zapytania?

    1
  • #9 19 Lip 2015 19:19
    -Tomi-
    Poziom 13  

    tak próbowałem bez apostrofów oraz bez sposobu sortowania ASC

    0
  • Pomocny post
    #10 19 Lip 2015 20:52
    101pawel
    Poziom 25  

    -Tomi- napisał:
    Zrobiłem coś takiego i dalej nic, a co gorsza nawet nie ma żadnego błędu a baza msql dalej nie posortowana. Proszę dodarcie coś mądrego co tu może być nie tak. Połączenie z bazą działa na 100% bo dodaję i usuwam rekordy
    Nie gorączkuj się, nie wiem jak sprostać Twojemu wyzwaniu dodania czegoś mądrego, ale szczerze mówiąc "problem" jest tak prozaiczny, że nie powinien był powstać. Wyrażenie SQL jest elementarne, podręcznikowe. Wypełnienie listboxa to elementarz. Więc co? Piszesz tak: "a baza msql dalej nie posortowana", czy to oznacza, że oczekujesz od tej procedury posortowania bazy danych?
    Przy następnej próbie uruchomienia procedury wstaw apostrof przed On Error Resume Next.

    2
  • Pomocny post
    #11 19 Lip 2015 21:04
    PRL
    Poziom 33  

    Cudów nie ma.

    komenda_SQL = "SELECT * FROM Test.Baza ORDER BY Nazwa ASC"

    W Akcesie stosuję:

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod




    Myślę, że w Excelu też się da.

    2
  • Pomocny post
    #12 19 Lip 2015 23:04
    marcinj12
    Poziom 40  

    Najwyraźniej nie jest to nic ważnego, gdyż kolega zignorował moją propozycję zdalnej pomocy na PW...

    Zaś użycie apostrofów w nazwie pola jest ewidentnym błędem, gdyż MySQL traktuje to wtedy jako wartość string i "sortuje" po niej. Zapytanie wykona się pozornie bez błędu, ale wynik będzie nieposortowany.
    Prawidłowym jest brak apostrofów przy nazwie pola bądź odwrócone apostrofy.

    Sądząc po minusie przy tej sugestii - kolega jednak wie lepiej, więc powodzenia w dalszym rozwiązywaniu "problemu" :)

    3
  • #13 20 Lip 2015 22:34
    -Tomi-
    Poziom 13  

    Dzięki wszystkim za pomoc. Nie odpisywałem bo po za przyjemnościami istnieje jeszcze praca, która niestety pochłania większość mojego czasu. Oczywiści błąd leżał po mojej stronie i to przez te apostrofy, nie wiem jakim cudem usunąłem tylko jeden:) ale czasami tak bywa jak człowiek jest zakręcony. Jeszcze raz dziękuję za pomoc i zaangażowanie.

    1