Robert Lech

klezmer

Wypowiedzi

  • Robert Lech
    Wpis na grupie Ms Access w temacie Ograniczenie długości nazw tabel
    24.06.2015, 15:04

    Rozwiązałem.
    To jednak wadliwy sterownik MySql-Connect 5.1 ... był.
    Zainstalowałem 5.2 (nowszy się zbuntował, bo nie miał biblioteki ANSI - dlaczego? Czort wie) i wszystko działa OK ...

  • Robert Lech
    Wpis na grupie Ms Access w temacie Ograniczenie długości nazw tabel
    23.06.2015, 19:03

    Witam
    Mam bazę MySql na zewnętrznym serwerze. Na kompie - baza w Access'ie 2003. I teraz problem:
    W bazie na kompie mam kilka (wcześniej utworzonych na innym kompie) tabel połączonych z tabelami tej bazy MySql - wszystko działa ok, ALE:
    Jak próbuję stworzyć NOWE połączenie z tabelą w bazie MySql - Access wywala się, jeśli NAZWA tabeli w MySql jest dłuższa niż 16 znaków. Z tabelami o KRÓTSZYCH nazwach łączy się bez problemu.
    Dziwi mnie to tym bardziej, że WCZEŚNIEJ UTWORZONE połączenia z tabelami o nazwach dłuższych niż te 16 znaków działają bez problemu ...
    Zonk jest tylko przy tworzeniu NOWEGO połączenia : Plik->Pobierz dane zewnętrzne->Połącz tabele->wybór pliki typu->wybór Bazy danych ODBC->wskazuję bazę->wskazuję tabelę->klikam OK i ... zonk
    Dodam, że:
    1 - nie używam polskich znaków w nazwach obiektów (tabel, formularzy, zmiennych e.t.c)
    2 - Zrobiłem prosty test. Stworzyłem testową tabelę MySql o nazwie "testowa-A" na tym serwerze i sprawdzałem "łączliwość" z tą tabelą zmieniając nazwę kolejno "testowa-AA", "testowa-AAA" i.t.d. Wywaliło się, gdy nazwa przekroczyła 16 znaków ...
    Co za to odpowiada i jak to zmienić?

  • Robert Lech
    Wpis na grupie Ms Access w temacie Dziwny problem z łączeniem via ODBC
    1.03.2015, 13:54

    Mam na serwerze bazę MySql z kilkoma tabelami Tab1 ... Tabn
    Na komputerze mam bazę Access 2003, która wykorzystuje połączenie ODBC z tymi tabelami.
    I teraz coś, czego NIE ROZUMIEM:
    Jak na kompie A (na którym ta baza została "stworzona") i B (na którym korygowałem tą bazę .mdb) chcę
    dołączyć tabele z MySql (Plik->pobierz dane zewnętrzne->Połącz tabele ... i.t.d. wskażę tabele - bez problemu powstaje połączenie.
    ALE
    jak na kompie C (ten sam system - XP) i D (Win 7) chcę to samo zrobić - klapa.
    Mogę połączyć tylko 3 (zawsze te same) tabele. Przy próbie połączenia pozostałych system wywala Access'a - Sygnatura błędu:

    EventType : BEX P1 : MSACCESS.EXE P2 : 11.0.5614.0 P3 : 3f3c8e3c
    P4 : myodbc5.dll P5 : 5.1.11.0 P6 : 4f9b1ae8 P7 : 00004872
    P8 : c0000409 P9 : 00000000

    Jak skopiuję bazę .mdb z kompa A, czy B na te pozostałe kompy (z "wczytanymi" połączeniami do tabel MySql) - wszystko działa - można wpisywać, usuwać dane e.t.c.
    Jednak jakakolwiek próba "odświeżenia/aktualizacji" takiego połączenia przez utworzenie nowego łącza (Plik-> ... i.t.d.) do tych tabel powoduje wywalenie się wszystkiego na tych samych tabelach.

    Na każdym kompie robię to z uprawnień administratora (przynajmniej tak informuje system).
    Tabele są do siebie podobne = mają podobną strukturę, założony klucz podstawowy identyfikatora i.t.p.
    User komputera B ma takie same uprawnienia dostępu do bazy MySql jak userzy C i D.
    Dlaczego na A iB działa to bez problemu, a na C i D łączy zawsze TYLKO z tymi 3 tabelami?

    Gdzie przyczyna?
    Oczywiście mogę to "ominąć" transportując "gotowce" na te kompy, ale wolałbym wiedzieć kie licho się zalęgło ...

  • Robert Lech
    Wpis na grupie Ms Access w temacie Sprawdzenie połączenia tabel
    1.02.2015, 12:29

    Z tym sprawdzeniem "dostępności połączenia tabeli" to sobie poradziłem (też banalnie), ale nadal nie wiem CZEMU Bs.RefreshLink przestawia tabelę na "tylko do odczytu" akurat w tych tabelach, a w kilku innych (ten sam serwer, też MySql, też ODBC i nawet TA SAMA baza MySql tylko inne tabele) nie ...

  • Robert Lech
    Wpis na grupie Ms Access w temacie Sprawdzenie połączenia tabel
    31.01.2015, 21:13

    Mam na zewnętrznym serwerze tabelę "MyTabela", połączoną z tabelą w Accessie na moim komputerze.
    Jak z poziomu vba sprawdzić, czy w danej chwili połączenie istnieje?
    Zrobiłem najprościej:
    Dim Bs As Object

    Set Bs = CurrentDb.TableDefs
    On Error GoTo Byk
    Bs("MyTabela").RefreshLink
    ---
    ---
    Exit Function
    Byk:
    ---
    ---
    End Function

    Przy błędzie wykonuje alternatywne polecenia, ALE okazuje się, że Bs("MyTabela").RefreshLink przekształca na stałe tą tabelę "na moim kompie" w "tylko do odczytu" i za diabła nie wiem jak z poziomu vba przywrócić jej możliwość wpisywania.
    Jak w takim razie sprawdzić (bez wpisywania niczego do "zewnętrznej tabeli"), czy w danym momencie połączenie z nią istnieje, czy nie?
    Tabela na serwerze - MySql
    Połączenie - ODBC

  • Robert Lech
    Wpis na grupie Ms Access w temacie Uruchomienie procedury w drugiej baze danych
    11.01.2015, 19:28

    Wydaje mi się, że w tym przypadku to "przerost formy nad treścią byłby" Skoro już sobie z tym przekazem poradziłem ... A w tym przypadku musiałbym przepisać procedury, bo - na pierwszy rzut oka - MSSQL wymaga poleceń SQL, a ja część poleceń robię w DAO ... e.t.c.
    Wystarczy, że te bazy i tak posiłkują się bazą pośredniczącą MySql przez ODBC ... Jak na mnie to i tak "odkrywcze" było ... W końcu nie jestem informatykiem, tylko - jak w podpisie - klezmerem ...;) Opanowanie Access'a i vba zajęło mi circa 2 lata, fakt, że "samouctwa w wolnych chwilach", ale jednak ...
    Pozdrawiam
    Robert

  • Robert Lech
    Wpis na grupie Ms Access w temacie Uruchomienie procedury w drugiej baze danych
    10.01.2015, 22:28

    Baza Front end (Baza A) jest zbyt duża, żeby zrobić z niej .mde, a w kodzie musiałem umieścić pewne zabezpieczenie przed używaniem jej wbrew mojej woli. Założyłem, że "średnio sprytny" user może znaleźć to zabezpieczenie i usunąć bądź ominąć. Natomiast nie będzie mu się chciało analizować całego kodu modułów. Więc zrobiłem kilka odwołań do procedur w jednej z 2 baz "Back-end" (BazaB), która jest .mde (oczywiście tych, które nie wpływają w widoczny sposób na szybkość działania bazy = są wykonywane np. tylko raz przy otwarciu), a jedna z tych procedur powoduje destrukcję całej bazy i danych. Jednak konieczne było zlokalizowanie plików tych baz na kompie usera, a to mogłem zrobić tylko wykorzystując "używanie front-endu". I do tego potrzebowałem możliwość przekazania argumentów do procedury w BazieB ...
    Trochę to pokręcone może, ale powinno działać ...
    Oczywiście podgląd vba "zahasłowałem", ale "na każdą zbroję znajdzie się miecz", więc ...
    Zdaję sobie oczywiście sprawę z tego, że jak się za to weźmie haker, to i tak się dopcha, ale zakładam, że hakerom nie będzie się chciało grzebać w tak mało ważnej bazie ....;)

  • Robert Lech
    Wpis na grupie Ms Access w temacie Uruchomienie procedury w drugiej baze danych
    9.01.2015, 23:26

    Tak podejrzewałem ...
    Poradziłem sobie "przez Władywostok", czyli stworzyłem w bazie B tabelkę, do której baza A najpierw wysyła argumenty, a potem przez DoCmd.RunMacro("MyMacro"), które ma zapisane "uruchom kod" - potrzebną mi funkcję, a ona wczytuje argumenty z tabeli, do której je wysłano. Trochę na okrągło, ale działa.
    Czyli trochę tak, jak w Twoim przykładzie ..., tylko nie chodziło mi o updatowanie tabeli ...

  • Robert Lech
    Wpis na grupie Ms Access w temacie Uruchomienie procedury w drugiej baze danych
    8.01.2015, 23:36

    Mam 2 bazy danych: BazaA i BazaB. BazaB jest głównie bazą danych, BazaA - "front-end" - głównie formularze i procedury.
    Czy, a jeśli tak, to jak uruchomić funkcję/procedure będącą w BazieB z poziomu np. formularza/procedury w BazieA?
    DoCmd.RunMacro odpada, bo potrzebuję przekazać argument z poziomu BazyA do procedury napisanej w BazieB.

    Jasne, że można by przepisać tą procedurę do BazyA, ale tego właśnie chcę uniknąć ...
    Jakaś podpowiedź?

  • Robert Lech
    Wpis na grupie Ms Access w temacie Formatowanie tekstu w wysyłanym mailu
    8.01.2015, 12:59

    Znalazłem przyczynę, może się komuś przyda ...
    FreeMail wysyła teraz bez błędów "tworzenia nowej linii" w trybie text/plain, ALE:
    ciąg znaków przed poleceniem tworzenia nowej linii NIE MOŻE kończyć się znakiem "," (przecinek). Nie wiem czemu, ale postawienie tego znaku na końcu linii (PRZED Chr(13) & Chr(10)) powoduje ignorowanie tych znaków specjalnych MIMO prawidłowego użycia znaku " zamykającego ciąg znaków String ...

  • Robert Lech
    Wpis na grupie Ms Access w temacie Formatowanie tekstu w wysyłanym mailu
    6.01.2015, 20:57

    Ciągle nie mogę zmusić FreeMaila, by wysłał treść z zachowaniem przejścia do nowej linijki
    Chr(13) & Chr(10).
    Drań przy wysyłaniu zastępuje KAŻDY zestaw znaków sterujących z zakresu 9 do 13 zwykłą spacją Chr(32).
    .strTransferEncoding = "8bit"
    .strCharset = "windows-1250"
    .strContentType = "Text/plain"
    Przecież z TEGO wynika, że ten zestaw znaków powinien być normalnie "używalny", a k.... nie jest, albo - czort wie czemu - FreeMail jest jakoś wewnętrznie zazbrojony przeciw akurat tym znakom.
    Miał ktoś z czymś takim do czynienia?
    Próbowałem opcjonalnie z quoted-printable zamiast 8bit, oraz z UTF-8 i iso-88...-2 zamiast tego win 1250 i guzik. Albo nie wysyła tekstu w "widzialnej" formie, albo nadal ignoruje dokładnie TE 5 znaków.. Da się to jakoś obejść/zrobić?Ten post został edytowany przez Autora dnia 07.01.15 o godzinie 01:18

  • Robert Lech
    Wpis na grupie Ms Access w temacie Formatowanie tekstu w wysyłanym mailu
    6.01.2015, 20:32

    Dzięki za podpowiedź.
    Niestety "</br>" nie działa ... W odbiorze pokazuje właśnie </br>, he, he ...
    Z ustawień FreeMaila:
    strBody As String 'Tekst wiadomości
    strContentType As String 'text/plain (domyślnie), text/html
    strCharset As String 'Strona kodowa wiadomości
    'windows-1251 (domyślnie)
    'koi8-r itd.
    strTransferEncoding As String 'Kodowanie wiadomości
    '8bit (domyślnie)
    'base64, quoted-printable
    Znalazłem Tu jakiś opis, ale wychodzi mi, że Chr(13) (CARRIAGE RETURN) będzie nadal Chr(13). Analogicznie Chr(10) ...
    Jeśli dobrze interpretuję ustawienia FreeMaila, to nie zmieniłem kodowania. Może trzeba by je zmienić, tylko JAK?
    Albo gdzieś znaleźć odpowiedniki znaków Chr(13) i Chr(10) dla windows-1251, tylko GDZIE?
    Pozdrawiam
    Robert

  • Robert Lech
    Wpis na grupie Ms Access w temacie DLookUp - wyszukiwanie danych z innego rekordu (kryteria)
    5.01.2015, 14:35

    Może to tylko kwestia błędnego sformułowania kryterium w DLookUp - brak ""?
    IIf([klient]=PRAWDA; [Imię]; DLookUp("[Imię]"; "[Lista]"; "[numer klienta glownego]=" & Formularze![Lista]![numer klienta glownego]))
    Jeśli wartość [numer klienta glownego] jest liczbą, doradzam - na wszelki wypadek - użyć CLng(Formularze![Lista]![numer klienta glownego]). Jeśli jest string - nie zapomnij o apostrofie ', czyli

    DLookUp("[Imię]"; "[Lista]"; "[numer klienta glownego]= '" & CStr(Formularze![Lista]![numer klienta glownego]) & "'")

  • Robert Lech
    Wpis na grupie Ms Access w temacie Formatowanie tekstu w wysyłanym mailu
    5.01.2015, 13:59

    Mam zagwozdkę. Wysyłam maila z Access'a via FreeMail. Chcę, by tekst wyświetlany przez odbiorcę był w kilku linijkach, więc w kodzie daję "wymuszenie przejścia do nowego wiersza" (Chr(13) & Chr(10)).
    Np.
    Tekst = Tekst1 & (Chr(13) & Chr(10) & Tekst2
    Sęk w tym, że - gdy korzystam z FreeMail - takie polecenie przejścia do nowej linijki jest ignorowane i tekst u odbiorcy jest w jednym ciągu. Gdy korzystałem z MSOutlook - format tekstu był zachowany.
    Jak wymusić takie przejście do nowej linii dla FreeMail'a?

  • Robert Lech
    Wpis na grupie Ms Access w temacie Zmienna jako adres biblioteki w Declare Function
    27.06.2013, 01:49

    Czy można (a jeśli tak, to jak) "zautomatyzować" znajdowanie adresu biblioteki .DLL?

    Mam funkcję:
    Option Compare Database
    Option Explicit

    Declare Function NazwaFunkcji Lib "biblioteka.DLL" .....

    Oczywiście, domyślnie program szuka tej biblioteki w system32, ale chcę, użył biblioteki umieszczonej w dowolnym miejscu (D:\...\...\biblioteka.DLL).
    Potrafię napisać sobie procedurę wyszukującą ten plik, ale nie wiem JAK zrobić, by wynik takiej procedury - zmienna PathDoDLL - był odczytywany przez tą funkcję.

    Innymi słowy chcę zastąpić
    Declare Function NazwaFunkcji Lib "biblioteka.DLL" .....
    przez
    Declare Function NazwaFunkcji Lib PathDoDLL .....
    gdzie zmienna PathDoDLL będzie AKTUALNYM adresem tej biblioteki,
    tylko, że tak prosto to się nie da.
    Jakaś podpowiedź?

  • Robert Lech
    Wpis na grupie Ms Access w temacie Jak odświerzyć dane w podformularzu?
    27.06.2013, 00:21

    Może tak?
    Dim MF As Control

    Set MF = Me("Nazwa_Pola_w_którym_jest_podformularz")
    MF.Form.RecordSource = "Nazwa_kwerendy/tabeli_źródłowej_dla_podformularza"

    Umieszczasz to PO procedurze wpisującej nowe dane do podformularza.

Dołącz do GoldenLine

Oferty pracy

Sprawdź aktualne oferty pracy

Aplikuj w łatwy sposób

Aplikuj jednym kliknięciem

Wyślij zaproszenie do