Strona: [  << <   1   > >>  ]  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
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
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
Pokaż profil marolek  Wyślij email do marolek        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
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
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
Pokaż profil marolek  Wyślij email do marolek        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
Pokaż profil marolek  Wyślij email do marolek        3456782
karolinavb




Typ: neutral
Postów: 468
Zarejestrowany: Jan 2003

Na stronie http://www.trigeminal.com/usenet/usenet001.asp?1033 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
Pokaż profil karolinavb  Wyślij email do karolinavb   
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
Pokaż profil bogdan  Wyślij email do bogdan   
Wszystkich odpowiedzi: 7 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1