ďťż

82732_1

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     
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • teen-mushing.xlx.pl
  • Wątki
    Powered by wordpress | Theme: simpletex | © Lemur zaprasza