ďťż
Lemur zaprasza
Strona: [ > ] z 1 Autor Temat: Nie zawsze działająca funkcja Replace() anonim Typ: Nie zarejestrowany Nie zawsze działająca funkcja Replace() Witam, Pisząc aplikację w Accessie potrzebowałem dokonać auto korekty podczas wprowadzania danych do pola tekstowego umieszczonego na formatce. W obsłudze zdarzenia tego pola tekstowego edSymbol_AfterUpdate() użyłem funkcji standardowej Replace() (dokładnie chodziło o zamianę wszystkich znaków "," na "." ). Więc po wprowadzeniu danych do pola i przy wyjściu z niego następuje wspomniana autokorekta. Jednak nie zawsze to działa. Kiedy aplikacja trochę pochodzi, nie wiedzieć kiedy i czemu, przestaje to działać. Objawia się to tym że Access wywala błąd że nie może znaleźć funkcji Replace()!!!! Czym to może być spowodowane? Czy ktoś się z czymś taki spotkał? Jak wogule namierzyć powód tego błędu i jak go usunąć? Może jawne zadeklarowanie tej funkcji w kodzie by coś pomogło? (tylko zgaduję)...... Bardzo prosze o spostrzeżenia i opinie. Pozdrawiam Jarek D. 27-08-2004 12:08 losmac "profesorek" Typ: neutral Postów: 758 Zarejestrowany: May 2003 Jarek, a czemu zamieniasz przecinki na kropki? Może jest inne, lepsze rozwiązanie niż funkcja Replace. Może - nie będziesz potrzebował żadnego kodu.... _____________________________________________ POSTULATY STARUSZKA: 1) Ludzie, dbajcie o polszczyznę!!! 2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!! Powodzenia Maciej Łoś 27-08-2004 23:24 marolek Typ: neutral Postów: 17 Zarejestrowany: Apr 2004 Nie wiem dlaczego Jarek chce zamienić przecinki na kropki, ale wiem dlaczego ja to robie :-). Otóż w Excelu generuje pewne dane i eksportuje je później do pliku tekstowego, aby wykorzystać je później w innym programie. W tym drugim programie ma się wykonać makro które będzie wczytywało dane z wcześniej wygenerowanego przez Excela pliku tekstowego. Niestety program ten jako separatora liczb dziesiętnych używa tylko kropek. Więc także jestem zainteresowany rozwiązaniem problemu jaki ma Jarek D. Póki co robie to tak, że zmieniam w systemie operacyjnym separatora liczb dziesiętnych z przecinka na kropkę. Pozdrawiam _____________________________________________ Pozdrawiam marolek 28-08-2004 11:13 3456782 losmac "profesorek" Typ: neutral Postów: 758 Zarejestrowany: May 2003 Marolek, w Twoim wypadku, wystarczy, że zmienisz sposób zapisu do pliku tekstowego. Oto fragment z pliku pomocy: ... Przy użyciu instrukcji Write # do zapisu danych do pliku zastosowanie mają następujące założenia, które powodują, że dane mogą być zawsze odczytane i poprawnie zinterpretowane przez instrukcję Input #, niezależnie od ustawień regionalnych: -Dane numeryczne zapisywane są zawsze z wykorzystaniem kropki jako separatora dziesiętnego. ... Przykład: Sub ZapiszDaneDoPliku() Dim sFile As String Dim numFile As Long sFile = ThisWorkbook.Path & "\dane.txt" numFile = FreeFile Open sFile For Output As #numFile Write #numFile, CDbl("123,45" Close #numFile End Sub [Post edytowany dnia 28-08-2004 12:35 przez losmac] _____________________________________________ POSTULATY STARUSZKA: 1) Ludzie, dbajcie o polszczyznę!!! 2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!! Powodzenia Maciej Łoś 28-08-2004 12:29 marolek Typ: neutral Postów: 17 Zarejestrowany: Apr 2004 Dzięki losmac !! Rzeczywiście, działa w ten sposób o jaki mi chodziło. Mogę się dowiedzieć w jakim pliku pomocy znalazłeś tę instrukcję? _____________________________________________ Pozdrawiam marolek 28-08-2004 16:21 3456782 marolek Typ: neutral Postów: 17 Zarejestrowany: Apr 2004 No niestety, zbyt się pośpieszyłem. Jednak nie działa tak jak bym chciał, bo nie wytłumaczyłem dokładnie o co mi chodzi. W eksportowanych do pliku danych znajdują się także ciągi nienumeryczne (string), a dodatkowo liczby są zapisywane w formatach, tj. przykładowo zamiast 0,23 powinno być 000.23 - funkcja Format(0,23, "000.00". W tym wypadku podana przez Ciebie metoda nie działa. [Post edytowany dnia 29-08-2004 09:11 przez marolek] _____________________________________________ Pozdrawiam marolek 28-08-2004 16:53 3456782 karolinavb Typ: neutral Postów: 467 Zarejestrowany: Jan 2003 Na stronie są uwagi dotyczące działania funkcji Replace w Accessie, w szczególności nie można pozostawić ostatniego argumentu tej funkcji na wartości defaultowej ( nie powinien mieć też wartości vbDatabaseCompare ) _____________________________________________ Karolina 30-08-2004 00:35 bogdan Typ: neutral Postów: 46 Zarejestrowany: Nov 2003 Miałem podobny problem (zamiana przecinków na kropki). Proponuję skorzystać z własnej procedurki np: Function txtZamieńZnak(ByVal txtTekst As String, ByVal txtZamień As String, _ ByVal txtZamieńNa As String) As String Dim L As Integer, I As Integer L = Len(txtTekst) Do While I < L I = I + 1 If Mid$(txtTekst, I, 1) = txtZamień Then Mid$(txtTekst, I, 1) = txtZamieńNa Loop txtZamieńZnak = txtTekst End Function Jeśli funkcja ma obsługiwać również inne typy danych (liczby) należy ją trochę rozbudować. _____________________________________________ Bogdan 30-08-2004 14:33 Wszystkich odpowiedzi: 7 :: Maxymalnie na stronę: 20 Strona: [ > ] z 1 |