Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: funkcja: Znajdź i zamień
anonim




Typ: Nie zarejestrowany
funkcja: Znajdź i zamień

Witam wszystkich
Dla Was to pewno mały problem, ale dla mnie nie do przeskoczenia.
Mam tabelę powiedzmy "Tabela1", z jednym polem "Import", który zawiera w każdym rekordzie w ciągu znaków znak średnika (. Chciałbym go (średnika) zamienić na taki znak: |  Czy mógłby ktoś mi podać kod co by zamieniał ten średnik na tą kreseczkę?
Bardzo proszę o pomoc
Pozdrowienia,
Rysio

05-10-2004 16:57
  
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003
znajdź ";" zamień na "|"

Nie możesz tego zrobić kwerendą, bo znak "|" nie jest akceptowany w kodzie SQL. Zatem, skorzystaj z poniższego rozwiązania


Sub Zamien()
Dim rst As Recordset
Dim strtmp As String
Dim poz As Long

Set rst = CurrentDb.OpenRecordset("Tabela1"

Do While Not rst.EOF
    strtmp = Nz(rst.Fields("Import", ""
    'pobierz pozycję pierwszego średnika
    poz = InStr(poz + 1, strtmp, ";"
    Do While poz > 0
        'zamień
        Mid(strtmp, poz, 1) = "|"
        'pobierz pozycję kolejnego średnika
        poz = InStr(poz + 1, strtmp, ";"
    Loop
    rst.Edit
    rst.Fields("Import" = strtmp
    rst.Update
    rst.MoveNext
Loop

rst.Close

Set rst = Nothing

End Sub


[Post edytowany dnia 05-10-2004 20:05 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ś

05-10-2004 20:03
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
anonim




Typ: Nie zarejestrowany
dalsze pytania

rst.Edit
    rst.Fields("Import" = strtmp
    rst.Update
    rst.MoveNext

Bardzo dziękuję za odpowiedź. Mam jednak trzy problemy:
1. Podczas uruchomienia kodu wyrzuca mi bład "Compile error: Method or data member not found". Pod rst z zakresu Edit mam tylko rst.EditMode. Czy mogę zamienić rst.Edit na rst.EditMode?
2. Nawet jak zamienię rst.Edit na rst.EditMode to wtedy wyrzuca mi błąd "Compile error: Invalid use of property" zaznaczając rst.EditMode. Ta sama sytuacja jest w momencie, gdy wyhaszuję rst.EditMode, tylko wtedy zatrzymuje się na rst.Fields z tym samym komunikatem.
3. Rozumiem, że wszędzie tam gdzie jest tem facecik z przymrużonym oczkiem to jest średnik i nawias zamykający.  I dla np. komendy rst.Fields("Import" = strtmp chyba powinno być rst.Fields("Import" = strtmp, czyli bez średnika - w przeciwnym wypadku kod zwraca mi błąd zaznaczając średnik.
Dodam jeszcze, że wszystko jest uruchamiane pod Accessem.
Bardzo proszę o cierpliwość i dalszą pomoc
Pozdrowienia,
Rysio

06-10-2004 09:39
  
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003

Rysiu,

Sprawdź w Menu Narzędzia->Referencje, czy masz zaznaczone Microsoft DAO (wersja).  W zależności od Accessa może to być 2.5 do 4.0. Podany przykład opiera się na DAO.

Jeżeli to nie pomoże, przed rst dopisz DAO, jak poniżej:
DAO.rst.Edit


("Import" = strtmp
czytaj:
nawias otwierający "Import" nawias zamykający

Średników w VBA używa się bardzo rzadko! Wszystkie buźki zamień na nawias zamykający.

[Post edytowany dnia 06-10-2004 19:43 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ś

06-10-2004 19:42
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
anonim




Typ: Nie zarejestrowany

Maciej,

Jestem Ci wdzięczny za czas mi poświęcony. Niestety jednak nie działa mi Twoje rozwiązanie. Czy moglibyśmy się tak umówić, że ja Ci bym przysłał przykładową bazę ze skonfigurowanymi rzeczami, które napisałeś, a Ty byś mi to uruchomił, tak by to chodziło?
Gratyfikacja do uzgodnienia
Nie ukrywam, że temat jest bardzo ważny dla mnie zawodowo.
Pozdrawiam serdecznie i czekam na oddzew
Mail do mnie:

21-10-2004 15:58
  
karolinavb




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

Ponieważ na wielu "forach" powtarza się ten problem z referencjami, może warto tutaj jeszcze raz przypomnieć, że w nowszych wersjach MS Access w projekcie VBA defaultową referencją jest  Microsoft ActiveX Data Objects 2.X Library (poprzednio było DAO) i dlatego jesli chcemy korzystać w obiektów DAO , a taki obiekt Recordset otrzymujemy jako wynik operacji  CurrentDb.OpenRecordset możemy zrobić, a właściwie musimy, jedną z 3-ch  następujących rzeczy

1. Dodać referencję w projekcie do Microsoft DAO 3.X Object Library, a linija kodu deklaracji powinna wówczas wygladać następująco:

Dim rst As DAO.Recordset

2. Dodać referencję w projekcie do Microsoft DAO 3.X Object Library oraz jednocześnie usunąć referencję do Microsoft ActiveX Data Objects 2.X Library a linija kodu deklaracji może wówczas wygladać następująco :

Dim rst As Recordset 

albo
Dim rst As DAO.Recordset

3. Zadbać o to aby refrecje w projekcie w okienku referencji były w kolejności jak :

najpierw
Microsoft DAO 3.X Object Library
a potem dopiero
Microsoft ActiveX Data Objects 2.X

a linijka kodu deklaracji może wówczas wygladać następująco :

Dim rst As Recordset

albo

Dim rst As DAO.Recordset


czyli w każdym przypadku bezpieczniej jest użyć jednak deklaracji

Dim rst As DAO.Recordset

kod wówczas całej podanej przez Maćka funkcji pracuje poprawnie co sprawdziłam i przytaczam tu bez "buziek" na wszelki wypadek jeszcze raz. Sorry za marudzenie...., ale już o tym na forum pisałam


Dim rst As DAO.Recordset
Dim strtmp As String
Dim poz As Long

Set rst = CurrentDb.OpenRecordset("Tabela1" )
Do While Not rst.EOF
    strtmp = Nz(rst.Fields("Import" ), "" )
    poz = InStr(poz + 1, strtmp, ";" )
    Do While poz > 0
        Mid(strtmp, poz, 1) = "|"
        poz = InStr(poz + 1, strtmp, ";" )
    Loop
    rst.Edit
    rst.Fields("Import" ) = strtmp
    rst.Update
    rst.MoveNext
Loop
rst.Close
Set rst = Nothing


Pozdrowienia Karo

[Post edytowany dnia 22-10-2004 18:58 przez karolinavb]


_____________________________________________
Karolina

22-10-2004 18:53
Pokaż profil karolinavb  Wyślij email do karolinavb   
anonim




Typ: Nie zarejestrowany

Witam serdecznie,
Bardzo wszystkim dziękuję, w szczególności Maćkowi, który bezinteresownie przyszedł mi z pomocą. Problem mam rozwiązany a cały projekt oddaję w poniedziałek dyrektorowi
Powiem tylko, że tą bazą rozwiązałem problem, który miał niejeden bank i niejedna instytucja nadzorcza z sektora bankowości
Pozdrawiam Was serdecznie
Rysio

23-10-2004 20:50
  
anonim




Typ: Nie zarejestrowany

No to chyba nie powinieniem korzystać z banków skoro tacy fachowcy tam pracują

23-10-2004 21:03
  
anonim




Typ: Nie zarejestrowany


No to chyba nie powinieniem korzystać z banków skoro tacy fachowcy tam pracują


Tak się składa, że na codzień w pracy nie jestem zbyt mocno związany z informatyką, więc te umiejętności w zupełności mi wystarczają.
Pozdrowienia
Rysio

12-11-2004 10:54
  
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003

Anonimowi (nie Tobie Rysiu) serdecznie dziękujemy!

Wszyscy jesteśmy tutaj po to, by sobie nawzajem pomagać.

Anonim - masz to szczęście, że Rysiu nie stracił zapału do pracy...

Rysiu - mam nadzieję, że Dyrektor będzie zadowolony.


_____________________________________________
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ś

12-11-2004 21:22
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
pawjan69




Typ: neutral
Postów: 4
Zarejestrowany: Dec 2004

a nie prościej jezt tak?

    Range("jakis obszar".Select

    Selection.Replace What:=";", Replacement:="|", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=True


_____________________________________________
POZDRAWIAM 
PawJan

02-01-2005 19:57
Pokaż profil pawjan69  Wyślij email do pawjan69   
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003

Pawjan69

My tu rozmawialiśmy na temat zapytań SQL w MS Access, a nie o MS Excel.

Czytaj dokładnie treść postów...


_____________________________________________
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ś

02-01-2005 20:29
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
Wszystkich odpowiedzi: 11 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1