Czy istnieje jakiś sposób na to aby zaktualizować te dane: wyciąć spacje z
końca - wiem, że VBA obsługuje funkcję RTrim i można by ją jakoś tu
wykorzystać (??). Czy dałoby się jednak to zrobić z poziomu SQL - jakąś
skomplikowaną UPDATE ??
Problem polega na tym, że teksty te mają różną długość, gdyby była ona stała
np. 5 znaków to działałoby:
UPDATE Dane SET Imię = LEFT(imię, 5)
Pozdrawiam
Radosław Brunke
Radosław Brunke
Sprawdzony sposób to załączyć arkusz jako tabelę...
Pomniędzy źródłową (excel) a docelową (access) tabelą aktualizować
kwerendą... W tej kwerendzie działają wszystkie funkcje.
W przeciwnym przypadku musisz zainteresować się pozycją helpa: "Importowanie
lub łączenie tabel baz danych SQL lub danych z innych źródeł ODBC"
Ogólnie temat jest opisany w "Importowanie lub łączenie danych oraz
importowanie obiektów bazy danych"
--
Sławek SWP - Przy odpowiedzi na priv usuń 2 nadwyżki
Ekspert to człowiek, który przestał myśleć - on wie :-)
Dobry pomysł i tak pewnie będę robił w przyszłości. Sprawdziłem też, że w
przypadku importowania danych do nowej tabeli Access nie dodaje żadnych
spacji więc wystarczyłoby zaimportować dane do nowej tabeli i zaktualizować
tę właściwą.
> W przeciwnym przypadku musisz zainteresować się pozycją helpa:
> "Importowanie lub łączenie tabel baz danych SQL lub danych z innych
> źródeł ODBC" Ogólnie temat jest opisany w "Importowanie lub łączenie
> danych oraz importowanie obiektów bazy danych"
Patrzałem sobie na tego helpa i opisuje tylko problemy natury technicznej
związnych z importem. Zaraz sobie przeczytam dokładniej ale wątpię czy tam
coś znajdę.
Mam dalej problem co zrobić z istniejącymi danymi, które są spójne i
powiązane relacjami. Póki co nie jest źle bo mogę sobie robić SELECT i
RTrim-ować wszystkie pola tekstowe, ale nie jest to rozwiązanie optymalne.
A tak co do aktualizacji próbowałem już kombinacji:
UPDATE Dane SET Imię = LEFT([imię],Len(rtrim([imię])));
i też nie działa... pytanie dlaczego ?
Pozdrawiam
Radosław Brunke
Można ustawić parametry importu (w pliku parametrycznym!)
> Mam dalej problem co zrobić z istniejącymi danymi, które są
> spójne i powiązane relacjami. Póki co nie jest źle bo mogę sobie
> robić SELECT i RTrim-ować wszystkie pola tekstowe, ale nie jest
> to rozwiązanie optymalne.
> A tak co do aktualizacji próbowałem już kombinacji:
> UPDATE Dane SET Imię = LEFT([imię],Len(rtrim([imię])));
> i też nie działa... pytanie dlaczego ?
Taka postać chyba będzie lepsza...
UPDATE Tabela1 SET [Tabela1].[imię] = RTrim([Tabela1]![imię]);
Podczas pisania funkcji w "konstruktorze wyrażeń" access podpowiada liczbę i
pożądaną postać argumentów!
Na czym poza tym polega "niedziałanie"?
Niedziałanie polega na tym, że:
1. przykładowa wartość pola Imię w tabeli Dane bazy:
'Oktawia '
2. Wykonuję kwerendę:
UPDATE Dane SET Dane.Imię = RTrim(Dane!Imię);
3. Wartość pola podanego w pkt. 1:
'Oktawia '
Zdaję sobie sprawę, że może temat dyskusji (Import danych z Excela) odbiega
dość mocno od bieżącego stanu problemu, ale nie wiem czy ma sens zakładać
nowy wątek?
Pozdrawiam
Radek Brunke
Jak chcesz to prześlij mi bazę access i przykładowe dane w excelu...
U mnie usuwanie spacji z końca tekstu działa...
Tylko popraw adres...
(...)
| Niedziałanie polega na tym, że:
| 1. przykładowa wartość pola Imię w tabeli Dane bazy:
| 'Oktawia '
| 2. Wykonuję kwerendę:
| UPDATE Dane SET Dane.Imię = RTrim(Dane!Imię);
| 3. Wartość pola podanego w pkt. 1:
| 'Oktawia '
a czy tam są rzeczywiście spacje ?
A może spacja nierozdzielająca ? (asc 160)
wykonaj taką kwerendę:
select
asc(right(imie,1))
from
...
--
KN
Znalazłem sposób na umożliwienie zadziałania edycji pola w zakresie
wycinania spacji...
Ani funkcją, ani "ręcznie" nie można zapisać w tabeli treści o innej
długości niż 40 znaków (ustawione w definicji pola).
Jeśli zmienisz w ustawieniach definicji pola "Kompresja UTF" z NIE na TAK,
zapamiętasz tabelę i zmienisz ponownie na poprzednią wartość, to zadziała
usuwanie spacji funkcją lub ręcznie.
Wygląda na to, że podczas importu danych coś się zapisało w definicji tabeli
i żeby to coś usunąć musisz wymusić zapisanie tych wartości, które są
wyświetlane w parametrach pola.
Jak napiszesz rekord z danymi ucznia w innym niż ten "niedobry" arkuszu
excela i go zaimportujesz to też jest ten efekt(?) U mnie nie...
Nie znam się aż tak na ukrytych właściwościach tabel, musisz pomolestować
Krzyśków ( http://www.access.vis.pl/ ) albo innych guru grupy.
Po wymuszeniu wpisania parametrów - zgodnych z tym co widać - dodawanie
rekordów za pomocą kwerendy dołączającej z załączonego arkusza excellowego
po prostu działa.
| Wygląda na to, że podczas importu danych coś się zapisało w definicji
| tabeli i żeby to coś usunąć musisz wymusić zapisanie tych wartości,
| które są wyświetlane w parametrach pola.
create table test1
(
id autoincrement constraint PrimeryKey Primary Key
, pole1 char(10)
, pole2 text(15)
)
insert into test1 (pole1, pole2) Values 'ala', 'ola'
insert into test1 (pole1, pole2) Values 'jasiu', 'zosia'
insert into test1 (pole1, pole2) Values 'genowefa', 'mariolka'
SELECT
id
, pole1
, pole2
, len(pole1) as d1
, len(pole2) as d2
, asc(right(pole1,1)) as ostatni
FROM test1
może to ten przypadek ?
Jak ktoś nie widzi, to zaznaczę: pole1 zdefiniowane zostało jako char, a
nie text !
(stała szerokość pola!)
--
KN
Niestety nawet nie wiem gdzie się zagląda żeby obejrzeć procedurę wykonywaną
po uruchomieniu |Plik > Pobierz dane zewnętrzne > Importuj > ...|
Mógłbyś podpowiedzieć(?) Tak dla zaspokojenia próżnej ciekawości :D
(...)
| Niestety nawet nie wiem gdzie się zagląda żeby obejrzeć procedurę
| wykonywaną po uruchomieniu |Plik > Pobierz dane zewnętrzne > Importuj >
| ...|
| Mógłbyś podpowiedzieć(?) Tak dla zaspokojenia próżnej ciekawości :D
Nie nie nie!
Ja też nie mam pojęcia jak to robi access i dlaczego ewent. zrobił to jako
"Create ... char ..."
Ja tylko mówię, że objaw jest podobny.
(Oczywiście można zajrzeć do "kreatorów", pobierając ich wersję mdb
zamiast skompilowanych mde, ale tylko dla a'97, i wątpię aby to wiele
rozjaśniło ...)
Jakkolwiek Tobie udało się ową "anomalię" przeklikać, a mnie po owym
"Create" ni ch*ja!
Ja tylko głośno myślę! Może ktoś zabrnie dzięki temu dalej i mnie oświeci
...
A może to tylko jakaś chwilowa (?) wada pliku xls ?
--
KN